Sunteți pe pagina 1din 6

Lucrarea nr.

2
1
Rezolvarea ecuaiilor difereniale de ordinul nti

MATLAB are faciliti foarte puternice de rezolvare a problemelor cu valori iniiale pentru
ecuaii difereniale ordinare:
( )
0 0
) (
) ( , ) (
y t y
t y t f t y
dt
d
=
=


Cel mai simplu mod de a rezolva o astfel de problem este de a scrie o funcie care evalueaz f i
de a apela unul dintre rezolvitorii MATLAB. Informaia minim pe care un rezolvitor trebuie s o
primeasc este numele funciei, mulimea valorilor lui t pe care se cere soluia i valoarea iniial
0
y . Rezolvitorii MATLAB accept argumente de intrare i ieire opionale care permit s se
specifice mai mult despre problema matematic i modul de rezolvare a ei.
Fiecare rezolvitor MATLAB este conceput s fie eficient n anumite situaii, dar toi sunt n
esen interschimbabili. Toi rezolvitorii au aceeai sintax, ceea ce ne permite s ncercm
diferite metode numerice atunci cnd nu tim care ar fi cea mai potrivit. Sintaxa este:

[ t , y] =r ezol vi t or ( @f un, t span, y0, opt i uni , p1, p2, . . . )

unde r ezol vi t or este unul din rezolvitorii dai n tabel.

Rezolvitor Tip
problem
Tip algoritm
ode45 non-stiff Pereche Runge-Kutta explicit, cu ordinele 4 i 5

ode23 non-stiff Pereche Runge-Kutta explicit, cu ordinele 2 i 3
ode113 non-stiff Metod cu mai muli pai explicit, cu ordin variabil, ordinele de la 1
la 13
ode15s stiff Metod cu mai muli pai implicit, cu ordin variabil, ordinele de la 1 la 15
ode23s stiff Rosenbrock
ode23t stiff moderat Regula implicit a trapezului, cu ordinele 2 i 3

ode23tb stiff Algoritm Runge-Kutta implicit, ordinele 2 i 3


Argumentele de intrare sunt:

f un specific funcia din membrul drept. In versiunile 6.x este un handler de funcie,iar
n versiunile 5.x este un nume de funcie (n acest caz se scrie f un nu @f un);
t span vector ce specific intervalul de integrare. Dac este un vector cu dou elemente
t span=[ t 0 t f i nal ] , rezolvitorul integreaz de la t 0 la t f i nal . Dac t span are
mai mult de dou elemente rezolvitorul returneaz soluiile n acele puncte. Abscisele
Lucrarea nr. 2
2
trebuie ordonate cresctor sau descresctor. Rezolvitorul nu i alege paii dup valorile
din t span, ci obine valorile n aceste puncte prin prelungiri continue ale formulelor de
baz care au acelai ordin de precizie ca i soluiile calculate n puncte.
opt i uni opiunile permit setarea unor parametrii ai rezolvitorului i se creaz cu
odeset .

Parametrii de ieire sunt:
t vectorul coloan al absciselor;
y tabloul soluiilor: o linie corespunde unei abscise, iar o coloan unei componente a
soluiei.

Dup opt i uni pot s apar parametrii variabili, p1, p2, . . . care sunt transmii funciei
f un la fiecare apel.

Funcia odeset creaz o structur de opiuni care poate fi transmis unui rezolvitor.
Argumentele lui odeset sunt perechi nume proprietate/valoare proprietate. Sintaxa este
opt i uni =odeset ( nume1 , val oar e1, nume2 , val oar e2, . . . )
Aceasta creaz o structur de opiuni n care proprietile cu numele dat primesc o valoare
specificat. Proprietile nespecificate primesc valori implicite.

Stiff (eapn, rigid, dificil, anevoios) este un concept subtil, dificil i important n rezolvarea
numeric a ecuaiilor difereniale ordinare. El depinde de ecuaia diferenial, de condiiile
iniiale i de metoda numeric. In literatura de specialitate se d urmtoarea caracterizare
computaional a acestui termen:
,,O problem este stiff dac soluia cutat variaz lent, dar exist soluii apropiate care variaz
rapid, astfel c metoda numeric trebuie s utilizeze pai foarte mici pentru a obine rezultate
satisfctoare.
Conceptul de stiffness este o chestiune de eficien. Metodele non-stiff pot rezolva problemele
stiff, dar ntr-un timp foarte lung.

Exempl u:
S se integreze ecuaia diferenial
( ) ( ) t cos e t y t y
t
5 5 + = '


pe intervalul [0, 3] cu condiia iniial ( ) 0 0 = y

f unct i on yder =ed1( t , y)
%exempl u de ecuat i e di f er ent i al a scal ar a
yder =- y+5*exp( - t ) . *cos( 5*t ) ;
Vom folosi rezolvitorul ode45. Secvena de comenzi MATLAB

>> t span = [ 0, 3] ; yzer o=0;
>> [ t , y] =ode45( @ed1, t span, yzer o) ;
>> pl ot ( t , y, r - - * )
>> xl abel ( t ) , yl abel ( y( t ) )

Lucrarea nr. 2
3
0 0.5 1 1.5 2 2.5 3
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
t
y
(
t
)

Rezolvarea ecuaiilor difereniale de ordin superior

Rezolvitorii Matlab de tipul odeaccept numai ecuaii deifereniale de ordinul nti. Pentru a
rezolva ecuaii difereniale de ordin superior trebuie rescrise ecuaiile sub forma unui sistem
echivalent de ecuaii difereniale de ordinul nti.
Ecuaia diferenial de ordinul n:


( ) ( )
( )
1
,..., , ,

' ' ' =
n n
y y y t f y
la care se asociaz notaiile:


( ) 1
2 1
..., , ,

= ' = =
n
n
y y y y y y
este echivalent cu urmtorul sistem de n ecuaii de ordinul nti:

( )
( )

' ' ' = '


= '
= '
1
3 2
2 1
,..., , ,
n
n
y y y t f y
y y
y y




Exempl u:
S se integreze ecuaia diferenial
( ) ( ) 0 ) ( 3 2 = + + ' ' t y t y t t y
pe intervalul [0, 5] cu condiiile iniiale ( ) 3 0 = y i ( ) 1 0 = ' y


Lucrarea nr. 2
4
Se noteaz :
y y
y y
' =
=
2
1


Rezult sistemul de dou ecuaii difereniale de ordinul I.

=
'
=
'
2 1
1 2 2
3 2
y y
y y t y


f unct i on dy=si st em1( t , y)
dy=[ y( 2) ; - 2*t *y( 2) - 3*y( 1) ] ;

>> [ t , y] =ode23( @si st em1, [ 0, 5] , [ 3; 1] ) ;
>> pl ot ( t , y)

Exempl u:
S se rezolve sistemul de ecuaii difereniale
( )

+ =
+ =
=
c t y t y b t y
dt
d
t y a t y t y
dt
d
t y t y t y
dt
d
) ( ) ( ) (
) ( ) ( ) (
) ( ) ( ) (
1 3 3
2 1 2
3 2 1

unde a, b, c sunt parametri reali
pe intervalul [0, 100] cu condiia iniial ( ) | |
T
y 1 , 1 , 1 0 = i cu seturile de parametri
(a,b,c)=(0.2,0.2,2.5) i (a,b,c)=(0.2,0.2,5)

f unct i on yd=si st em2( t , y, a, b, c)
%si st emde ecuat i i di f er ent i al e par amet r i zat
yd = [ - y( 2) - y( 3) ; y( 1) +a*y( 2) ; b+y( 3) *( y( 1) - c) ] ;

t span = [ 0, 100] ; y0 = [ 1; 1; 1] ;
opt i ons = odeset ( ' AbsTol ' , 1e- 7, ' Rel Tol ' , 1e- 4) ;
a=0. 2; b=0. 2; c1=2. 5; c2=5;
[ t , y] = ode45( @si st em2, t span, y0, opt i ons, a, b, c1) ;
[ t 2, y2] = ode45( @si st em2, t span, y0, opt i ons, a, b, c2) ;
subpl ot ( 2, 2, 1) , pl ot 3( y( : , 1) , y( : , 2) , y( : , 3) )
t i t l e( ' c=2. 5' ) , gr i d
xl abel ( ' y_1( t ) ' ) , yl abel ( ' y_2( t ) ' ) , zl abel ( ' y_3( t ) ' ) ;
subpl ot ( 2, 2, 2) , pl ot 3( y2( : , 1) , y2( : , 2) , y2( : , 3) )
t i t l e( ' c=5' ) , gr i d
xl abel ( ' y_1( t ) ' ) , yl abel ( ' y_2( t ) ' ) , zl abel ( ' y_3( t ) ' ) ;
subpl ot ( 2, 2, 3) ; pl ot ( y( : , 1) , y( : , 2) )
t i t l e( ' c=2. 5' )
Lucrarea nr. 2
5
xl abel ( ' y_1( t ) ' ) , yl abel ( ' y_2( t ) ' )
subpl ot ( 2, 2, 4) ; pl ot ( y2( : , 1) , y2( : , 2) )
t i t l e( ' c=5' )
xl abel ( ' y_1( t ) ' ) , yl abel ( ' y_2( t ) ' )

Rezultate:

-5
0
5
-5
0
5
0
2
4
y
1
(t)
c=2.5
y
2
(t)
y
3
(
t
)
-10
0
10
20
-10
0
10
0
10
20
y
1
(t)
c=5
y
2
(t)
y
3
(
t
)
-4 -2 0 2 4 6
-6
-4
-2
0
2
4
c=2.5
y
1
(t)
y
2
(
t
)
-10 -5 0 5 10 15
-10
-5
0
5
10
c=5
y
1
(t)
y
2
(
t
)

Aplicaie: Circuite electrice n regim tranzitoriu

Un condensator de capacitate C ncrcat la tensiunea U
0
este cuplat la bornele unui circuit care
cuprinde un rezistor de rezisten R n serie cu o bobin avnd inductivitatea L.
S se scrie un program pentru calculul i reprezentarea grafic a variaiei n timp a intensitii
curentului n circuit.
Funcia de variaie n timp a tensiunii la bornele condensatorului satisface ecuaia diferenial de
ordinul doi:
0
2
2
= + +
c
c c
u
dt
du
RC
dt
u d
LC
cu condiiile iniiale:
0
) 0 ( U u
c
=
0
0
=
= t
c
dt
du

Lucrarea nr. 2
6

Curentul n circuit se determin cu relaia:
dt
du
C i
c
=

Date numerice:
U
0
=100 V; C =100 F; L =10 mH; R =3.5 O

Sursa MATLAB (function m-file)
f unct i on ucond = c_t r anz( t , uc)
L=10e- 3;
C=100e- 6;
R=3. 5;
ucond( 1, : ) =- R/ L*uc( 1) - 1/ ( L*C) *uc( 2) ;
ucond( 2, : ) =uc( 1) ;

Sursa MATLAB (m-file)
%Apl i cat i e - ci r cui t e el ect r i ce i n r egi mt r anzi t or i u
U0=100;
t 0=0;
t f =1e- 1;
C=100e- 6;
[ t , uc] =ode23( @c_t r anz, [ t 0 t f ] , [ 0, U0] ) ;
i c=- C*uc( : , 1) ;
pl ot ( t , i c) ;

Rezultat variatia in timp a curentului in circuit
0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1
-6
-4
-2
0
2
4
6
8