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:

  1. 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;
  2. calcolare il punto medio del segmento [xL,xU] : xM = (xL+xU)/2      e valutare f(xM);
  3. Se f(xM)=0 allora xM è uno zero e la ricerca termina.
  4. 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);
  5. 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:

  1. scegliere un punto di partenza x0
  2. 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.