Equazioni differenziali ordinarie.
Alvise Sommariva
Universit`a degli Studi di Padova Dipartimento di Matematica Pura e Applicata
17 maggio 2014
Problema di Cauchy
Si consideri ilproblema di Cauchy
y0(x ) = f (x , y (x )), x ≥ x0
y (x0) = y0
(1)
dove f `e a valori in Rn e definita in un sottoinsieme Ω di R × Rn,
con (x0, y0) ∈ Ω. Di seguito supporremo che tale problema abbia
Esempi
Esempio 1.
y0(x ) = y (x ), x ≥ 0
y (0) = 1 (2)
la cui soluzione `e exp (x ). E’ un problema di Cauchy con
f (x , y (x )) = y (x ). Esempio 2. y10(x ) = −y2(x ), x ≥ 0 y20(x ) = y1(x ), x ≥ 0 y1(0) = 1, y2(0) = 0 (3)
la cui soluzione `e y (x ) = (y1(x ), y2(x )) = (cos (x ), sin (x )). E’ un
problema di Cauchy con y = (y1, y2), x0 = 0, y (x0) = (1, 0) e
f (x , y (x )) = f (x , y1(x ), y2(x )) = (−y2(x ), y1(x )).
Teorema di Cauchy in piccolo
Sia B(y0) la palla chiusa di Rn di centro y0 e raggio e sia
Sδ,,x0,y0 ≡ [x0− δ, x0+ δ] × B(y0) ⊆ R × R
n, δ, > 0.
Ricordiamo che la funzione f `e L-lipschitziana rispetto la seconda
variabile in Sδ,,x0,y0 se L > 0 e
|f (x, z1)−f (x , z2)| ≤ L|z1−z2|, ∀x ∈ [x0−δ, x0+δ], ∀z1, z2∈ B(y0).
Vale il seguenteteorema di esistenza ed unicit`a (in piccolo)
Teorema
Siano Ω un aperto di R × Rn contenente (x0, y0), f : Ω → Rn
continua e L-lipschitziana (rispetto alla seconda variabile) in Sδ,,x0,y0 (per qualche δ, > 0).
Allora esiste un intervallo aperto contenente x0 nel quale `e definita
Teorema di Cauchy in grande
Accanto a tale teorema esiste quello di esistenza ed unicit`a (in
grande)
Teorema
Siano Ω = [x0, x0+ a] × Rn, f : Ω → Rn continua e L-lipschitziana
(rispetto la seconda variabile) in Ω.
Allora il problema di Cauchy (1) ha una e una sola soluzione in [x0, x0+ a].
Si noti che
I Nel teorema di Cauchy in piccolo Ω `e aperto, mentre in quello
in grande `e chiuso.
I Il teorema di Cauchy in piccolo fornisce l’esistenza e unicit`a
locale della soluzione, mentre quello in grande `e globale.
Metodo di Eulero esplicito
Indichiamo con I(x , x ) il pi`u piccolo intv. aperto contenente x e x
(cio`e (x , x ) oppure (x , x )). Assumendo che la soluzione sia sufficientemente regolare, abbiamo dalla formula di Taylor per x ≈ x , ξ ∈ I(x , x ) e (1)
y (x ) = y (x ) + y0(x )(x − x ) +y
00(ξ)(x − x )2
2
≈ y (x) + y0(x )(x − x ) = y (x ) + f (x , y (x ))(x − x ) (4)
Di conseguenza se si desidera calcolare la soluzione nei punti
xk+1 = x0+ kh = xk+ h con k > 0, ponendo x = xk+1, x = xk
Metodo di Eulero esplicito
Il metodo diEulero esplicito consiste nell’approssimare y (xk+1) con
yk+1 definito da yk+1 = yk + h · f (xk, yk), y0= y (x0). (6) Essendo y (xk+1) = y (xk) + y0(xk)(x − xk) + y00(ξ)(xk+1− xk)2 2
si osserva immediatamente che applicando il metodo di Eulero esplicito ponendo yk = y (xk), si ha per qualche ξ in (xk, xk+1), in
virt`u del fatto che y0(xk) = f (xk, y (xk))
y (xk+1) − yk+1 = y (xk) + y0(xk)(xk+1− xk) (7) + y 00(ξ)(x k+1− xk)2 2 − (y (xk) + y 0 (xk)(xk+1− xk)) = y 00(ξ)(x k+1− xk)2 2 .
Metodo di Eulero implicito
Similmente al caso di Eulero esplicito, se poniamo invece x = xk,
x = xk+1 abbiamo
y (xk) ≈ y (xk+1) + f (xk+1, y (xk+1))(xk− xk+1), (8)
e quindi
y (xk+1) = y (xk) + h · f (xk+1, y (xk+1)). (9)
Il metodo di Eulero implicito consiste nell’approssimare y (xk+1)
con yk+1 definito da
yk+1= yk + h · f (xk+1, yk+1), y0 = y (x0). (10)
Evidentemente ad ogni iterazione si richiede di risolvere un’eqz. nonlineare nella variabile z del tipo
z = yk + h · f (xk+1, z)
la cui soluzione pu`o essere calcolata utilizzando ad esempio col
Osservazione
Il problema di Cauchy `e definito da
y0(x ) = f (x , y (x )), x ≥ x0
y (x0) = y0
(11)
dove f `e a valori in Rn e definita in un sottoinsieme Ω di R × Rn,
con (x0, y0) ∈ Ω. Quindi a priori i metodi di Eulero esplicito
yk+1= yk + h · f (xk, yk), y0= y (x0) (12)
e Eulero implicito
yk+1 = yk+ h · f (xk+1, yk+1), y0 = y (x0) (13)
possono essere utilizzati per sistemi di equazioni differenziali, in
quanto la sequenza `e ben definita.
Analisi convergenza
Supponiamo di analizzare il problema di Cauchy nell’intervallo
compatto I = [x0, xfin]. Sia y la soluzione esatta di un fissato
problema di Cauchy (1) e u(h) l’approssimazione fornita da un
metodo numerico, campionando la soluzione nei punti xs = x0+ sh, con Nh = xfin− x0.
Un tale metodo si diceconvergente se
∀n, ky − u(h)k
∞≤ C (h)
con C (h) infinitesimo rispetto ad h quando h tende a 0. Se C (h) = O(hp)
per qualche p > 0 allora si dice che il metodo converge conordine
Analisi convergenza
Se un metodo per la soluzione di problemi di Cauchy ha la forma
yn+1= p X j =0 ajyn−j + h p X j =−1 bjf (xn−j, yn−j)
allora, posto yn= y (tn) il valore della sol. del problema di Cauchy
in tn (cf. [1, p.112]), si definisce τn(h) = 1 h · (yn+1− ( p X j =0 ajyn−j + h p X j =−1 bjf (xn−j, yn−j))).
si chiamaerrore locale di troncamentodel metodo, mentre
τ (h) = max
n=0,...|τn(h)|
si chiamaerrore globale di troncamentodel metodo. Un metodo
per cui τ (h) tende a 0, quando h → 0 si diceconsistente.
Analisi convergenza
Nota.Analisi convergenza
Consideriamo il metodo di Eulero esplicito, con ascisse equispaziate
per un prefissato passo h. Sia yn= y (xn), con y sol. del problema
di Cauchy, xn= x0+ nh e
u∗n= yn−1+ h · f (xn−1, yn−1), un= un−1+ h · f (xn−1, un−1).
e osserviamo che
en= yn− un= (yn− un∗) + (un∗− un) (14)
Il metodo converge se entrambi i termini a secondo membro di (14) convergono a 0 per h → 0. Osserviamo che
I la prima sequenza un∗ parte dal valore assunto dalla soluzione
in xn−1,
I la seconda seq. un parte da valori che a priori non coincidono
con yn−1= y (xn−1).
Analisi convergenza
Se la derivata seconda di y esiste ed `e continua allora abbiamo
mostrato che per quanto concerne la sequenza di Eulero esplicito,
|yn− un∗|= |yn− (yn−1+ h · f (xn−1, yn−1))| =(h2/2) · |y00(ξn)|
per qualche ξn∈ (tn−1, tn).
Osserviamo che in questo caso, poich`e
u∗n= yn−1+ h · f (xn−1, yn−1),
abbiamo che
Analisi convergenza
Se la derivata seconda di y esiste ed `e continua, posto
M = maxx ∈I|y00(x )|, per il metodo di Eulero esplicito,
|τn(h)| = |yn−un∗|/h = (1/h)·(h2/2)·|y 00 (ξn)| = (h/2)·|y00(ξn)| ≤ Mh/2. e quindi τ (h) = max n=0,...|τn(h)| ≤ Mh/2.
Quindi sotto queste ipotesi il metodo di Eulero esplicito risulta
consistente.
Osserviamo ora che essendo
en= yn− un= (yn− un∗) + (un∗− un) (15)
abbiamo
|en| = |yn− un| ≤ |yn− un∗| + |un∗− un| ≤ h|τ (h)| + |un∗− un| (16)
Analisi convergenza Eulero esplicito, caso Lipschitziano
Consideriamo ora il termine u∗n− un.
Sef `e L-Lipschitziana (rispetto al secondo argomento) allora |f (x, y1) − f (x , y2)| ≤ L|y1− y2| e si mostra che |un∗− un| ≤ (1 + hL)|en−1|. Infatti da u∗n= yn−1+ h · f (xn−1, yn−1), un= un−1+ h · f (xn−1, un−1)
ricaviamo dalla L-lipschitzianit`a
|u∗n− un| = |(yn−1+ h · f (xn−1, yn−1)) − (un−1+ h · f (xn−1, un−1))|
= |(yn−1− un−1) + h · (f (xn−1, yn−1) − f (xn−1, un−1))|
≤ |yn−1− un−1| + h|f (xn−1, yn−1) − f (xn−1, un−1))|
Analisi convergenza Eulero esplicito, caso Lipschitziano
Da en:= yn− un, |yn− un∗| ≤ h|τ (h)|, |un∗− un| ≤ (1 + hL)|en−1|
|en| ≤ h|τ (h)| + (1 + hL)|en−1|
≤ h|τ (h)| + (1 + hL)(h|τ (h)| + (1 + hL)|en−2|)
= (1 + (1 + hL))h|τ (h)| + (1 + hL)2|en−2|
Di conseguenza, ragionando induttivamente abbiamo da 1 + s + . . . + sk = (1 − sk+1)/(1 − s) ed essendo |e0| = 0, |en| ≤ (1 + (1 + hL) + . . . + (1 + hL)n−1)h|τ (h)| + (1 + hL)n|e0| ≤ 1 − (1 + hL) n 1 − (1 + hL) h|τ (h)| + (1 + hL) n|e 0| = (1 + hL)n− 1 L |τ (h)|
Analisi convergenza Eulero esplicito, caso Lipschitziano
Notiamo che per γ > 0 exp (γ) = ∞ X k=0 γk k! ≥ 1 X k=0 γk k! = 1 + γ (17)
e quindi (1 + γ)n≤ (exp(γ))n= exp(nγ) implica che per γ = hL si
ha essendo nh = xn− x0 (1 + hL)n≤ exp (nhL) = exp (L(xn− x0)). Cos`ı da |en| ≤ (1 + hL)n− 1 L |τ (h)|
si ottiene che essendo x0 < xn≤ xfin
|en| ≤ exp (L(xn− x0)) − 1 L τ (h) ≤ exp (L(xfin− x0)) − 1 L · Mh 2
e di conseguenza, da (14), possiamo dire che il metodo diEulero
Analisi convergenza Eulero esplicito, caso dissipativo
Se invece di essere L-lipschitziana, f `e L-dissipativa, cio`e
−L ≤ ∂f ∂y ≤ 0, abbiamo da u∗n= yn−1+ h · f (xn−1, yn−1), un= un−1+ h · f (xn−1, un−1) f (xn−1, un−1) = f (xn−1, yn−1) + ∂f ∂y(ξ)(un−1− yn−1) che per qualche ξ ∈ I(un−1, yn−1)
un− un∗ = (un−1+ h · f (xn−1, un−1)) − (yn−1+ h · f (xn−1, yn−1)) = (un−1− yn−1) + h · (f (xn−1, un−1) − f (xn−1, yn−1)) = (un−1− yn−1) + h ∂f ∂y(ξ)(un−1− yn−1) = (1 + h∂f ∂y(ξ)) · (un−1− yn−1). (18)
Analisi convergenza Eulero esplicito, caso dissipativo
Da
un− un∗= (1 + h
∂f
∂y(ξ)) · (un−1− yn−1). (19)
abbiamo che se 0 < h ≤ 2/L (non restrittivo per mostrare la conv. visto che si studia il comportamento per h → 0) allora
Analisi convergenza Eulero esplicito, caso dissipativo
Da en:= yn− un, |yn− un∗| ≤ h|τ (h)|, |un∗− un| ≤ |en−1|
|en| ≤ h|τ (h)| + |en−1|
≤ h|τ (h)| + (h|τ (h)| + |en−2|)
= 2h|τ (h)| + |en−2|
Di conseguenza, ragionando induttivamente abbiamo che essendo
|e0| = 0, nh ≤ Nh = xfin − x0, |τ (h)| ≤ Mh/2
|en| ≤ nh|τ (h)| + |e0|
≤ (xfin − x0)|τ (h)| ≤ (xfin − x0)Mh/2
e di conseguenza possiamo dire che il metodo diEulero esplicito
converge con ordine 1.
Facoltativo. Analisi convergenza Eulero implicito, caso
Lipschitziano
Consideriamo il metodo di Eulero implicito un= un−1+ hf (tn, un), u0 = y0.
Per prima cosa calcoliamo l’errore globale di troncamento. Se
g ∈ C2(a, b), per qualche ξ ∈ (a, b) si ha
Z b
a
g (x )dx = (b − a)g (b) − h2g(1)(ξ)/2
e quindi essendo h = xn− xn−1, se la soluzione `e suff. regolare
Facoltativo. Analisi convergenza Eulero implicito, caso
Lipschitziano
Ricordiamo che yn = y (tn) `e la soluzione del problema di Cauchy
mentre un= un−1+ hf (tn, un), u0 = y0. Definiamo un∗ := yn−1+ hf (tn, yn), u∗0 = y0. Come in precedenza yn− un= (yn− un∗) + (un∗− un)
e quindi per la disuguaglianza triangolare |yn− un| ≤ |yn− un∗| + |u
∗ n− un|.
Studiamo separatamente i termini al secondo membro. Osserviamo che
|yn− un∗| = |yn− (yn−1+ hf (tn, yn))| = h|τn(h)|
Facoltativo. Analisi convergenza Eulero implicito, caso
Lipschitziano
Studiamo |un∗− un| ricordando che
un∗ := yn−1+ hf (tn, yn), u∗0 = y0,
un:= un−1+ hf (tn, un), u0= y0.
Di conseguenza, dalla lipschitzianit`a (rispetto la seconda variabile)
|u∗n− un| = |yn−1+ hf (tn, yn) − un−1− hf (tn, un)|
= |yn−1− un−1+ hf (tn, yn) − hf (tn, un)|
≤ |yn−1− un−1| + h|f (tn, yn) − f (tn, un)|
Facoltativo. Analisi convergenza Eulero implicito, caso
Lipschitziano
In definitiva, essendo |yn− un| ≤ |yn− un∗| + |un∗− un|, |yn− un∗| = |yn− (yn−1+ hf (tn, yn))| = h|τn(h)|, |un∗− un| ≤ |yn−1− un−1| + hL|yn− un|, deduciamo che |yn− un| ≤ h|τn(h)| + |yn−1− un−1| + hL|yn− un|.Visto che siamo interessati ad analizzare l’errore per h → 0, non `e
restrittivo supporre hL < 1 e portando hL|yn− un| a primo membro
e dividendo ambo i membri per 1 − hL > 0 abbiamo, posto en:= yn− un, |en| = |yn− un| ≤ (1/(1 − hL))(h|τn(h)| + |yn−1− un−1|) = h|τn(h)| 1 − hL + |en−1| 1 − hL (23)
Facoltativo. Analisi convergenza Eulero implicito, caso
Lipschitziano
Con ragionamenti simili a quelli utilizzati per mostrare la
Facoltativo. Analisi convergenza Eulero implicito, caso
Lipschitziano
Notiamo che se hL < 1 allora s = 1/(1 − hL) > 1 e che
n X k=1 sk = s n+1− 1 s − 1 ≤ sn+1 s − 1 Ora s − 1 = 1 1 − hL− 1 = hL 1 − hL > 0 (25)
e da (1 + x )k ≤ exp(kx) per x > 0, abbiamo
sn+1 = (1 + (s − 1))n+1≤ exp((n + 1)(s − 1)) = exp(hL(n + 1) 1 − hL ) = exp( L(xn+1− x0) 1 − hL ) (26) e quindi n X k=1 sk ≤ (1 − hL) exp( L(xn+1−x0) 1−hL ) hL
Facoltativo. Analisi convergenza Eulero implicito, caso
Lipschitziano
Notiamo che τn(h) = h|y00(ξ)|/2 e che se y00`e continua per il
teorema di Weierstrass |y00| ha massimo nel compatto [x0, xfin],
diciamo M. Di conseguenza
τ (h) = max(τn(h)) ≤ Mh/2.
Ricordando che |e0| = 0, che xfin = x0+ Nh abbiamo
|en| ≤ h (1 − hL) exp(L(xn+1−x0) 1−hL ) hL |τ (h)| + exp( L(xn− x0) 1 − hL )|e0| ≤ h(1 − hL) exp( L(xn+1−x0) 1−hL ) hL Mh 2 + exp( L(xfin − x0) 1 − hL )|e0| ≤ (1 − hL) exp( L(xN−x0)+hL 1−hL ) L Mh 2 (27)
e quindi |en| → 0 per h → 0, per cui Eulero implicito converge.
Metodo di Crank-Nicolson
Supponiamo di dover risolvere il problema di Cauchy
y0(t) = f (t, y (t)), t ≥ t0
y (t0) = y0
(28)
Osserviamo che se tn+1 = tn+ h allora ricordando la formula del
Metodo di Crank-Nicolson
Da
y (tn+1) ≈ y (tn) + (h/2)(f (tn, y (tn)) + f (tn+1, y (tn+1))) (29)
si introduce il metodo implicito (detto diCrank-Nicolsono dei dei
trapezi)
un+1≈ un+ (h/2)(f (tn, un) + f (tn+1, un+1)) (30)
per risolvere numericamente il problema di Cauchy (28). Si osservi che ad ogni iterazione, essendo il metodo implicito, bisogna risolvere una equazione nonlineare.
Assoluta stabilit´
a
Nell’ambito delle equazioni differenziali ordinarie, esistono vari criteri di stabilit´a. Un classico problema `e quello di vedere se un
metodo `e assolutamente stabile. Definito il problema di Cauchy
y0(x ) = λy (x ), x ≥ 0
y (0) = 1 (31)
per un certo λ ∈ C con <(λ) < 0, visto che l’unica soluzione `e y (x ) = exp (λx ) si cerca di definire il passo h cosicch`e il metodo numerico per la soluzione del problema di Cauchy (1) abbia lo stesso comportamento asintotico di exp (λx ).
Laregione di assoluta stabilit`a e’ composta dagli hλ, per cui il
metodo numerico con passo h `e tale da avere lo stesso
Assoluta stabilit´
a
Ricordiamo a tal proposito che dalla formula di Eulero, se z = a + ib = <(z) + =(z) allora
exp (z) = exp (a) · (cos (b) + i sin (b)).
Quindi se <(λ) < 0, visto che | cos (=(λx )) + i sin (=(λx ))| = 1 e x > 0 abbiamo
| exp (λx)| = |exp(<(λx))|| cos (=(λx)) + i sin ((=(λx)))|
= |exp (<(λx))| → 0, perx → ∞.
Visto il comportamento asintotico di exp (λx ), se u(h)(xn) `e
l’approssimazione della soluzione in xn fornita da un metodo
numerico a passo h, si desidera sia u(h)(xn) → 0 per n → +∞.
Assoluta stabilit´
a: Eulero esplicito
Nel caso del metodo di Eulero esplicito,
un= un−1+ hf (xn−1, un−1) = (1 + hλ)un−1, u0= 1.
Si verifica facilmente che questa equazione alle differenze (di ordine 1) ha quale unica soluzione
un= (1 + hλ)n
e che
un→ 0 se e solo se |1 + hλ| < 1
Assoluta stabilit´
a: Eulero esplicito
Di conseguenza, fissato λ, il metodo risulta stabile se e solo se si
sceglie un passo sufficientemente piccolo, cio`e minore di 1/|λ|.
Un problema di Cauchy
y0(x ) = λy (x ), x ≥ 0
y (0) = 1 (32)
si dicestiff, quando <(λ) 0 (cio`e <(λ) `e molto grande in valore assoluto).
In questo caso, si deve scegliere un passo h molto piccolo affinch`e
la soluzione di Eulero esplicito tenda a 0.
Assoluta stabilit´
a: Eulero implicito
Nel caso del metodo di Eulero implicito,
un= un−1+ hf (xn, un) = un−1+ hλun, u0 = 1.
Portando a primo membro hλun, dividendo i membri per 1 − hλ
un= un−1 1 − hλ. Si verifica che un= 1 (1 − hλ)n e che un→ 0 se e solo se 1 |1 − hλ| < 1.
Essendo <(λ) < 0, si vede facilmente che |1−hλ1 | < 1 per qualsiasi
h. Questa propriet`a suggerisce di applicare Eulero impl. invece di
Eulero espl. per risolvere num. un problema di Cauchy.
Assoluta stabilit´
a: metodo di Crank-Nicolson
Nel caso del metodo di Crank-Nicolson, da f (x , y ) = λy un = un−1+ (h/2)(f (xn, un) + f (xn−1, un−1)) = un−1+ (h/2)λ(un+ un−1), u0 = 1 (33) Quindi, (1 −hλ 2 )un= un−1+ hλ 2 un cio`e 2 − hλ 2 · un= 2 + hλ 2 · un−1 e di conseguenza un= 2 + hλ 2 − hλun−1
Assoluta stabilit´
a: metodo di Crank-Nicolson
Da
un=
2 + hλ
2 − hλun−1
si verifica facilmente che questa equazione alle differenze ha quale unica soluzione un= (2 + hλ)n (2 − hλ)n e che un→ 0 se e solo se |2 + hλ| |2 − hλ| < 1.
Da <(λ) < 0, |2+hλ2−hλ| < 1 per ogni h. Infatti, se λ = a + ib, a < 0 |2 + hλ| |2 − hλ| = |2 + h(a + ib)| |2 − h(a + ib)| = |(2 + ha) + ib| |(2 − ha) + ib| = p(2 + ha)2+ b2 p(2 − ha)2+ b2 < 1
in quanto (2 + ha)2 < (2 − ha)2, qualora a < 0.
Facoltativo: Assoluta stabilit´
a. Una nota
Nota.Stabilire la stabilit`a per il problema di Cauchy
y0(x ) = f (x , y (x )), x ≥ x0
y (x0) = y0 (34)
`e in generale complicato. Se invece consideriamo
y0(x ) = λy (x ) + g (x ), x ≥ x0
y (x0) = y0 (35)
la questione `e pi`u semplice. Ricordiamo che la soluzione di (35) `e y (x ) = c · exp (λx ) + Z x x0 exp (λ(x − t))g (t)dt con c = exp (−λx0)y (x0)
Facoltativo: Assoluta stabilit´
a. Una nota
Sia y la soluzione di y0(x ) = λy (x ) + g (x ), x ≥ x0 y (x0) = y0 (36) e y quella di y0(x ) = λy (x ) + g (x ), x ≥ x0 y (x0) = y0+ (37) Posto z= y− y , da (36), (38), z0(x ) = λz(x ), x ≥ x0 y (x0) = (38)Facoltativo: Assoluta stabilit´
a. Una nota
Di solito nelle applicazioni ci si interessa al caso λ < 0 o complesso
con parte reale negativa. In questi casi z→ 0 per n → ∞ e quindi
l’effetto delle perturbazioni si annulla per valori grandi di x .
Si desidera che il metodo numerico goda delle stesse propriet`a e la
risposta la si ha nuovamente dallo studio della regione di stabilit`a .
Metodi linear multistep (LM)
Posto h > 0, xn= x0+ nh ed n ≥ 0, un metodo si dice linear
multistep(abbr. LM), se `e del tipo
un+1= p X j =0 ajun−j+ h p X j =−1 bjf (xn−j, un−j), n = p, p + 1, . . . (39)
noti i valori uk ≈ y (xk) per k < p e supposto ap, bp6= 0.
Si dimostra che un metodo LM `e consistentese e solo se
p X j =0 aj = 1, − p X j =0 jaj + p X j =−1 bj = 1
e inoltre che se y ∈ Cq+1 per qualche q ≥ 1, il metodo haordine q
Metodi linear multistep (LM)
Nota.Si osservi che per metodi a pi`u passi non essendo noti valori
approssimati della soluzione nei punti x0, . . ., xp, usualmente li si
fornisce utilizzando un metodo a meno passi, come ad esempio Eulero implicito.
Nota.
I metodi gi`a proposti sono di questo tipo:
I Eulero esplicito: a0= 1, b−1 = 0, b0= 1;
I Eulero implicito: a0 = 1, b−1= 1, b0 = 0;
I Eulero esplicito: a0= 1, b−1 = 1/2, b0 = 1/2;
Applicando i teoremi precedenti si vede, come noto che
I Eulero esplicitoha ordine di consistenza 1,
I Eulero implicito ha ordine di consistenza 1,
I il metodo dei trapeziha ordine di consistenza uguale a2.
Metodi linear multistep: Adams
Da y0(x ) = f (x , y (x )) e y (xn+1) = y (xn−m) + Rxn+1 xn−my 0(x ) dx ricaviamo che y (xn+1) = y (xn−m) + Z xn+1 xn−m f (x , y (x )) dx .Se `e nota una approssimazione della soluzione nei punti
xn+γ, . . . , xn+γ−p e se Pp(x ) `e il polinomio che interpola le coppie
(xn+γ−k,f (xn+γ−k, un+γ−k)), si ha
y (xn+1) = y (xn−m) +
Z xn+1
xn−m
Pp(x ) dx
e quindi facilmente un metodo per quadratura numerica dell’integrale.
I Se m = 0, γ = 0 si hanno metodi espliciti (Adams-Bashforth);
Esempi LM: Adams-Bashforth
I Adams-Bashforth (p=0): un+1= un+ hfn, τn+1 = (h/2)y(2)(ξn). I Adams-Bashforth (p=1): un+1= un+ h2(3fn− fn−1), τn+1 = (5h2/12)y(3)(ξn). I Adams-Bashforth (p=2): un+1= un+12h(23fn− 16fn−1+ 5fn−2), τn+1 = (3h3/8)y(4)(ξn). I Adams-Bashforth (p=3): un+1= un+24h(55fn− 59fn−1+ 37fn−2− 9fn−3), τn+1 = (251h4/720)y(5)(ξn). Nota.Si noti che sono effettivamente metodiesplicitia p + 1 passi.
Esempi LM: Adams-Moulton
I Adams-Moulton (p=0): un+1 = un+ hfn+1, τn+1 = (−h/2)y(2)(ξn). I Adams-Moulton (p=1): un+1 = un+h2(fn+1+ fn), τn+1 = (−h2/12)y(3)(ξn). I Adams-Moulton (p=2): un+1 = un+12h(5fn+1+ 8fn− fn−1), τn+1 = (−h3/24)y(4)(ξn). I Adams-Moulton (p=3): un+1= un+24h(9fn+1+ 19fn− 5fn−1+ fn−2), τn+1 = (−19h4/720)y(5)(ξn). Nota.Convergenza LM
Si supponga che i dati iniziali siano calcolati in modo che η(h) = max
i =0,...,p|y (xi) − ui| → 0, per h → 0
e che il metodo siaconsistente. Supponiamo inoltre che
aj ≥ 0, j = 0, . . . , p
mentre il passo di discretizzazione h sia tale h ≤ 1/(2c), c = L
p
X
j =−1
|bj|,
dove L `e la costante di Lipschitz di f .
Allora il metodo LMconvergeed inoltre esistono C1, C2 positive
tali che per ogni n
|y (xn) − un| ≤ C1η(h) + C2τ (h).
Barriere LM
Definizione
Un metodo numerico `e detto A-stabile se la sua regione di stabilit`a
assoluta contiene tutto il semipiano negativo.
Valgono le seguenti barriere di stabilit`a (Dahlquist, 1963)
Teorema
Nessun metodo LM esplicito `e A-stabile.
Teorema
Predictor-corrector
In generale un metodo LM implicito ha propriet`a di stabilit`a
migliori rispetto ad un LM esplicito e questo ne suggerisce l’utilizzo.
Purtroppo ad ogni iterazione bisogna risolvere una equazione nonlineare.
Un approccio comunemente utilizzato `e quello del
predictor-corrector. Consiste nell’utilizzare il metodo di punto fisso con una certa scelta del punto iniziale.
Nel caso di un metodo di Adams implicito (dettocorrector), si
utilizza ad esempio un metodo di Adams esplicito (dettopredictor).
Esempio Predictor-corrector
Consideriamo i seguenti metodi di Adams (porremo fi = f (xi, ui)).
Runge-Kutta
Consideriamo un metodo numerico che definisca una sequenza un
t.c.
y (xn+1) ≈ un+1= un+ hF (xn, un; h)
con
F (x , y ; h) = γ1f (x , y ) + γ2f (x + αh, y + βhf (x , y ))
e determiniamo i parametri γ1, γ2, α, β cos`ı da ottenere un
metodo del second’ordine. Ricordiamo che questo significa che
τ (h) sia O(h2). Per ottenere questo risultato usiamo la formula di
Taylor bivariata. Denotate con fx, fy le derivate parziali rispetto al
primo e secondo argomento di f , abbiamo
f (x +αh, y +βhf (x , y )) = f (x , y )+αhfx(x , y )+βhfy(x , y )f (x , y )+O(h2)
Runge-Kutta
Per definizione di errore locale di troncamento: τ (x , h) = (y (x + h) − u(x + h))/h
con u(x + h) calcolata dal metodo qualora u(x ) = y (x ). Da
f (x +αh, y +βhf (x , y )) = f (x , y )+αhfx(x , y )+βhfy(x , y )f (x , y )+O(h2)
abbiamo che
F (x , y ; h) = γ1f (x , y ) + γ2f (x + αh, y + βhf (x , y ))
= γ1f (x , y ) + γ2(f (x , y ) + αhfx(x , y ) + βhfy(x , y )f (x , y ))
Runge-Kutta
Facilmente, dalla formula di Taylor
y (x + h) − y (x) = hy(1)(x ) + (h2/2)y(2)(x ) + O(h3) = hf (x , y ) + (h2/2)(fx(x , y ) + fy(x , y )f (x , y )) + O(h3) = φ1(x , h) + O(h3) (41) Ma `e pure u(x + h) − y (x ) = hF (x , y ; h) = h(γ1f (x , y ) + γ2(f (x , y ) + αhfx(x , y ) + βhfy(x , y )f (x , y ))) + O(h3) = h(γ1+ γ2)f (x , y ) + h2γ2(αfx(x , y ) + βfy(x , y )f (x , y ))) + O(h3) = φ2(x , h, γ1, γ2, α, β) + O(h3) (42)
Runge-Kutta
Se φ1(x , h) ≡ φ2(x , h, γ1, γ2, α, β) allora da y (x + h) − y (x ) = φ1(x , h) + O(h3) u(x + h) − y (x ) = φ2(x , h, γ1, γ2, α, β) + O(h3)sottraendo membro a membro
y (x + h) − u(x + h) = (φ1(x , h) − φ2(x , h, γ1, γ2, α, β)) + O(h3)
= O(h3) (43)
e quindi si determina un metodo avente ordine di consistenza 2, poich`e τn(h) = O(h2) per ogni n e quindi τ (h) = O(h2).
Affinch`e φ1(x , h) = φ2(x , h, γ1, γ2, α, β), per confronto tra (40),
(41), (42), necessita
Runge-Kutta
Vediamo alcuni metodi in cui
γ1+ γ2 = 1, γ2α = 1/2, γ2β = 1/2.
Metodo diHeun(α = 1):
un+1= un+
h
2(f (xn, un) + f (xn+ h, un+ hf (xn, un))).
Metodo diEulero modificato(α = 1/2):
un+1= un+ hf (xn+
h 2, un+
h
2f (xn, un)).
Runge-Kutta
La scelta particolare di un maggior numero di vincoli permette, con qualche fatica, di calcolare un metodo di ordine 4. Posto
un+1= un+ h · f1+ 2f2+ 2f3+ f4 6 ove f1 = f (tn, un) f2 = f (tn+ h 2, un+ h · f1 2 ) f3 = f (tn+ h 2, un+ h 2f2) f4 = f (tn+ h, un+ h · f3) (44)
Metodi di Eulero esplicito in Matlab
Di seguito descriviamo i codici Matlab di Eulero esplicito e implicito, eseguiti da Atkinson, Han, Steward.
f u n c t i o n [ t , y]= eulero_esplicito ( t0 , y0 , t_end , h , fcn ) n = f i x( ( t_end−t0 ) /h ) +1;
t = l i n s p a c e( t0 , t0+(n−1)∗h , n ) ’ ; y = z e r o s( n , 1 ) ;
y ( 1 ) = y0 ;
f o r i = 2 : n
y ( i ) = y ( i−1) + h∗f e v a l( fcn , t ( i−1) , y ( i−1) ) ;
end
Metodo di Eulero implicito in Matlab
f u n c t i o n [ t , y]= eulero_implicito ( t0 , y0 , t_end , h , fcn , tol )
n = f i x( ( t_end−t0 ) /h ) + 1 ; t = l i n s p a c e( t0 , t0+(n−1)∗h , n ) ’ ;
y = z e r o s( n , 1 ) ; y ( 1 ) = y0 ;
f o r i =2: n
yt1 = y ( i −1) + h∗f e v a l( fcn , t ( i−1) , y ( i−1) ) ; count = 0 ; d i f f = 1 ;
w h i l e d i f f > tol && count < 10
yt2 = y ( i −1) + h∗f e v a l( fcn , t ( i ) , yt1 ) ;
d i f f = a b s( yt2−yt1 ) ; yt1 = yt2 ; count=count +1;
Metodo di Eulero implicito in Matlab
Osserviamo che
I la routine in questione risolve l’equazione del metodo di
Eulero implicito
z = un+ hf (xn+1, z)
tramite l’applicazione del metodo di punto fisso.
I quale valore inizialedel metodo di punto fisso si sceglie il
valore fornito da Eulero esplicito.
Esercizio 1. Eulero esplicito
Si risolva utilizzando il metodo di Eulero esplicito con passi h uguali rispettivamente a 0.2, 0.1, 0.05
y0(x ) = (cos (y (x )))2, 0 ≤ x ≤ 10
y (0) = 0 (45)
la cui soluzione `e Y (x ) = tan−1(x ).
Si calcolino (o plottino in scala semi-logaritmica)
I l’errore assoluto rispetto la soluzione esatta;
I l’errore relativo rispetto la soluzione esatta.
Per selezionati valori di x , ad esempio x = 10, si osservi il rapporto
Esercizio 2. Crank-Nicolson
Modificando opportunamente il metodo di Eulero implicito, si implementi il metodo di Crank-Nicolson.
Esercizio 3. Assoluta stabilit´
a
Approssimare per λ = −100 il valore assunto dalla soluzione y del problema di Cauchy y0(x ) = λy (x ), x ≥ 0 y (0) = 1 (46) nel punto x = 100. A tal proposito
I Si utilizzano i metodi di Eulero esplicito e Eulero implicito con
passi h = 0.1, h = 0.05, h = 0.02, h = 0.01, h = 0.001.
I Al variare di h verificare quando |1 + hλ| < 1.
I Si osservi che la mancata convergenza a 0 di Eulero implicito
`
Esercizio 4. Metodi di Adams
I Implementare i metodi di Adams-Bashforth e Moulton per
p = 3.
I Si consideri il problema di Cauchy
y0(x ) = (cos (y (x )))2, 0 ≤ x ≤ 10
y (0) = 0 (47)
la cui soluzione `e Y (x ) = tan−1(x ).
Approssimare con tali metodi la soluzione di (47) nell’intervallo [0, 10], in N punti equispaziati xn, con
N = 2, 4, 8, 16, 32, descrivendone con un plot l’errore assoluto kyn− unk∞ (dove yn= y (xn) e un l’approssimazione fornita
dal metodo numerico).
Quali valori iniziali si considerino quelli propri della soluzione esatta Y (x ) = tan−1(x ) nei punti richiesti.
Esercizio Facoltativo: Confronto di metodi.
Si risolva utilizzando il metodo di Eulero esplicito, implicito e quello dei trapezi, con passi h uguali rispettivamente a 0.5, 0.1, 0.01
y0(x ) = λy (x ) + (1 − λ) cos(t) − (1 + λ)sin(t), 0 ≤ x ≤ 5
y (0) = 1
(48)
Sapendo che la soluzione `e Y (x ) = sin(x ) + cos(x )
Bibliografia
K.E. Atkinson, W. Han, D.E. Steward Numerical Solution of Ordinary Differential Equations, Wiley, (2009). V. Comincioli, Analisi Numerica, metodi modelli applicazioni, Mc Graw-Hill, 1990.