Soluzione numerica di equazioni
Il metodo di Newton
Questo metodo in PhP - metodo della bisezione - metodo delle corde

caso 1 caso 2 caso 3 caso 4

Questo metodo permette di approssimare le soluzioni di un'equazione f(x) = 0 (o che è lo stesso di calcolare gli zeri della funzione y = f(x) in un intervallo [a, b] alla sola condizione di saper calcolare la funzione e la sua derivata in tutto l'intervallo.

Prima di tutto è necessario separare le soluzioni e cioè individuare gli intervalli nei quali cadono le singole soluzioni. In questo caso è necessario individuare un punto di innesco P0(x0;y0) che sia abbastanza vicino a una soluzione, nel senso che la concavità non cambi di segno nell'intervallo.

Nel disegno accanto la funzione y=f(x) attraversa l'asse delle x vicino ad x0. Del punto P0 dobbiamo essere in grado di calcolare il valore della funzione f(x0) e della derivata f'(x0)

Dal punto P0 si può ora tracciare la tangente alla curva; tale tangente incontrerà l'asse delle ascisse per un valore di x che è la prima approssimazione della soluzione cercata.

La tangente avrà per coefficiente angolare il valore della derivata in P0, f'(x0). Utilizzando l'equazione della retta generica (o fascio di rette) per P0: y-y0 = m(x-x0), sostituendo m con f'(x0) e imponendo y = 0 si ha:

−y0 = f'(x0)(x−x0)

A questo punto si risolve rispetto alla x e si ha con facili passaggi:

            y0
x = x0 − ————————
          f'(x0)

o anche ricordando che y0 = f(x0)

          f(x0)
x = x0 − ————————
          f'(x0)

Il procedimento si può iterare, calcolando il valore y = f(x), tracciando la tangente per questo nuovo punto ecc.ecc. In generale, chiamando xn l'ennesima approssimazione e xn+1 quella successiva si ha la classica formula di Newton:

            f(xn)
xn+1 = xn − ———————
            f'(xn)

Il procedimento è convergente, nel senso che fissato un margine di errore piccolo quanto si vuole, si troverà sempre una approssimazione per la quale l'errore è minore di tale margine.

Il metodo si traduce facilmente in un algoritmo in un qualsiasi linguaggio di programmazione; si veda p.es. l'algoritmo in PhP.


Esempi