Vai al contenuto
Calcolo Numerico

Zeri di funzioni: bisezione, Newton, secanti e punto fisso

Metodo di bisezione, metodo di Newton con dimostrazione della convergenza quadratica, secanti, iterazioni di punto fisso, Newton per i sistemi e SPICE.

Trovare dove una funzione si annulla è uno dei problemi più frequenti: il punto di lavoro di un diodo in un circuito (dove l’equazione esponenziale del diodo incontra la retta di carico), la frequenza a cui un filtro attenua di 3 dB, l’angolo di lancio per colpire un bersaglio. Per quasi tutte le equazioni non lineari non esiste una formula, e si procede per iterazioni: si parte da una stima e la si migliora finché è abbastanza precisa.

Il metodo di bisezione

Se f è continua su [a, b] e f(a) e f(b) hanno segni opposti, per il teorema degli zeri di Analisi 1 c’è almeno una radice. La bisezione dimezza l’intervallo a ogni passo:

  1. si calcola il punto medio c = (a + b)/2;
  2. se f(a) e f(c) hanno segni opposti la radice è in [a, c], altrimenti in [c, b];
  3. si ripete finché l’intervallo è più piccolo della tolleranza.

Dopo n passi l’intervallo è largo (b - a)/2^n. Per passare da un intervallo di 1 a una tolleranza di 10^{-6} servono 20 passi (2^{20} \approx 10^6). Il metodo è lento ma converge sempre, e la stima dell’errore è garantita. Si guadagna una cifra decimale ogni 3,3 passi circa.

Il metodo di Newton

L’idea è sostituire la funzione con la sua retta tangente e prendere come nuova stima il punto in cui la tangente taglia l’asse:

    \[ x_{k+1} = x_k - \frac{f(x_k)}{f'(x_k)} \]

Le prime iterazioni del metodo di Newton con le tangenti che si avvicinano alla radice
Partendo da x_0, la tangente al grafico in x_0 taglia l’asse in x_1; la tangente in x_1 dà x_2, e così via. Le stime si avvicinano molto rapidamente alla radice α.

Esempio: la radice quadrata. Con f(x) = x^2 - a la formula diventa x_{k+1} = \frac12\left(x_k + \frac{a}{x_k}\right), il metodo babilonese. Per \sqrt2 partendo da x_0 = 3 (come nella figura): 1,8333; 1,4621; 1,41500; 1,4142138; 1,41421356237311. Le cifre decimali corrette diventano 0, 1, 3, 6, 13: circa raddoppiano a ogni passo.

Dimostrazione della convergenza quadratica

Sia \alpha la radice ed e_k = x_k - \alpha l’errore. Sviluppando f con Taylor attorno a x_k, calcolata in \alpha:

    \[ 0 = f(\alpha) = f(x_k) - f'(x_k)\,e_k + \tfrac12 f''(\xi)\,e_k^2 \]

Dividendo per f'(x_k) e usando la definizione dell’iterazione, x_k - \frac{f(x_k)}{f'(x_k)} - \alpha = e_{k+1}:

    \[ e_{k+1} = \frac{f''(\xi)}{2f'(x_k)}\,e_k^2 \]

L’errore nuovo è proporzionale al quadrato di quello vecchio: se e_k = 10^{-4}, e_{k+1} è dell’ordine di 10^{-8}. È la convergenza quadratica, molto più rapida della bisezione, che è lineare.

I limiti di Newton

  • Serve la derivata, che non sempre è disponibile.
  • La convergenza è garantita solo se si parte abbastanza vicino alla radice. Lontano, le tangenti possono mandare la stima ovunque, o farla oscillare: con f(x) = \arctan x e x_0 = 2 le stime divergono.
  • Se f'(\alpha) = 0 (radice doppia) la convergenza diventa solo lineare.

Nella pratica si combinano i due metodi: si usa la bisezione finché l’intervallo è piccolo, poi Newton per finire in pochi passi. È ciò che fanno le funzioni come fzero di MATLAB o brentq di SciPy.

Il metodo delle secanti

Quando la derivata non è disponibile la si approssima con il rapporto incrementale tra le ultime due stime:

    \[ x_{k+1} = x_k - f(x_k)\,\frac{x_k - x_{k-1}}{f(x_k) - f(x_{k-1})} \]

La convergenza è superlineare, di ordine \frac{1 + \sqrt5}{2} \approx 1{,}618 (la sezione aurea), e ogni passo richiede una sola valutazione di f: spesso è più efficiente di Newton.

Le iterazioni di punto fisso

Ogni equazione f(x) = 0 si può riscrivere come x = g(x), e cercare un punto fisso con x_{k+1} = g(x_k). Converge se vicino alla soluzione |g'(x)| \lt 1: l’errore viene moltiplicato circa per |g'(\alpha)| a ogni passo.

Esempio. x = \cos x: partendo da qualsiasi valore e premendo ripetutamente il tasto coseno di una calcolatrice (in radianti) si arriva a 0,739085…, perché |g'| = |\sin x| \lt 1 vicino alla soluzione. Newton stesso è un’iterazione di punto fisso con g(x) = x - f/f', che ha g'(\alpha) = 0: per questo converge più in fretta.

Sistemi non lineari

Per un sistema \mathbf F(\mathbf x) = \mathbf 0 di n equazioni in n incognite, Newton si generalizza con la matrice jacobiana di Analisi 2:

    \[ J(\mathbf x_k)\,\boldsymbol\Delta_k = -\mathbf F(\mathbf x_k),\qquad \mathbf x_{k+1} = \mathbf x_k + \boldsymbol\Delta_k \]

a ogni passo si risolve un sistema lineare. È il cuore di SPICE: per un circuito con diodi e transistor, il simulatore linearizza i componenti attorno alla stima corrente e risolve il sistema lineare, ripetendo finché le tensioni non cambiano più. Quando una simulazione “non converge”, è Newton che non trova la soluzione partendo dalla stima iniziale.

Criteri di arresto

Si smette quando la differenza tra due stime successive è sotto una tolleranza, |x_{k+1} - x_k| \lt \text{tol}, oppure quando il residuo |f(x_k)| è abbastanza piccolo, e comunque dopo un numero massimo di iterazioni, per non restare bloccati se il metodo non converge. Il residuo piccolo da solo non basta: se la funzione è molto piatta vicino alla radice, |f| può essere minuscolo anche lontano dalla soluzione.

Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
0
Would love your thoughts, please comment.x
()
x