Sunteți pe pagina 1din 6

Lucrarea nr.

Rezolvarea ecuaiilor difereniale de ordinul nti


MATLAB are faciliti foarte puternice de rezolvare a problemelor cu valori iniiale pentru
ecuaii difereniale ordinare:
d
y (t ) f t , y(t )
dt
y(t 0 ) y 0
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
y0 . 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]=rezolvitor(@fun,tspan,y0,optiuni,p1,p2,...)
unde rezolvitor 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:

fun 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 fun nu @fun);
tspan vector ce specific intervalul de integrare. Dac este un vector cu dou elemente
tspan=[t0 tfinal], rezolvitorul integreaz de la t0 la tfinal. Dac tspan are
mai mult de dou elemente rezolvitorul returneaz soluiile n acele puncte. Abscisele

Lucrarea nr. 2

trebuie ordonate cresctor sau descresctor. Rezolvitorul nu i alege paii dup valorile
din tspan, 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.
optiuni 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 optiuni pot s apar parametrii variabili, p1, p2, ... care sunt transmii funciei
fun 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
optiuni=odeset(nume1, valoare1, nume2, valoare2, ...)
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.
Exemplu:
S se integreze ecuaia diferenial
y t y t 5 e t cos5t
pe intervalul [0, 3] cu condiia iniial y0 0
function yder=ed1(t,y)
%exemplu de ecuatie diferentiala scalara
yder=-y+5*exp(-t).*cos(5*t);
Vom folosi rezolvitorul ode45. Secvena de comenzi MATLAB
>>
>>
>>
>>

tspan = [0,3]; yzero=0;


[t,y]=ode45(@ed1,tspan,yzero);
plot(t,y,r--*)
xlabel(t), ylabel(y(t))

Lucrarea nr. 2

0.8

0.6

y(t)

0.4

0.2

-0.2

-0.4

0.5

1.5

2.5

Rezolvarea ecuaiilor difereniale de ordin superior


Rezolvitorii Matlab de tipul ode accept 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:

y n f t , y , y ,..., y n 1
la care se asociaz notaiile:

y1 y, y 2 y , ..., y n y n 1

este echivalent cu urmtorul sistem de n ecuaii de ordinul nti:

y1 y 2
y y
2
3

y n f t , y , y ,..., y n 1

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

Lucrarea nr. 2

Se noteaz :
y1 y
y2 y
Rezult sistemul de dou ecuaii difereniale de ordinul I.
y 2t y 3 y
2
2
1

y1 y 2
function dy=sistem1(t,y)
dy=[y(2);-2*t*y(2)-3*y(1)];
>> [t,y]=ode23(@sistem1,[0,5],[3;1]);
>> plot(t,y)
Exemplu:
S se rezolve sistemul de ecuaii difereniale
d
dt y1 (t ) y 2 (t ) y3 (t )

d
y 2 (t ) y1 (t ) a y 2 (t )
dt
d
dt y 3 (t ) b y 3 (t ) y1 (t ) c

unde a, b, c sunt parametri reali


pe intervalul [0, 100] cu condiia iniial
(a,b,c)=(0.2,0.2,2.5) i (a,b,c)=(0.2,0.2,5)

y0 1,1,1 i cu seturile de parametri


T

function yd=sistem2(t,y,a,b,c)
%sistem de ecuatii diferentiale parametrizat
yd = [-y(2)-y(3); y(1)+a*y(2); b+y(3)*(y(1)-c)];
tspan = [0,100]; y0 = [1;1;1];
options = odeset('AbsTol',1e-7,'RelTol',1e-4);
a=0.2; b=0.2; c1=2.5; c2=5;
[t,y] = ode45(@sistem2,tspan,y0,options,a,b,c1);
[t2,y2] = ode45(@sistem2,tspan,y0,options,a,b,c2);
subplot(2,2,1), plot3(y(:,1),y(:,2),y(:,3))
title('c=2.5'), grid
xlabel('y_1(t)'), ylabel('y_2(t)'), zlabel('y_3(t)');
subplot(2,2,2), plot3(y2(:,1),y2(:,2),y2(:,3))
title('c=5'), grid
xlabel('y_1(t)'), ylabel('y_2(t)'), zlabel('y_3(t)');
subplot(2,2,3); plot(y(:,1),y(:,2))
title('c=2.5')
4

Lucrarea nr. 2

xlabel('y_1(t)'), ylabel('y_2(t)')
subplot(2,2,4); plot(y2(:,1),y2(:,2))
title('c=5')
xlabel('y_1(t)'), ylabel('y_2(t)')
Rezultate:
c=2.5

c=5

20

y 3(t)

y 3(t)

0
5

10

0
10
5

0
y 2(t)

-5

-5

20

y 2(t)

y 1(t)

10
-10

c=2.5

0
-10

y 1(t)

c=5

10

5
y 2(t)

y 2(t)

0
0

-2
-5

-4
-6
-4

-2

-10
-10

y 1(t)

-5

10

15

y 1(t)

Aplicaie: Circuite electrice n regim tranzitoriu


Un condensator de capacitate C ncrcat la tensiunea U0 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:
d 2uc
2

duc
dt t 0

RC

duc

uc 0
dt
dt
cu condiiile iniiale:
uc (0) U 0
LC

Lucrarea nr. 2

Curentul n circuit se determin cu relaia:


du
i C c
dt
Date numerice:
U0 = 100 V; C = 100 F; L = 10 mH; R = 3.5
Sursa MATLAB (function m-file)
function ucond = c_tranz(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)


%Aplicatie - circuite electrice in regim tranzitoriu
U0=100;
t0=0;
tf=1e-1;
C=100e-6;
[t,uc]=ode23(@c_tranz,[t0 tf],[0,U0]);
ic=-C*uc(:,1);
plot(t,ic);

Rezultat variatia in timp a curentului in circuit


8

-2

-4

-6
0

0.01

0.02

0.03

0.04

0.05

0.06

0.07

0.08

0.09

0.1

S-ar putea să vă placă și