Ricerca degli zeri di una funzione di una variabile
Tra i tanti metodi, citiamo qui due tra i più semplici: il
metodo di
bisezione e quello di Newton.
Il metodo di bisezione
presuppone solo la continuità della funzione da azzerare.
L' algoritmo può essere descritto nel seguente
modo:
- determinare un intervallo ai cui estremi la funzione abbia
segni discordi (per essere sicuri che contenga almeno uno zero) e
siano xL e xU gli estremi, inferiore e
superiore;
- calcolare il punto medio del segmento [xL,xU]
:
xM
= (xL+xU)/2 e
valutare f(xM);
- Se f(xM)=0 allora xM è uno zero e
la ricerca termina.
- Altrimenti prendere come nuovo segmento quello ai cui estremi la
funzione ha
segni discordi (a seconda dei casi sarà necessario ridefinire xL=xM
oppure xU=xM);
- iterare i punti 2 - 4 fino a che l' incertezza sulla
localizzazione dello zero non sia scesa al di sotto di una soglia ε (
assoluta o relativa) prefissata: oppure fino a che | f(xM)|
<
ε',
oppure ancora fino a che non si superi un numero massimo di
iterazioni.
Il metodo di Newton presuppone
la derivabilità della funzione e può essere descritto dal
seguente
algoritmo:
- scegliere un punto di partenza x0
- iterare la seguente formula:
xn+1 = xn - f(xn)/f'(xn)
dove f' rappresenta la derivata prima di f,
finché la funzione non è zero entro una soglia prefissata
oppure quando la differenza (in valore assoluto) tra iterazioni
successive non diviene minore di
una soglia predeterminata. La scelta tra i diversi criteri di
stop dipende dalla
funzione e dalle limitazioni desiderate sull' errore dell' algoritmo.
N.B. La soglia di
tolleranza ( ε, ε', sulla differenza tra iterazioni
successive,etc.) dipende dalla precisione macchina εM
ma non coincide con questa (anzi, puo' differire anche per molti ordini
di grandezza). A seconda del problema potranno essere scelti criteri
basati su tolleranze relative o assolute e piu o meno strette a seconda
della funzione di cui si cercano gli zeri. E' sempre consigliabile un'
analisi critica delle caratteritiche del problema in esame, e una
sperimentazione diretta di valori via via piu' stringenti per la
tolleranza (dovrebbe sempre essere un parametro in input) piuttosto che
cercare soluzioni automatiche.