Sei sulla pagina 1di 3

.

Laboratorio IX

Equazioni differenziali ordinarie II

Metodi di Runge–Kutta
Dato un generico problema di Cauchy:
(
y 0 (t) = f (t, y), t0 < t ≤ tmax ,
(1.1)
y(t0 ) = y0 ,

i metodi numerici utilizzati per risolvere il problema (1.1) si basano sulla seguente strategia:

1. stabilire un passo di avanzamento temporale h;


2. suddividere l’intervallo temporale [t0 , tmax ] in un numero Nh di sottointervalli

Nh = (tmax − t0 )/h

di egual ampiezza h;
3. per ogni istante temporale discreto tn , con t0 < tn ≤ tmax , si calcola il valore incognito un
che approssima la soluzione di (1.1) yn = y(tn ).

L’insieme dei valori {u0 = y0 , u1 , . . . , uNh } rappresenta la soluzione numerica di (1.1).


Il metodo di Runge–Kutta è un metodo ad un passo, ma rispetto ad Eulero in avanti consente
di raggiungere un ordine di accuratezza più elevato. Ad ogni passo, la soluzione numerica è
calcolata secondo la seguente formula:

u0 = y0 , un+1 = un + h6 (K1 + 2K2 + 2K3 + K4 ),

dove
K1 = f (tn , un ),
h h
K2 = f (tn + , un + K1 ),
2 2
h h
K3 = f (tn + , un + K2 ),
2 2
K4 = f (tn+1 , un + hK3 ).
In particolare, questo è un metodo esplicito di ordine 4 rispetto ad h e, ad ogni passo temporale,
richiede quattro valutazioni di f . Una variante a 6 stadi di questo metodo, che utilizza anche un
passo di integrazione variabile, è implementata nella funzione Matlab ode45.
Laboratorio IX Equazioni differenziali ordinarie II

Esercizio 9.1

Si consideri il problema di Cauchy


(
y 0 (t) = −ty(t), per t0 < t ≤ tmax ,
(1.2)
y(t0 ) = 1,

con t0 = 0 e tmax = 5.

1. Si risolva il problema (1.2) con il metodo di Eulero in avanti, utilizzando la funzione


eulero avanti.m, con passo h = 0.01, e si calcoli l’errore assoluto

eh = max |y(tn ) − un | .
tn ∈[t0 ,tmax ]

2. Si risolva, ora, il problema (1.2) con il metodo di Runge–Kutta implementato in MatLab


nelle function ode23 e si calcoli l’errore assoluto.
Per il comando ode23 usare le seguenti opzioni:
o p t i o n s = o d e s e t ( ’ RelTol ’ , 1 e −8 , ’ AbsTol ’ , 1 e −8).

3. Si confrontino gli errori assoluti dei due metodi rispetto al numero di istanti temporali
utilizzati.

4. Si ripeta il punto 2. utilizzando un metodo di Runge–Kutta di ordine superiore usando la


function ode45. Cosa si può concludere?

Esercizio 9.2

Si consideri l’equazione che descrive l’oscillatore armonico smorzato e forzato data da



mẍ = −kx − γ ẋ + f0 cos(Ωt), t0 < t ≤ tmax ,

ẋ(t0 ) = v0 ,

x(t0 ) = x0 ,

dove m è la massa dell’oggetto attaccato alla molla, k la costante elastica della molla, γ il
coefficiente di smorzamento e f0 cos(Ωt) il termine forzante di ampiezza f0 e frequenza Ω.
La pulsazione dell’oscillazione è definita come
r
k
ω= .
m
Si risolvano i seguenti punti.

1. Si scriva l’equazione dell’oscillatore armonico come un sistema di equazioni differenziali


ordinarie del primo ordine.

–2–
Laboratorio IX Equazioni differenziali ordinarie II

2. Si risolva il problema differenziale ottenuto con Eulero in avanti. A tal scopo, si modifichi
la funzione eulero avanti.m in modo che gestisca correttamente anche il caso vettoriale.
Si approssimi la soluzione per t0 = 0, tmax = 1, m = 1, k = 100, v0 = 0, x0 = 1, γ = 0,
f0 = 0. Si confronti la soluzione esatta x(t) = cos(10t) con quella ottenuta imponendo
h = 0.001 , h = 0.01 e h = 0.1. Si commentino i risultati.

3. Mediante la function Matlab ode45 si sperimentino i seguenti casi visualizzandone la


soluzione. Si ponga per ciascun caso t0 = 0, tmax = 10, m = 1, k = 4, v0 = 1 e x0 = 0.
(a) Oscillatore armonico semplice, ovvero con γ = f0 = 0. La soluzione esatta è

x(t) = A cos (ωt + θ0 ) ,

dove
 
v0 v0
A=− , θ0 = arctan .
sin(θ0 )ω ωx0

(b) Oscillatore armonico sovra-smorzato, ovvero con f0 = 0 e con γ 2 > 4mk. Si assuma
γ = 5, la soluzione esatta è

x(t) = c0 eλ1 t + c1 eλ2 t ,

dove
p p
−γ + γ 2 − 4mk −γ − γ 2 − 4mk
λ1 = , λ2 = ,
2m 2m
v0 − x0 λ1
c1 = , c0 = x0 − c1 .
λ2 − λ1

(c) Oscillatore armonico sotto-smorzato, ovvero con f0 = 0 e con γ 2 < 4mk. Si assuma
γ = 1, la soluzione esatta è
γ
x(t) = e− 2m t (A cos ω1 t + B sin ω1 t) ,

dove √
4mk − γ v0 γx0
ω1 = , A = x0 , B= + .
2m ω1 2mω1
(d) Oscillatore armonico forzato. Si assuma tmax = 30, γ = 1, f0 = 1 e Ω = 0.5.
Si discutano i risultati ottenuti alla luce dei risultati teorici.

–3–