Metodi numerici per la risoluzione di equazioni .
di Massimo Fantin 2003
La maggior parte delle equazioni non possono essere risolte con una successione finita di passaggi, ma è necessario utilizzare dei metodi numerici, iterativi che permettano di giungere alle soluzioni per successive approssimazioni. In questo studio ho scelto i più noti:
Ho realizzato un programma di simulazione per la rappresentazione grafica del procedimento iterativo per raggiungere le soluzioni con i diversi metodi.
Istruzioni per l'uso del programma di simulazione
Metodo di Newton
Per risolvere l'equazione f(x) = 0 si deve conoscere la derivata f '(x), Si prende un valore iniziale x0, si costruisce la retta tangente alla curva di equazione y = f(x) nel punto della curva di ascissa x0, la si interseca con l'asse x di equazione y = 0, ottenendo il punto (x1,0) , si ripete la stessa operazione partendo da x1 , si ottiene una approssimazione migliore x2 e così via , si ripete il procedimento fino a che la differenza tra due successive approssimazioni diventa minore di un valore eps prefissato.
Facendo i calcoli si ottiene, a partire da x0 come punto iniziale, il seguente metodo iterativo:
x n+1 = xn - f(xn) / f ' (xn)
E' una variante del metodo di Newton, segue la stessa logica con la sola differenza che la retta tangente è sostituita da una secante, questo metodo può essere applicato quando non sia nota la derivata della funzione. Si parte da due punti xa, xb, si traccia la retta per i punti A(xa,f(xa)), B(xb,f(xb)), la si interseca con l'asse x trovando (x0,0) , si sostituisce il punto A con B, il punto B con (x0,f(x0)) e si ripete l'iterazione fino a che la differenza tra una approssimazione e quella successiva non è minore di eps prefissato.
Facendo i calcoli si ottiene, a partire da A e B il seguente metodo interattivo:
x0 = xa - f(xa) * (f(xa)-f(xb)) / (xa-xb)
xb = xa
xa = x0
Si può osservare che quest'ultima formula è simile a quella di Newton con il rapporto incrementale al posto della derivata.
Il metodo della "regula falsi" consiste nel partire da due approssimazioni della soluzione cercata, xa, xb uno per eccesso e uno per difetto, in modo che risultino discordi in segno i valori della funzione f(xa) ed f(xb) , si calcola x0 come nel metodo delle secanti e infine lo si sostituisce con quel valore tra xa ed xb che è concorde in segno con x0.
x0 = xa - f(xa) * (f(xa)-f(xb)) / (xa-xb)
se f(x0) è concorde con f(xa) allora xa = x0, altrimenti xb = x0
Questo metodo non può essere applicato per trovare le soluzioni doppie in quanto non si ha il cambiamento di segno.
Il metodo di bisezione consiste nel partire da due approssimazioni della soluzione cercata, xa, xb uno per eccesso e uno per difetto in modo che risultino discordi f(xa) ed f(xb) come nel metodo precedente, si sceglie x0 semplicemente calcolando la media tra i due, poi si procede alla stessa sostituzione del metodo precedente.
x0 = (xa +xb)/2
se f(x0) è concorde con f(xa) allora xa = x0, altrimenti xb = x0
Questo metodo è il più semplice ma è piuttosto lento.
Il metodo del punto unito è diverso dai precedenti in quanto permette di trovare le soluzioni delle equazioni del tipo
x = f(x), consiste nell'applicare successivamente la funzione stessa a partire da un dato valore x0:
x n+1 = f( xn )
E' necessario però che la successione così costruita converga ad un determinato valore, è evidente che se tale successione converge, il limite di tale successione sarà una soluzione dell'equazione data. Si dimostra anche piuttosto facilmente che , se f è derivabile e |f'(x)|< m < 1 la successione converge, mentre se questa condizione non è soddisfatta non possiamo dire nulla sulla sua convergenza.
Il metodo del punto unito può essere utilizzato per risolvere le equazioni del tipo f(x) = 0 semplicemente trasformandola nella equazioni al punto unito del tipo x = F(x) con F(x) = k ( f (x) ) + x, dove k, potendo assumere qualsiasi valore non nullo, viene scelto in modo da rendere convergente la successione x n+1=F(xn) .
Istruzioni per l'uso del programma di simulazione
Il programma realizzato in java permette di introdurre la funzione f(x) che deve essere scritta mediante la stessa sintassi del programma funzioni che può essere consultato anche per le istruzioni relative all'uso dello zoom, del parametro k . Si può scegliere anche il valore di Eps usando i tasti in basso a destra. Si sceglie il metodo iterativo tra le opzioni in alto a sinistra,
Per risolvere l'equazione del tipo f(x) = 0 ,come detto nella parte teorica, si risolve l'equazione x = k(f(x)) + x scegliendo un opportuno valore di k in modo che la soluzione cercata rientri in una zona di convergenza cioè in pratica si trovi in una zona bianca, si posiziona il punto iniziale in tale zona e si osserva la convergenza.
ESEMPIO
Si voglia risolvere l'equazione x3- cos x = 0
Si scriva nella casella in alto x^3-cx senza lasciare spazi vuoti, che, nel nostro linguaggio significa x3- cos x
Si posiziona in uno dei metodi :