Sunteți pe pagina 1din 4

Bazele Automaticii Neliniare

Biodinamic Neliniar. Aplicaii la Inteligena Artificial


1

REZOLVAREA NUMERIC A ECUAIILOR DIFERENIALE


Lucrarea descrie modul de rezolvare numeric n MATLAB a ecuaiilor difereniale ordinare de
ordinul n cu coeficieni constani. Pachetul software MATLAB are urmtoarele funcii pentru rezolvarea
ecuaiilor difereniale:
Funcia Tipul problemei de rezolvat Metoda de integrare
ode45 Ecuaie diferenial cu o scar de timp Runge-Kutta
ode23 Ecuaie diferenial cu o scar de timp Runge-Kutta
ode113 Ecuaie diferenial cu dou scri de timp Adams
ode15s Ecuaie diferenial cu dou scri de timp FDN
ode23s Ecuaie diferenial cu dou scri de timp Rosenbrock
ode23t Ecuaie diferenial cu dou scri de timp Metoda trapezelor
ode23tb Ecuaie diferenial cu dou scri de timp TR-BDF2

unde FDN sunt formule de difereniere numeric iar TR-BDF2 aplic mai nti o metod Runge-Kutta iar
n faza a doua o metod de difereniere napoi de ordinul doi.

Sintaxa acestor funcii este urmtoarea:

[T,Y] = solver(odefun,tspan,y0)
[T,Y] = solver(odefun,tspan,y0,options)
[T,Y] = solver(odefun,tspan,y0,options,p1,p2...)

unde solver este una din funciile MATLAB ode45, ode23, ode113, ode15s, ode23s,
ode23t, sau ode23tb.
Argumentul odefun este o funcie ce evalueaz membrul drept al ecuaiei difereniale. Toate
aceste funcii pot rezolva ecuaii de forma: y=f(t,y) sau sisteme de ecuaii difereniale de forma:
M(t,y)y=f(t,y), unde M(t,y) este o matrice. Funcia ode23s poate rezolva numai sisteme cu matrici M
constante, iar funciile ode15s i ode23t pot rezolva sisteme pentru care matricea M este singular.
Parametrul tspan este un vector ce specific intervalul de integrare, [t0 tf]. Pentru a obine
soluiile n anumite momente de timp se utilizeaz forma:
tspan = [t0,t1,...,tf].
Parametrul y0 este un vector ce conine condiiile iniiale.
Pentru utilizarea unor argumente opionale de integrare se utilizeaz funcia odeset.
Parametrii p1,p2... sunt parametrii opionali.

Exemplu: Un exemplu de sistem cu o singur scar de timp este urmtorul, n care este descris
micarea unui rigid fr aciunea forelor externe.
y
1
=y
2
y
3
, y
1
(0)=0
y
2
=-y
1
y
3
, y
2
(0)=1
y
3
=-0.51y
1
y
2
, y
3
(0)=1
Pentru a simula acest sistem se creeaz:
a) un fiier funcie MATLAB rigid.m ce conine ecuaiile sistemului:
function dy = rigid(t,y)
dy = zeros(3,1); % aloca spatiu pentru un vector coloana
dy(1) = y(2) * y(3);
dy(2) = -y(1) * y(3);
dy(3) = -0.51 * y(1) * y(2);

b) un fiier MATLAB ce va calcula soluiile numerice prin integrarea sistemului folosind funcia
solver adecvat acestuia. Precizia cu care sunt efectuate calculele poate fi modificat utiliznd funcia
Bazele Automaticii Neliniare
Biodinamic Neliniar. Aplicaii la Inteligena Artificial
2
odeset. Integrarea se face pe intervalul [0 12] cu condiiile iniiale [0 1 1]. Evoluia n timp a soluiilor
este apoi reprezentat grafic. Se pot reprezenta de asemenea evoluiile n planul fazelor.

options = odeset('RelTol',1e-4,'AbsTol',[1e-4 1e-4 1e-5]);
[T,Y] = ode45(@rigid,[0 12],[0 1 1],options);
plot(T,Y(:,1),'r',T,Y(:,2),'g',T,Y(:,3),'b')

n cazul unei ecuaii difereniale de ordin superior, aceasta trebuie transformat ntr-un sistem de
ecuaii difereniale de ordinul I scris n forma Cauchy.

Transformarea ecuaiilor difereniale ordinare de ordinul n ntr-un sistem de n ecuaii difereniale de
ordinul I scrise n forma Cauchy
Fie ecuaia diferenial ordinar de ordinul n cu coeficieni constani

( ) ( )
) ( ...
0 1
1
1
t u y a y a y a y
n
n
n
= + ' + + +

. (1)
Fcnd notaiile

=
' ' =
' =
=
) 1 (
3
2
1
....... .......
n
n
y y
y y
y y
y y
(2)
aceasta se va transforma n urmtorul sistem de n ecuaii difereniale ordinare de ordinul I, sistem care
este n forma Cauchy:

+ = '
= '
= '

) ( ..
...... ........ ...... ......... ....... .......
1 2 1 1 0
3 2
2 1
t u y a y a y a y
y y
y y
n n n
(3)

Pentru rezolvarea ecuaiilor difereniale cu condiii pe frontier se utilizeaz funcia bvp4c.
Acest funcie rezolv o ecuaie de forma y=f (t,y)pe intervalul [a,b] i care respect condiiile pe
frontier ci(y(a), y(b))=0. Funcia bvp4c are una din sintaxele urmtoare:
sol = bvp4c(odefun,bcfun,solinit)
sol = bvp4c(odefun,bcfun,solinit,options)
sol = bvp4c(odefun,bcfun,solinit,options,p1,p2...)
Argumentul odefun este o funcie ce evalueaz ecuaiile difereniale f(x,y). Ea poate avea una din
formele urmtoare:
dydx = odefun(x,y)
dydx = odefun(x,y,p1,p2,...)
dydx = odefun(x,y,parameters)
dydx = odefun(x,y,parameters,p1,p2,...)
Argumentul parameters este vectorul parametrilor necunoscui iar p
1
, p
2
, sunt parametrii
cunoscui. Ieirea dydx este un vector coloan.
Argumentul bcfun este o funcie ce calculeaz restul pentru condiiile pe frontier. Ea poate avea una
din formele urmtoare:
res = bcfun(ya,yb)
res = bcfun(ya,yb,p1,p2,...)
res = bcfun(ya,yb,parameters)
Bazele Automaticii Neliniare
Biodinamic Neliniar. Aplicaii la Inteligena Artificial
3
res = bcfun(ya,yb,parameters,p1,p2,...)
unde ya i yb sunt vectori coloan corespunztori lui y(a) i y(b).
Argumentul parameters este vectorul parametrilor necunoscui iar p
1
, p
2
, sunt parametrii
cunoscui. Ieirea res este un vector coloan.

Argumentul solinit este o structur cu urmtoarele cmpuri:
- x nodurile reelei de puncte n care se calculeaz soluiile. Condiiile la frontier sunt impuse astfel: a =
solinit.x(1) i b = solinit.x(end).
- y aproximrile iniiale ale soluiei astfel c solinit.y(:,i) este o aproximare a soluiei n nodul
solinit.x(i).
- parameters este un vector opional ce conine aproximrile iniiale pentru parametrii necunoscui.
Structura poate avea orice nume, ns cmpurile trebuie numite x, y, i parameters. Se poate forma
solinit cu ajutorul funciei bvpinit.

Exemplu: S se rezolve ecuaia y+|y|=0, pentru x [4,0] i condiiile pe frontier y(0) = 0, y(4)= -2.

Soluie:
Mai nti ecuaia trebuie scris n forma Cauchy; fie y
1
=y i y
2
=y se obine:
y
1
= y
2

y
2
= -|y
1
|
Funciile corespunztoare sistemului i condiiilor iniiale pe frontier sunt sistem.m i ci.m:
function dydx = sistem(x,y)
dydx = [ y(2); -abs(y(1))];

function res = ci(ya,yb)
res = [ ya(1); yb(1) + 2];
Aproximarea iniial a soluiei n cinci puncte uniform distribuite n intervalul [0,4] i cu aproximrile
iniiale y
1
(x)=1 i y
2
(x)=0 este dat de funcia:
solinit = bvpinit(linspace(0,4,5),[1 0]);
Problema este rezolvat cu comanda:
sol = bvp4c(@sistem,@ci,solinit);
Soluia numeric este evaluat n 100 de puncte uniform distribuite i este reprezentat grafic n plan cu
comenzile:
x = linspace(0,4); % 100 de puncte egal spatiate intre 0 si 10
y = deval(sol,x) % evaluare numerica
plot(x,y(1,:)) % reprezentare grafic

O alt soluie a acestei probleme poate fi obinut schimbnd condiiile iniiale:
solinit = bvpinit(linspace(0,4,5),[-1 0]);

TEM:
1. S se determine soluiile ecuaiei difereniale de mai jos pe intervalul [0,100] secunde, cunoscnd
condiiile iniiale ( ) ( ) 0 0 , 5 . 0 0
'
= = y y :
0 5
2
= + ' + ' ' y y y y
S se reprezinte grafic evoluia n timp a soluiilor i evoluia n planul fazelor.

2. S se determine soluiile ecuaiei difereniale urmtoare:
0 ) 1 (
2
= + ' + ' ' y y y y
Bazele Automaticii Neliniare
Biodinamic Neliniar. Aplicaii la Inteligena Artificial
4
pe intervalul [0, 20] n condiiile iniiale: y(0 = 0, y(0) = 2. Parametrul are valoarea 1.

3. Aceeai problem pentru = 1000.

4. S se determine soluiile ecuaiei difereniale urmtoare:

0 1 ) sin( = + + ' ' + ' ' + ' ' ' y y y y y
pe intervalul [0, 10] n condiiile iniiale: y(0) = 0.2, y(0) = 0, y(0) = 0.3. S se mpart ecranul n patru
cadrane utiliznd funcia subplot, i s se vizualizeze simultan dependenele (y,y), (y,y), (y,y)
precum i o reprezentare tridimensional a matricei y folosind funcia mesh.

5. S se determine soluiile ecuaiei difereniale de mai jos pe intervalul [0,10], cu condiiile pe frontier
y(0) = 0; y(10) = -5.
0 3 = + ' ' ' y y y

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