La bisezione converge sempre, ma lentamente (un bit per passo). Per avere molte cifre in poche iterazioni si sfrutta la forma della funzione vicino alla radice: la sua derivata.
Ordine di convergenza
Sia xk→α e ek=xk−α.
Definizione (ordine di convergenza). La successione converge con ordinep≥1 e costante asintoticaC se
k→∞lim∣ek∣p∣ek+1∣=C,0<C<∞(con C<1 se p=1).
p=1: convergenza lineare (tasso C): l'errore si moltiplica per C a ogni passo (bisezione: C=21; punto fisso: C=∣g′(α)∣).
p=2: convergenza quadratica. Se ∣ek∣≈10−s allora ∣ek+1∣≈C10−2s: il numero di cifre corrette raddoppia a ogni iterazione.
1<p<2: convergenza superlineare.
Perché conta: da un errore di 10−1 per arrivare a 10−16 servono circa 16 iterazioni lineari con tasso 0,1, ma solo 4 iterazioni quadratiche (10−1→10−2→10−4→10−8→10−16).
Stima numerica dell'ordine. Da ∣ek+1∣≈C∣ek∣p e ∣ek∣≈C∣ek−1∣p, dividendo,
p≈ln(∣ek∣/∣ek−1∣)ln(∣ek+1∣/∣ek∣).
Se α non è noto si usano gli incrementi ∣xk+1−xk∣ al posto degli errori (per un metodo superlineare l'incremento ∣xk+1−xk∣≈∣ek∣).
Il metodo di Newton
Idea. In xk si sostituisce f con la sua retta tangente y=f(xk)+f′(xk)(x−xk) e si prende come nuova approssimazione lo zero della tangente:
0=f(xk)+f′(xk)(xk+1−xk)⟹xk+1=xk−f′(xk)f(xk)
È un'iterazione di punto fisso con g(x)=x−f′(x)f(x) (richiede f′(xk)=0).
Grafico interattivo: Newton per f(x) = x² − 2 da x₀ = 2: la tangente in x₀ taglia l'asse in x₁ = 1,5, quella in x₁ in x₂ = 1,4167
Teorema (convergenza locale quadratica). Sia f∈C2 in un intorno di α, con f(α)=0 e f′(α)=0 (radice semplice). Allora esiste δ>0 tale che per ogni x0 con ∣x0−α∣<δ il metodo di Newton converge ad α e
k→∞limek2ek+1=2f′(α)f′′(α).
L'ordine è 2 se f′′(α)=0 (se f′′(α)=0 l'ordine è maggiore).
Si vede anche da g(x)=x−f′f: g′=f′2ff′′ e g′(α)=0, quindi il tasso lineare è nullo (vedi la nota sul punto fisso) e la convergenza è più che lineare.
Esempio 1: radice di 2 (metodo di Erone)
f(x)=x2−2, f′=2x: xk+1=xk−2xkxk2−2=21(xk+xk2). Da x0=1: la costante attesa è 2f′f′′=2⋅222=221=0,35355.
k
xk
ek=xk−2
ek/ek−12
0
1
−4,14⋅10−1
1
23=1,5
+8,58⋅10−2
0,5000
2
1217=1,416667
+2,45⋅10−3
0,3333
3
408577=1,414215686
+2,12⋅10−6
0,3529
4
1,414213562375
+1,60⋅10−12
0,3535
(Ad esempio x1=21(1+2)=1,5 e x2=21(1,5+1,52)=21(1,5+1,3333)=1,41667.) Le cifre corrette passano da 0 a 1, 2, 5, 11: raddoppiano. Il rapporto ek/ek−12 tende a 0,3535. Stima dell'ordine con e1,e2,e3,e4: p≈ln(e3/e2)ln(e4/e3)=ln(8,66⋅10−4)ln(7,5⋅10−7)=−7,05−14,10=2,00.
Per esempio x1=1,5−5,75−0,125=1,5+0,0217391=1,5217391. Confronto: per x3−x−2 con precisione 10−10 servono 33 passi di bisezione, 11 di punto fisso con 3x+2 e 4 di Newton.
Criteri di arresto
Dato che ek+1≪ek, si ha ∣xk+1−xk∣≈∣ek∣: l'incremento è una buona stima dell'errore del passo precedente, e l'errore di xk+1 è molto più piccolo. Un criterio tipico è ∣xk+1−xk∣≤tolmax(1,∣xk+1∣) più un numero massimo di iterazioni.
Quando Newton fallisce o rallenta
f′(xk)=0 o molto piccola: la tangente è orizzontale e il passo è enorme o indefinito.
x0 lontano da α: la convergenza è solo locale. Per f(x)=x3−2x+2 da x0=0: f(0)=2, f′(0)=−2, x1=0+1=1; f(1)=1, f′(1)=1, x2=0. L'iterazione cicla0→1→0→… senza mai arrivare alla radice α≈−1,77. Per f(x)=arctanx (radice 0) da x0=1,5: x1=−1,694, x2=2,321, x3=−5,114, x4=32,3…diverge, mentre da x0=1,3 converge (−1,16;0,859;−0,374;0,034;−2,6⋅10−5). Rimedio pratico: partire da un'approssimazione ottenuta con qualche passo di bisezione.
Radici multiple: se f(α)=f′(α)=0 il teorema non vale.
Radici multiple
Se α ha molteplicità m≥2, cioè f(x)=(x−α)mh(x) con h(α)=0, Newton converge ma solo linearmente, con tasso mm−1.
Verifica per f(x)=(x−1)m:f′f=mx−1, quindi ek+1=ek−mek=mm−1ek.
Esempio.f(x)=(x−1)2(x+2) ha una radice doppia in 1. Da x0=2 Newton dà x1=2−f′(2)f(2)=2−94=1,5556 (f(2)=4, f′(2)=2⋅1⋅4+1=9), poi 1,2979,1,1554,1,0796,1,0403,1,0203,1,0102, con errori 0,556,0,298,0,155,0,080,0,040,0,020,0,010 e rapporto ek/ek−1→0,5=22−1.
Ordine. L'errore di interpolazione fornisce
ek+1≈2f′(α)f′′(α)ekek−1.
(Il prodotto ekek−1 è l'errore del polinomio di interpolazione in α: ω(α)=(α−xk)(α−xk−1).) Se ∣ek+1∣≈A∣ek∣p, allora ∣ek−1∣≈(∣ek∣/A)1/p e la relazione diventa A∣ek∣p≈C∣ek∣1+1/pA−1/p, quindi
p=1+p1⟺p2−p−1=0⟺p=21+5≈1,618,
il rapporto aureo. Convergenza superlineare ma non quadratica.
Dalla stessa relazione si ricava anche la costante asintotica nel senso della definizione: uguagliando i coefficienti, A=CA−1/p, cioè A1+1/p=Ap=C (perché 1+p1=p), quindi
k→∞lim∣ek∣1,618∣ek+1∣=A=2f′(α)f′′(α)1/p=2f′(α)f′′(α)0,618.
Attenzione a non confondere le due costanti: C=2f′f′′ è quella del prodotto ekek−1, A=C0,618 è quella rispetto a ∣ek∣p.
Efficienza. Per valutazione di f (supponendo f′ costosa quanto f): Newton usa 2 valutazioni per passo e ordine 2, cioè 21/2=1,41 "ordine per valutazione"; le secanti 1 valutazione e ordine 1,618, cioè 1,618. Quando f′ è costosa conviene la secante.
Esempio svolto: x3−x−2=0 con x0=1, x1=2.f(1)=−2, f(2)=4.
x2=2−4⋅4−(−2)2−1=2−64=1,33333.
f(x2)=2,37037−1,33333−2=−0,96296.
x3=x2−f(x2)f(x2)−f(x1)x2−x1. Il rapporto vale −0,96296−41,33333−2=−4,96296−0,66667=0,134328, e quindi x3=1,33333−(−0,96296)(0,134328)=1,33333+0,12935=1,46269.
k
xk
ek
0
1
−5,21⋅10−1
1
2
+4,79⋅10−1
2
1,3333333
−1,88⋅10−1
3
1,4626866
−5,87⋅10−2
4
1,5311694
+9,79⋅10−3
5
1,5209264
−4,53⋅10−4
6
1,5213763
−3,39⋅10−6
7
1,5213797080
+1,18⋅10−9
8
1,5213797068
−3,1⋅10−15
La costante ekek−1ek+1 si stabilizza attorno a 0,76 (teorica 0,7679), e gli ordini stimati sono 1,5–1,7, compatibili con 1,618. Il rapporto ∣ek∣1,618∣ek+1∣ oscilla invece tra 0,81 e 0,87, attorno al valore teorico A=0,76790,618=0,849. Servono 8 passi (8 valutazioni di f oltre alle due iniziali) contro i 4 passi di Newton (4 valutazioni di f più 4 di f′).
Codice
python
import math
defnewton(f, df, x0, tol=1e-12, nmax=50):
x = x0
for k inrange(1, nmax + 1):
dx = f(x) / df(x)
x -= dx
ifabs(dx) <= tol * max(1.0, abs(x)):
return x, k
return x, nmax
defsecanti(f, x0, x1, tol=1e-12, nmax=50):
for k inrange(1, nmax + 1):
x2 = x1 - f(x1) * (x1 - x0) / (f(x1) - f(x0))
ifabs(x2 - x1) <= tol * max(1.0, abs(x2)):
return x2, k
x0, x1 = x1, x2
return x1, nmax
f = lambda x: x**3 - x - 2
df = lambda x: 3 * x**2 - 1print(newton(f, df, 1.5))
print(secanti(f, 1.0, 2.0))
x, e = 1.0, [] # radice di 2 con Newton: x -> (x + 2/x)/2for _ inrange(4):
x = (x + 2 / x) / 2
e.append(abs(x - math.sqrt(2)))
for k inrange(1, 4):
print(k, e[k] / e[k-1]**2) # e_{k+1}/e_k^2 -> 1/(2 sqrt 2) = 0.3535...print(math.log(e[3] / e[2]) / math.log(e[2] / e[1])) # ordine stimato
In MATLAB: fzero(@(x) x^3-x-2, 1.5) combina bisezione, secanti e interpolazione inversa; il metodo di Newton si scrive in un ciclo con la derivata analitica; fsolve per sistemi.
Errori tipici
Dimenticare di verificare f′(α)=0: con radici multiple il metodo è lineare, non quadratico.
Applicare la costante 2f′f′′ con i valori in xk invece che in α, o scambiarla con ∣g′(α)∣ (che è nullo).
Dire che "Newton converge sempre": è un metodo locale; x0 va scelto vicino alla radice.
Calcolare l'ordine delle secanti come 2: è 1,618.
Usare un incremento piccolo come criterio senza controllare ∣f′∣ nella zona (radici quasi multiple).
Domande d'esame
Definire l'ordine di convergenza di un metodo iterativo. Risposta:p tale che ∣ek+1∣/∣ek∣p→C∈]0,∞[.
Dimostrare che Newton ha ordine 2 per una radice semplice. Risposta: Taylor di f centrato in xk calcolata in α, dividere per f′(xk): ek+1=2f′(xk)f′′(ξk)ek2.
Cosa succede a Newton con una radice di molteplicità m? Risposta: convergenza lineare con tasso mm−1; con x−mf/f′ torna quadratica.
Perché le secanti hanno ordine 21+5? Risposta:ek+1≈Cekek−1 implica p=1+p1.
Versione ripasso
Ordine p:∣ek∣p∣ek+1∣→C; p=1 lineare (tasso C<1), p=2 quadratica (cifre corrette raddoppiano), 1<p<2 superlineare. Stima: p≈ln(∣ek∣/∣ek−1∣)ln(∣ek+1∣/∣ek∣), con gli incrementi se α è ignoto.
Newton:xk+1=xk−f′(xk)f(xk) (zero della tangente; punto fisso con g=x−f′f, g′(α)=f′2ff′′=0).
Dimostrazione: 0=f(xk)+f′(xk)(α−xk)+2f′′(ξ)(α−xk)2, si divide per f′(xk): ek+1=2f′(xk)f′′(ξk)ek2; ∣ek+1∣≤2mMek2 con δ=min{⋅,Mm}.
2 (Erone x→21(x+x2)) da 1: 1,23,1217,408577; errori −0,414,8,6⋅10−2,2,5⋅10−3,2,1⋅10−6,1,6⋅10−12; ek−12ek=0,500,0,333,0,353,0,3535→221; p≈2,00.
x3−x−2 da 1,5: x1=1,5+5,750,125=1,5217391, errori −2,1⋅10−2,3,6⋅10−4,9,9⋅10−8,7,6⋅10−15, costante 2(3α2−1)6α=0,7679; 4 passi contro 11 (punto fisso) e 33 (bisezione) per 10−10.
Arresto: ∣xk+1−xk∣≈∣ek∣ (metodo superlineare).
Fallimenti:f′(xk)=0; x0 lontano: x3−2x+2 da 0 cicla 0→1→0; arctanx da 1,5 diverge (−1,694,2,321,−5,114,32,3), da 1,3 converge.
Radici multiple (f=(x−α)mh): Newton lineare con tasso mm−1 (per (x−1)m: ek+1=mm−1ek). (x−1)2(x+2) da 2: 1,5556,1,2979,1,1554,…, rapporto →0,5. Modificato x−mf′f (m=2): 1,1111,1,0019493,1,0000006327 (quadratico). Radici multiple mal condizionate.
Perché le cifre raddoppiano: ∣ek∣≈10−s⇒∣ek+1∣≈C10−2s; da 10−1 a 10−16 servono 4 passi quadratici (10−1,10−2,10−4,10−8,10−16) contro 16 lineari con tasso 0,1.
Costante di Newton per x2−2: 2f′f′′=2⋅222=0,35355; per x3−x−2: 2(3α2−1)6α=11,88769,1283=0,7679.
Primo passo di Erone: x1=21(1+2)=1,5, x2=21(1,5+1,52)=21(1,5+1,3333)=1,41667.
Secanti, relazione tra gli ordini: ∣ek−1∣≈(∣ek∣/A)1/p inserito in A∣ek∣p≈C∣ek∣∣ek−1∣ dà l'esponente 1+p1, cioè p2−p−1=0.
Il prodotto ekek−1 viene dall'errore di interpolazione lineare in α, ω(α)=(α−xk)(α−xk−1).
Secanti sul cubico: errori −0,521,+0,479,−0,188,−5,87⋅10−2,+9,79⋅10−3,−4,53⋅10−4,−3,39⋅10−6,+1,18⋅10−9.
Criterio d'arresto per Newton: ∣xk+1−xk∣≤tolmax(1,∣xk+1∣) più un numero massimo di iterazioni.
Errori tipici: supporre f′(α)=0 senza controllare; confondere C con ∣g′(α)∣ (nullo); "Newton converge sempre"; ordine delle secanti 2.