Testo. Per y′=−2y, y(0)=1 (esatta y(1)=e−2=0,135335) due metodi, uno di Eulero esplicito e uno di Crank-Nicolson, hanno prodotto in t=1:
h
metodo A
metodo B
0,1
0,107374
0,134431
0,05
0,121577
0,135110
0,025
0,128512
0,135279
Verificare i valori in h=0,1 con le formule dei metodi.
Stimare l'ordine di convergenza di A e B senza usare il valore esatto, poi controllarlo con gli errori veri.
Applicare l'estrapolazione di Richardson ai due valori più accurati di ciascun metodo.
Stimare il passo e il numero di passi per avere errore ≤10−4 con A e con B.
(Teoria) Ricavare la formula del passo di CN per y′=−λy.
Soluzione
1. Verifica. Per y′=−2y, EE dà un+1=(1−2h)un e CN dà un+1=un−h(un+un+1), cioè un+1=1+h1−hun (vedi il punto 5). Con h=0,1 (n=10 passi):
u10EE=0,810=0,107374,u10CN=(1,10,9)10=0,818210=0,134431.
Quindi A è Eulero esplicito e B è Crank-Nicolson.
2. Ordine senza soluzione esatta. Se uh=y+Chp vale uh/2−uh/4uh−uh/2≈2p.
A: 0,121577−0,1285120,107374−0,121577=−0,006935−0,014203=2,048, quindi p=log22,048=1,03≈1.
B: 0,135110−0,1352790,134431−0,135110=−0,000169−0,000679=4,01, quindi p=2,00.
Controllo con gli errori veri e−2−u: A: 0,02796;0,01376;0,00682 (rapporti 2,03 e 2,02); B: 9,05⋅10−4;2,26⋅10−4;5,64⋅10−5 (rapporti 4,01 e 4,00) ✓.
B (ordine 2, fattore 34): 34u0,025−u0,05=34⋅0,1352789−0,1351096=30,5411156−0,1351096=30,4060060=0,1353353 (servono sette decimali), errore −3,8⋅10−8 (da 5,6⋅10−5). Per CN l'espansione dell'errore è in potenze pari di h e l'estrapolazione porta a ordine 4.
4. Passo per 10−4. Dalle costanti: A, errore ≈CAh con CA=0,0250,00682=0,273, quindi h≤0,27310−4=3,7⋅10−4 e n≥h1=2730 passi. B, errore ≈CBh2 con CB=0,02525,64⋅10−5=0,0902, quindi h≤0,090210−4=0,03330 e n≥0,03331=30,03, cioè 31 passi. CN è ≈90 volte più economica (e i passi costano poco di più: per l'equazione lineare, solo una divisione).
5. Passo di CN.un+1=un+2h(−λun−λun+1)⇒(1+2hλ)un+1=(1−2hλ)un, quindi
un+1=1+hλ/21−hλ/2un.
Con λ=2 è 1+h1−h. È un'approssimazione razionale (di Padé) di e−λh: 1+z/21−z/2=1−z+2z2−4z3+⋯ contro e−z=1−z+2z2−6z3+⋯: coincidono fino al secondo ordine, e la differenza al terzo (61−41=−121) è l'errore locale di ordine h3, dunque globale di ordine h2.
Risultati: A = Eulero esplicito (ordine 1,03≈1), B = Crank-Nicolson (ordine 2,00); Richardson: 0,135447 (A) e 0,135335 (B); per 10−4: A ≈2700 passi, B ≈30.
Errori tipici. Calcolare l'ordine come log2 del rapporto invertito (<1); usare 2p−1 errato nell'estrapolazione; applicare l'estrapolazione a due valori con passi non nel rapporto 2.