Approssimazione della soluzione di un problema di Cauchy

Approssimazione della soluzione di un problema di Cauchy
Data una funzione
f : [tI , tF ] × R → R
e un numero reale yI ∈ R si cerca la funzione
y : [tI , tF ] → R
tale che
y 0 (t) = f (t, y (t)) tI ≤ t ≤ tF
y (tI ) = yI .
I metodi numerici per la approssimazione di y
I
Non forniscono una funzione definita in tutti i punti
dell’intervallo [tI , tF ].
I
Forniscono un valore approssimato de y in diversi punti
dell’intervalo. Questi punti si dicono nodi.
I
La soluzione approssimata negli altri punti di [tI , tF ] si ottiene
interpolando.
I nodi si possono prendere distribuiti uniformemente in [tI , tF ]
scegliendo un numero naturale N, definendo h = (tF − tI )/N e
considerando i nodi
tn = tI + n h
0≤n≤N.
Metodo di Eulero
y 0 (t) = f (t, y (t)) tI ≤ t ≤ tF
y (tI ) = yI .
Sia N ∈ N e h =
tF −tI
N
. Chiamiamo tn = tI + n h per 0 ≤ n ≤ N.
u0 = y I
per n = 0, . . . , N − 1
un+1 = un + hf (tn , un ) .
un ≈ y (tn )
Esercizio
Escrivere una funzione di Matlab che implementi il metodo di
Eulero per l’approssimazione della soluzione di un problema di
Cauchy.
Metodi basati su Taylor
Dato il problema di Cauchy
y 0 = −y + t + 1 t ∈ [0, 1]
y (0) = 1 .
(che ha soluzione y (t) = t + e −t )
I
approssimare la soluzione usando il metodo di Eulero con
passo h = 0.1 e passo h = 0.05;
I
confrontare l’errore con passo h = 0.1 e con passo h = 0.05;
I
ripetere usando il metodo di Taylor di ordine 2 e di ordine 4.
Il metodo di Eulero per sistemi di equazioni
Usando il metodo di Eulero approssimare la soluzione di
 0
 y1 = −4y1 − 2y2 + cos t + 4 sin t
y 0 = 3y1 + y2 − 3 sin t
 2
y1 (0) = 0 y2 (0) = −1 .
Soluzione esatta:
(
t ∈ [0, 2]
y1 (t) = 2e −t − 2e −2t + sin t
.
y2 (t) = −3e −t + 2e −2t
y 00 − 2y 0 + 2y = e 2t sin t
y (0) = −0.4
t ∈ [0, 1]
y 0 (0) = −0.6
Soluzione esatta: y (t) = 0.2e 2t (sin t − 2 cos t).
Metodi di Runge-Kutta
I
Metodo di Heun (ordine 2)
I
u0 = y I
per n = 0, . . . , N − 1
k1 = f (tn , un )
k2 = f (tn + h, un + hk1 )
h
un+1 = un + (k1 + k2 )
2
Metodo di Runge-Kutta di ordine 4 (RK4)
u0 = yI
per n = 0, . . . , N − 1
k1 = f (tn , un )
k2 = f (tn + h2 , un + h2 k1 )
k3 = f (tn + h2 , un + h2 k2 )
k4 = f (tn + h, un + hk3 )
h
un+1 = un + (k1 + 2k2 + 2k3 + k4 )
6
Esercizio
I
Scrivere una funzione di Matlab che implementi il metodo di
Heun per lpprossimazione della soluzione di un problem adi
Cauchy.
I
Scrivere una funzione di Matlab che implementi il metodo
RK4.
I
Verificare numericamente l’ordine di convergenza di questi due
metodi.