Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Esercizio 0
Si consideri il problema di Cauchy utilizzato nella scorsa esercitazione:
0 y(t)
y (t) = f (t, y) = − y(t)2 t ∈ (0, 100]
(1 + t) (1)
y(0) = 1
2(1 + t)
la cui soluzione esatta è y(t) =
(t.2 + 2t + 2)
Si utilizzino le funzioni built-in di Matlabr ode23.m e ode45.m per la soluzione
approssimata del problema di Cauchy in oggetto con la seguente sintassi:
dove f è definita come anonimous function. Si visualizzino i grafici delle soluzioni cosı̀
ricavate. Cosa si nota rispetto alla discretizzazione spaziale?
% Funzione
f = @( t , y ) y . /(1+ t ) −y . ˆ 2 ;
% Dato i n i z i a l e
y0 = 1 ;
% Tempi
tmin = 0 ;
tmax = 1 0 0 ;
% Soluzione esatta
y e s = @( t ) 2 * (1+ t ) . / ( t . ˆ2 + 2 * t + 2 ) ;
t d i s = l i n s p a c e ( tmin , tmax , 1 0 0 0 ) ; % tempi per i l p l o t
y dis = y es ( t dis );
% Runge−Kutta 23
[ t23 , u23 ] = ode23 ( f , [ tmin tmax ] , y0 ) ;
% Runge−Kutta 45
[ t45 , u45 ] = ode45 ( f , [ tmin tmax ] , y0 ) ;
% Grafico soluzione
figure ()
p l o t ( t d i s , y d i s , t45 , u45 , '−−* ' , ' l i n e w i d t h ' ,2)
l e g e n d ( ' S o l u z i o n e e s a t t a ' , ' ode45 ' )
t i t l e ( ' Soluzione ' , ' f o n t s i z e ' ,16)
1
figure ()
p l o t ( t d i s , y d i s , t23 , u23 , ' r−−o ' , ' l i n e w i d t h ' ,2)
l e g e n d ( ' S o l u z i o n e e s a t t a ' , ' ode23 ' )
t i t l e ( ' Soluzione ' , ' f o n t s i z e ' ,16)
Per equazioni differenziali del primo ordine ad una sola incognita la funzione ode23.m
(come anche ode45.m) riceve in ingresso il nome della funzione f (t, y) definita come
anonimous function. Bisogna, inoltre, passare gli istanti iniziale e finale dell’intervallo
di tempo in cui è definito il problema e il dato iniziale. Dai grafici riportati in Fig.1
% Runge−Kutta 23
E r r 2 3 = a b s ( u23−y e s ( t 2 3 ) ) ;
% Runge−Kutta 45
E r r 4 5 = a b s ( u45−y e s ( t 4 5 ) ) ;
% Grafico errore
figure ()
s e m i l o g y ( t23 , E r r 2 3 , t45 , E r r 4 5 , ' l i n e w i d t h ' ,2)
l e g e n d ( ' ode23 ' , ' ode45 ' )
t i t l e ( ' Errore ' , ' f o n t s i z e ' ,16)
g r i d on
2
Figura 2: Errore assoluto del problema di Cauchy con ode45 e ode23.
Esercizio 1
L’equazione differenziale di ordine 2 dell’oscillatore smorzato è:
mx00 + cx0 + kx = 0.
x00 + γx0 + ω 2 x = 0.
Si ponga γ = 0.1 e ω 2 = 1.
f (t, y) = [f1 , f2 ]
pertanto non può essere definita come anonimous function ma deve essere implementata
in un file a parte come vera e propria function. La function mms che restituisce la
valutazione dei termini di destra del sistema è allora:
f u n c t i o n f n = mms( t , y )
gamma = 0 . 1 ;
3
omega2 = 1 ;
[ n ,m] = s i z e ( y ) ;
f n = z e r o s ( n ,m) ;
fn (1) = y ( 2 ) ;
f n ( 2 ) = −gamma * y ( 2 ) − omega2 * y ( 1 ) ;
return
2. Risolvere il problema nell’intervallo di tempo (0, 100] con le condizioni iniziali x(0) = 2,
x0 (0) = 0 usando la function ode45 di Matlabr /Octave 1 . Verificare grafica-
mente che la soluzione
p del problema è costituita da un’oscillazione armonica di frequenza
ω1 /2π, con ω1 = 4ω 2 − γ 2 /2, smorzata nel tempo.
Si osservi che per inserire come argomento di ode45 la funzione mms.m è necessario
passare il nome della funzione tra apici: 'mms'. Si noti, inoltre, che il dato iniziale y0
deve essere un vettore contente i dati iniziali relativi a ogni incognita.
La function mms restituisce il vettore dei tempi th e una matrice di due colonne
delle soluzioni u h. Tale matrice contiene nella prima colonna (u h(:,1)) la soluzione
approssimata relativa a y1 (t) mentre nella seconda (u h(:,2)) c’è la soluzione approssi-
mata di y2 (t). La soluzione del problema iniziale (che era costituito da un’equazione
differenziale del secondo ordine in x) è costituita dalla posizione x(t) che corrisponde a
y1 (t). La variabile y2 (t), lo ricordiamo, non è altro che la derivata prima in tempo di x
: x0 (t).
Il grafico della posizione (estratta dalla matrice u h con il comando u h(:,1)) della
massa in funzione del tempo è riportato in Figura 3.
4
armonica di frequenza ωf /2π.
Il sistema in questo caso diventa:
y10 = y2 = f1 (t, y1 , y2 )
0 2
y2 = −γy2 − ω y1 − A0 sin(ωf t) = f2 (t, y1 , y2 )
f u n c t i o n f n = mms forz ( t , y )
gamma = 0 . 1 ;
omega2 = 1 ;
A = 0 .5 ;
wf = 0 . 5 ;
[ n ,m] = s i z e ( y ) ;
f n = z e r o s ( n ,m) ;
fn (1) = y ( 2 ) ;
f n ( 2 ) = −gamma * y ( 2 ) − omega2 * y ( 1 ) − A* s i n ( wf * t ) ;
return
Figura 3: Andamento nel tempo del sistema massa-molla-smorzatore, con e senza forzante esterna.
5
Esercizio 2 - Dalla seconda prova del 02/07/2010
Si consideri il modello SIR che descrive, tramite un sistema di tre equazioni differenziali
ordinarie, la diffusione di un’infezione in una popolazione. Le variabili del modello sono
y1 = S, che modellizza gli individui suscettibili a infezione, y2 = I, gli individui infetti e
y3 = R, gli individui guariti dall’infezione. Il sistema di equazioni differenziali, nell’incognita
y = [y1 , y2 , y3 ]T è: 0
y1 = −αy1 y2 = f1 (t, y1 , y2 , y3 )
0
y = αy1 y2 − βy2 = f2 (t, y1 , y2 , y3 ) (2)
20
y3 = βy2 = f3 (t, y1 , y2 , y3 )
1. Scivere la funzione Matlabr che restituisce la valutazione dei termini noti del sistema.
L’intestazione della function sarà:
f u n c t i o n yp = SIR ( t , y )
% S i s t e m a SIR d e l p r i m o o r d i n e a t r e i n c o g n i t e
alpha = 1;
beta = 1;
yp = z e r o s ( s i z e ( y ) ) ; % r i g a o c o l o n n a ( a s e c o n d a d i y )
yp ( 1 ) = −a l p h a * y ( 1 ) * y ( 2 ) ;
yp ( 2 ) = a l p h a * y ( 1 ) * y (2) − b e t a * y ( 2 ) ;
yp ( 3 ) = b e t a * y ( 2 ) ;
% dati i n i z i a l i
y0 = [ 5 0 . 1 0 ] ;
% e s t r e m i tempi
tmin = 0 ;
tmax = 1 0 ;
% Chiamata a l l a f u n z i o n e ode45 d i Matlab
[ t h s i r , u h s i r ] = ode45 ( ' SIR ' , [ tmin , tmax ] , y0 ) ;
figure ()
p l o t ( t h s i r , u h s i r , '−−o ' , ' linewidth ' ,2);
l e g e n d ( ' S ' , ' I ' , 'R ' )
t i t l e ( ' D i f f u s i o n e d i un ' ' i n f e z i o n e i n una p o p o l a z i o n e ' , ' f o n t s i z e ' ,16)
6
Figura 4: Soluzione del sistema di equazioni differenziali del primo ordine SIR
In questo caso la matrice u h avrà tre colonne, una per ogni variabile yi . Inoltre, nel
caso specifico, tutte e tre le variabili sono incognite iniziali del problema e pertanto
verranno tutte plottate sul grafico (Fig.4). Dall’osservazione del grafico si evince che
all’istante iniziale una minima parte della popolazione è infetta (I), la gran parte può
ammalarsi (S) metre nessuno è ancora guarito (R). Con il passare del tempo parte della
popolazione cominica ad ammalarsi ma contemporaneamente avvendono guarigioni. Il
numero degli individui che possono ammalarsi diminuisce. Infine il numero di malati e
di soggetti che possono contrarre il virus si esaurisce e tutti guariscono!
Si noti che all’istante finale la totalità della popolazione appartiene al gruppo dei guariti,
quindi si deduce che tutti, prima o poi, hanno contratto la malattia.