You are on page 1of 6

Appunti di Calcono Numerico lezione del 16 Maggio 2013

I. V. Piacentini, R. Ruccia

Appunti di Calcolo Numerico 16 Maggio 2013

Algoritmo di Horner e metodo di Newton-Raphson


` un metodo iterativo che permette Ricordiamo che il metodo di Newton-Raphson e di calcolare in modo approssimato uno zero di una funzione non lineare f (x) in un intervallo [a, b], a patto che: 1. f (x) sia continua in [a, b]; 2. f (a)f (b) < 0; 3. f (x) abbia ununica radice in [a, b]; 4. f (x) = 0; 5. lintervallo [a, b] deve essere sufcientemente piccolo. Questa condizione ` basato sullo sviluppo di deriva dal fatto che il metodo di Newton-Raphson e ` vicini a x0 . Taylor, che ha un errore tanto pi` u piccolo quanto pi` u si e Per calcolare una radice di f (x) con il metodo di Newton-Raphson si parte da un punto di innesco x0 e si generano approssimazioni successive date da una successione sn = {x1 = g (x0 ), x2 = g (x1 ), . . . , xn+1 = g (xn )},
f (x) ` la funzione di iterazione. Si dimostra che limn sn x dove g (x) = x f ( x) e t.c. f ( x) = 0. Osserviamo dunque che per poter calcolare una radice di un polinomio pN (x) con il metodo di Newton-Raphson abbiamo bisogno non solo dei valori che assume pN (x) in ogni approssimazione xi , ma anche della sua derivata prima in tali punti. Lalgoritmo di Horner consente di effettuare queste valutazioni in modo efciente. Esso si occupa di valutare in modo efciente un polinomio in un punto ssato. Supponiamo di avere un polinomio di grado N

pN (x) = x +
i=1

ai xN i = xN + a1 xN 1 + a2 xN 2 + . . . + aN 1 x + aN , (1)

e che si vogliano trovare le N radici di questo polinomio. Si conosce solamente un teorema che fornisce unapprossimazione grossolana su dove si trovano le radici di pN (x). Il teorema in questione (Regola di Cauchy) ci dice che tutte le radici di pN (x) sono contenute in un cerchio del piano complesso di centro 0 e raggio 1 + r C = {z C : |z | 1 + r}, dove r = max|ai |, per i = 1, 2, . . . , N .

Appunti di Calcolo Numerico 16 Maggio 2013

Nel caso in cui volessimo avere informazioni pi` u dettagliate sulle radici di un polinomio di grado N , possiamo usare tecniche del calcolo numerico. Una di queste consiste nellapplicare lalgoritmo di Horner con il metodo di NewtonRaphson. Osserviamo innanzitutto che per calcolare pN (x) nella forma scritta sopra sono ` N + 1, e 2N 2 moltinecessarie N addizioni in quanto il numero degli addendi e plicazioni. Infatti per calcolare aN sono necessarie 0 moltiplicazioni, per calcolare ` necessaria 1 moltiplicazione, per calcolare aN 2 x2 sono necessarie 2 aN 1 x e moltiplicazioni in quanto aN 2 x2 = aN 2 xx; sfruttando il calcolo di x2 abbiamo che per calcolare aN 3 x3 sono necessarie 2 moltiplicazioni, essendo aN 3 x3 = aN 3 xx2 , ragionando in modo analogo possiamo affermare che sono necessarie 2 moltiplicazioni per calcolare ogni termine aN i xi , per i = 2, 3, . . . , N 1. In` necessaria 1 moltiplicazione. Quindi in totale il ne per calcolare xN = xN 1 x e ` 2 + 2(N 2), ovnumero delle moltiplicazioni necessarie per calcolare pN (x) e vero 2N 2, come gi` a detto. Possiamo ridurre questa quantit` a usando la seguente riscrittura: aN + aN 1 x + aN 2 x2 + . . . + a2 xN 2 + a1 xN 1 + xN aN + x(aN 1 + aN 2 x + . . . + a2 xN 3 + a1 xN 2 + xN 1 ) aN + x(aN 1 + x(aN 2 + . . . + a2 xN 4 + a1 xN 3 + xN 2 )) aN + x(aN 1 + x(aN 2 + x(aN 3 + . . . + x(a1 + x) ))).

pN (x)

= = = =

Come si vede dallultimo passaggio, per calcolare pN (x) bastano N addizioni ed N 1 moltiplicazioni. ` il seguente: Lalgoritmo di Horner e P0 = 1 Pk = Pk1 x + ak , per k = 1, 2, . . . , N. dove Pk = pk (x). Esempio 1. Calcoliamo pN (x) per N = 3: p3 (x) = x3 + a1 x2 + a2 x + a3 = x(x2 + a1 x + a2 ) + a3 = a3 + x(a2 + x(a1 + x)).

Esempio 2. Calcoliamo P3 applicando lalgoritmo di Horner.

Appunti di Calcolo Numerico 16 Maggio 2013

P0 = 1 P1 = P0 x + a1 = x + a1 P2 = P1 x + a2 = (x + a1 )x + a2 P3 = P2 x + a3 = (x(a1 + x) + a2 )x + a3 . Abbiamo ritrovato la quantit` a calcolata nellEsempio 1. Per calcolare la derivata prima di pN (x) in un punto ssato introduciamo un polinomio quoziente di grado N 1: pN (x) pN (xi ) , x xi ` un punto generico. Tale polinomio lo possiamo scrivere come: dove xi e qN 1 (x) = qN 1 (x) = b0 xN 1 + b1 xN 2 + b2 xN 3 + . . . + bN 2 x + bN 1 , da cui possiamo ricavare pN (x) come pN (x) = (x xi )qN 1 (x) + pN (xi ) = (x xi )(b0 xN 1 + b1 xN 2 + b2 xN 3 + . . . + bN 2 x + bN 1 ) + pN (xi ) = b0 xN + xN 1 (b1 b0 xi ) + xN 2 (b2 b1 xi ) + . . . + x2 (bN 2 bN 3 xi ) + + x(bN 1 bN 2 xi ) + pN (xi ) bN 1 xi . ` dato dalla (1), otteniamo due polinomi della stessa forma Ricordando che pN (x) e e dello stesso grado, ed essendo il primo membro uguale al secondo membro i loro coefcienti sono uguali, quindi: b0 b1 xi = a1 b1 b2 b1 xi = a2 b2 bN 1 bN 2 xi = aN 1 bN 1 = = = = aN 1 + bN 2 xi . 1 a1 + xi a2 + b1 xi

Quindi in generale possiamo calcolare i coefcienti bi di qN 1 (x) con la seguente formula ricorsiva: b0 = 1 bk = bk1 xi + ak , per k = 1, 2, . . . , N 1. Notare la similitudine con lalgoritmo di Horner. Adesso osserviamo che se facciamo tendere x ad xi allora otteniamo qN 1 (xi ) = lim qN 1 (x) = lim
xxi x xi

pN (x) pN (xi ) = pN (xi ), x xi

Appunti di Calcolo Numerico 16 Maggio 2013

e dato che conosciamo i coefcienti bi possiamo calcolare pN (xi ) con lalgoritmo ` dato da di Horner, dove pN (xi ) e
N 1 2 3 pN (xi ) = qN 1 (xi ) = b0 xi + b1 xN + b2 xN + . . . + bN 2 xi + bN 1 . i i

Ricordiamo che pN (xi ) ci serve per poter applicare il metodo di Newton-Raphson. Notiamo che se scegliamo xi come una radice (o unapprossimazione di una ra` che il polinomio quoziente qN 1 (x) avr` dice) di pN (x), allora ci` o che otteniamo e a le stesse radici di pN (x), tranne la radice xi . Possiamo allora utilizzare il seguente algoritmo per trovare (in modo approssimato) gli zeri di un polinomio pN (x), as(0) sumendo di avere delle approssimazioni iniziali xi per le N radici del polinomio pN (x), da usare come punti di innesco per lalgoritmo di Newton-Raphson. 1. Trovare una radice x di pN (x) mediante Newton-Raphson, usando un punto (0) di innesco xi . 2. Costruire il polinomio quoziente qN 1 (x) nel seguente modo qN 1 (x) = pN (x) pN ( x) . xx

Tale polinomio ha le stesse radici di pN (x) tranne x . 3. Porre pN 1 (x) = qN 1 (x) e ripetere la procedura dal punto 1 utilizzando un nuovo punto di innesco. Osservare che il grado del polinomio di partenza ` sceso di uno. e Osserviamo che ad ogni iterazione il grado N del polinomio di partenza scende di 1. Lalgoritmo termina quando N = 2, ovvero quando otteniamo un polinomio di grado 2, le cui radici possono essere trovate facilmente. Esempio 3. Consideriamo un polinomio di grado 4, p4 (x), e supponiamo di aver applicato il metodo di Newton-Raphson e di aver trovato che unapprossimazione `x per una sua radice e = 8. Allora il polinomio quoziente che costruiamo sar` a q3 ( x ) = p4 (x) p4 (8) , x8

esso ha le stesse radici di p4 (x), tranne 8. Poniamo ora p3 (x) = q3 (x) e calcoliamo una sua radice (approssimata) applicando di nuovo il metodo di Newton-Raphson, utilizzando un nuovo punto di innesco. Troviamo unaltra radice del polinomio di partenza, sia essa x . Costruiamo il polinomio quoziente di p3 (x) come q2 ( x ) = p3 (x) p3 (x ) . xx

Poniamo ora p2 (x) = q2 (x). Tale polinomio ha grado due e le sue radici possono essere calcolate facilmente. 4

Appunti di Calcolo Numerico 16 Maggio 2013

Purtroppo le radici xi calcolare non sono esatte, ma determinate con una certa tolleranza; inoltre non possiamo ignorare gli errori di arrotondamento commessi nel calcolo dei coefcienti dei successivi polinomi ridotti qN 1 (x), qN 2 (x), . . . ,. Pertanto, esiste il rischio (reale) che questi errori allontanino sempre di pi` u gli zeri dei successivi polinomi ridotti da quelli del polinomio iniziale pN (x). Lanalisi della propagazione degli errori nei polinomi ridotti suggerisce di seguire, quando possibile, la strategia seguente: (i) determinare le radici in ordine crescente (in modulo): |x1 | |x2 | |x3 | . . . ; (ii) calcolare ogni radice con la massima precisione raggiungibile. In ogni caso, dopo aver calcolato le approssimazione delle radici xi con la tecnica dei successivi polinomi ridotti, conviene prendere i valori cos` trovati come approssimazione iniziali e procedere al lor rafnamento applicando il metodo scelto ` sufciente. al polinomio iniziale pN (x); di solito una sola iterazione del metodo e