Regola di Horner
Da Wikipedia, l'enciclopedia libera.
La regola di Horner, o, più correttamente, l'algoritmo di Horner permette di valutare un polinomio
PN(x) = xN + a1xN - 1 + ... + aN - 1x + aN
svolgendo N addizioni e N moltiplicazioni, anziché le N addizioni e (N(N+1))/2 moltiplicazioni richieste con il metodo di valutazione tradizionale. Esso è quindi particolarmente adatto qualora si ricerchino radici reali di equazioni polinomiali con metodi iterativi.
[modifica] Calcolo del valore di un polinomio e delle sue derivate prima e seconda
Il polinomio PN(x) può infatti essere scritto nella forma:
PN(x) = aN + x(aN - 1 + x(an - 2 + ... + x(a1 + x)...))
Pertanto, il valore di tale polinomio si può calcolare con la relazione ricorsiva:
pk = pk - 1x + ak
nella quale si sia posto p0 = 1 e k = 1,2,...,N.
Il metodo di Horner permette di calcolare con meno operazioni anche la derivata prima e la derivata seconda di pN(x).
A tal fine, si introduca il concetto di polinomio ridotto qN - 1(x):
con b0 = 1, bk = bk - 1xi + ak, k = 1,2,...,N - 1 e xi generico punto.
Sviluppando in serie di Taylor pN(x) nell'intorno del generico punto xi, si ricava, dopo alcuni passaggi algebrici:
qN - 1(xi) = p'N(xi) = dN - 1
nella quale d0 = 1, dk = dk - 1xi + bk e k = 1,2,...,N - 1.
Analogamente per la derivata seconda, riscrivendo il polinomio ridotto a partire da qN - 1, si ottiene:
p''N(xi) = 2eN - 2
con e0 = 1, ek = dk - 1xi + dk e k = 1,2,...,N - 2.
[modifica] Applicazione al calcolo delle radici reali di un polinomio
Note le approssimazioni delle radici reali di pN(x), è possibile, attraverso l'applicazione ricorsiva della definizione di polinomio ridotto, determinare il valore delle radici di pN(x) con precisione arbitraria. Per fare ciò:
- Trovare la radice x1 di pN(x) con un metodo iterativo per il calcolo degli zeri di una funzione, quali bisezione, tangenti, secanti o regula falsi, utilizzando le formule ricorsive appena ricavate per valutare il polinomio e le sue derivate.
- Riapplicare il metodo iterativo al polinomio ridotto qN - 1(x) con xi = x1 per trovare la seconda radice x2 di pN(x).
- Riapplicare il metodo iterativo al polinomio ridotto qN - 2(x) con xi = x2 per trovare x3.
- Procedere allo stesso modo finché non si sono trovate tutte le radici desiderate.
Si osservi che il metodo consente di ottenere un'approssimazione delle radici di pN(x) a causa degli errori di arrotondamento che si commettono nel calcolo. Per ridurre tali errori si suggerisce generalmente di determinare le radici considerando l'ordine crescente dei loro valori assoluti ed, eventualmente, di utilizzare le soluzioni ottenute come soluzioni di partenza per riapplicare il metodo iterativo (bisezione, tangenti, secanti o regula falsi) direttamente al polinomio pN(x).