Equazioni differenziali ordinarie
Alvise Sommariva
Universit`a degli Studi di Padova Dipartimento di Matematica Pura e Applicata
Problema di Cauchy
Si consideri il problema di Cauchy
y′(x) = f (x, y (x)), x ≥ x 0
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.
y′(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. y′ 1(x) = −y2(x), x ≥ 0 y′ 2(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
Teorema di Cauchy in piccolo
A tal proposito supponiamo che per qualche δ, ǫ > 0 si abbia Sδ,ǫ,x0,y0 ≡ [x0− δ, x0+ δ] × Bǫ(y0) ⊆ Ω,
e che la funzione sia L-lipschitzianain Sδ,ǫ,x0,y0 cio`e esista L > 0
tale che
|f (x, z1)−f (x, z2)| ≤ L|z1−z2|, ∀x ∈ [x0−δ, x0+δ], ∀z1, z2∈ Bǫ(y0).
Vale il seguente teorema di esistenza ed unicit`a (in piccolo)
Teorema. Siano Ω un aperto di R × Rn, f una funzione di Ω in
Rn e (x0, y0) un punto di Ω. Se f `e continua e valgono le condizioni di L-lipschitzianit`a 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 una funzione di Ω in Rn.
Se f `e continua e valgono le condizioni di L-lipschitzianit`a in Ω
Metodo di Eulero esplicito
Indichiamo con I(x, x) il pi`u piccolo intv. aperto contenente x e x.
Assumendo che la soluzione sia sufficientemente regolare, abbiamo dalla formula di Taylor per x ≈ x, ξ ∈ I(x, x) e (9)
y(x) = y (x) + y′ (x)(x − x) +y ′′ (ξ)(x − x)2 2 ≈ y (x) + y′ (x)(x − x) = y (x) + f (x, y (x))(x − x) 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
y(xk+1) ≈ y (xk) + h · f (xk, y (xk)). (4)
Il metodo diEulero esplicitoconsiste nell’approssimare y (xk+1) con
yk+1 definito da
yk+1 = yk+ h · f (xk, yk) (5)
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), (6)
e quindi
y(xk+1) ≈ y (xk) + h · f (xk+1, y (xk+1)). (7)
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), (8)
ove y0 = y (x0).
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
Osservazione
Il problema di Cauchy `e definito da
y′(x) = f (x, y (x)), x ≥ x 0
y(x0) = y0
(9)
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) (10)
e Eulero implicito
yk+1 = yk + h · f (xk+1, yk+1), y0 = y (x0) (11)
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 (9) 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 dice convergente 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 con ordine
Analisi convergenza, I
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, e en= yn− un= (yn− un∗) + (u ∗ n− un) (12) dove u∗ n= yn−1+ h · f (xn−1, yn−1), un= un−1+ h · f (xn−1, un−1).
Il metodo converge se entrambi i termini a secondo membro di (12) convergono a 0 per h → 0. Osserviamo che la prima sequenza
parte dal valore assunto dalla soluzione in xn, mentre la seconda da
Analisi convergenza, II
Se la derivata seconda di y esiste ed `e continua allora si dimostra che per quanto concerne la sequenza di Eulero esplicito,
yn− u∗n= (h2/2) · y ′′ (ξn) per qualche ξn∈ (tn−1, tn). La quantit`a τn(h) = (yn− un∗)/h
si chiama errore locale di troncamentodel metodo, mentre
τ (h) = max
n=0,...|τn(h)|
Analisi convergenza, III
Sotto queste condizioni, per il metodo di Eulero espl., posto
M = maxx ∈I|y′′(x)| abbiamo τ (h) → 0 per h → 0 in quanto
0 ≤ τ (h) ≤ Mh/2.
In generale, un metodo per cui τ (h) → 0 per h → 0 si dice
consistente. Da (12) abbiamo
|en| = |yn− un| ≤ |yn− un∗| + |u ∗
n− un| ≤ h|τ (h)| + |un∗− un| (13)
Consideriamo ora il termine u∗
n− un. Se f `e L-Lips. (rispetto al
secondo argomento) si prova che |u∗
n− un| ≤ (1 + hL)|en−1| e
|en| ≤ h|τ (h)| + (1 + hL)|en−1|
≤ h|τ (h)| + (1 + hL)(h|τ (h)| + (1 + hL)|en−2|)
Analisi convergenza, IV
Di conseguenza, ragionando induttivamente abbiamo da
1 + s + . . . + sk = (1 − sk+1)/(1 − s) che essendo |e 0| = 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)|
Osservato che (1 + hL)n≤ exp (nhL) e che nh = x
n− x0 , si ottiene |en| ≤ exp (L(xn− x0)) − 1 L τ (h) ≤ exp (L(xfin− x0)) − 1 L · Mh 2
e di conseguenza, da (12), possiamo dire che il metodo di Eulero
Metodi linear multistep
Posto h > 0, xn= x0+ nh ed n ≥ 0, un metodo si dice linear
multistep (abbr. LM) a p + 1 passi, 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, . . . (14)
noti i valori uk ≈ y (xk) per k < p e supposto ap, bp6= 0.
Si dimostra che un metodo LM `e consistente se 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 ha ordine q
Metodi linear multistep: Adams
Da y′ (x) = f (x, y (x)) e y (xn+1) = y (xn−m) + Rxn+1 xn−my ′ (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 puntixn+γ, . . . , 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
Convergenza linear 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 sia consistente. 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 LM converge ed inoltre esistono C1, C2 positive
tali che per ogni n
Metodi di Eulero in Matlab
Metodi di Eulero in Matlab
Codice di Eulero implicito, eseguito da Atkinson, Han, Steward: 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 ) ;
Esercizio
Esercizio:
◮ Implementare i metodi LM della tabella precedente.
◮ Per ognuno di questi, approssimare la soluzione dell’equazione
test dell’esempio 1, nell’intervallo [0, 10], in N punti
equispaziati xn, con N = 2, 4, 8, 16, 32, descrivendone l’errore
kyn− unk∞, dove yn= y (xn) e un l’approssimazione fornita
Runge Kutta, I
Consideriamo un metodo numerico che definisca una sequenza un
t.c.
y(xn+1) ≈ un+1 = un+ F (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
Runge Kutta, II
RIcordiamo che per definizione di errore locale di troncamento: τ (x, h) = y (x + h) − u(x + 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, III
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) (16) 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) (17)
Quindi, per confronto tra (15), (16), (17), se γ1+ γ2= 1,
Runge Kutta 4
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 = h · f (tn+ h 2, un+ h· f1 2 ) f3 = h · f (tn+ h 2· h, un+ h 2f2) f4 = h · f (tn+ h, un+ h · f3) (18)
Assoluta stabilit´
a, I
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
y′(x) = λy (x), x ≥ 0
y(0) = 1 (19)
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
Assoluta stabilit´
a, II
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, per x → ∞.
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)(x
Assoluta stabilit´
a, III
Nel caso del metodo di Eulero esplicito, si dimostra che ci`o accade
se |1 + hλ| < 1, mentre per il metodo di Eulero implicito ci`o si realizza se |1 − hλ| > 1 cio`e qualsiasi sia h indipendentemente da λ con ℜ(λ) < 0 .
Assoluta stabilit´
a, esercizio
Esercizio: Approssimare per λ = −100 il valore assunto dalla soluzione y del problema di Cauchy
y′(x) = λy (x), x ≥ 0
y(0) = 1 (20)
nel punto x = 0.2. A tal proposito si utilizzano i metodi di Eulero esplicito e Eulero implicito con passi h = 0.1, h = 0.05, h = 0.02,