Sunteți pe pagina 1din 4

LUCRAREA NR.

3 Rezolvarea ecuaiilor difereniale


Aceast lucrare descrie modul de rezolvare numeric n MATLAB a ecuaiilor difereniale. MATLAB-ul are urmtoarele funcii pentru rezolvarea ecuaiilor difereniale: Funcia ode45 ode23 ode113 ode15s ode23s ode23t ode23tb Tipul problemei de rezolvat Ecuaie diferenial cu o scar de timp Ecuaie diferenial cu o scar de timp Ecuaie diferenial cu dou scri de timp Ecuaie diferenial cu dou scri de timp Ecuaie diferenial cu dou scri de timp Ecuaie diferenial cu dou scri de timp Ecuaie diferenial cu dou scri de timp Metoda de integrare Runge-Kutta Runge-Kutta Adams FDN Rosenbrock Metoda trapezelor 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 ecste 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. Examplu: Un exemplu de sistem cu o singur scar de timp este urmtorul, n care este descris micarea unui rigid fr aciunea forelor externe. y1=y2y3 , y2=-y1y3 , y3=-0.51y1y2 , y1(0)=0 y2(0)=1 y3(0)=1

Pentru a simula acest sistem se creeaz o funcie rigid ce conine ecuaiile:

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); Precizia cu care sunt efectuate calculele poate fi modificat utiliznd funcia odeset. Integrarea se face pe intervalul [0 12] cu condiiile iniiale [0 1 1]. 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),'-',T,Y(:,2),'-.',T,Y(:,3),'.') n cazul unei ecuaii difereniale de ordin superior, aceasta trebuie transformat ntr-un sistem de ecuaii difereniale de ordinul I de forma urmtoare: y=f(t,y) Orice ecuaie de forma y(n)=f(t,y,y,,y(n-1)) cu ajutorul urmtoarelor substituii: y1=y, y2=y, , yn=y(n-1) poate fi transformat n urmtorul sistem de ecuaii difereniale de ordinul I: y1=y2 y2=y3 : : yn= f(t,y1,y2,,yn) 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 dydx dydx dydx = = = = odefun(x,y) odefun(x,y,p1,p2,...) odefun(x,y,parameters) odefun(x,y,parameters,p1,p2,...)

Argumentul parameters este vectorul parametrilor necunoscui iar p1, p2, 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) 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 p1, p2, 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, unde x [0,4] , i condiiile pe frontier sunt: y(0)=0 y(4)=-2 Soluie: Mai nti ecuaia trebuie scris sub forma unui sistem de dou ecuaii difereniale de ordinul I: y1=y2 y2=-|y1|, unde y1=y i y2=y. Funciile corespunztoare sistemului i condiiilor iniiale pe frontier sunt sistem i ci: function dydx = sistem(x,y) dydx = [ y(2) -abs(y(1))]; function res = ci(ya,yb) res = [ ya(1) yb(1) + 2]; Apoximarea iniial a soluiei n cinci puncte uniform distribuite n intervalul [0,4] i cu aproximrile iniiale y1(x)=1 i y2(x)=0 este dat de funcia: solinit = bvpinit(linspace(0,4,5),[1 0]);

Problema este rezolvat cu comanda: sol = bvp4c(@twoode,@twobc,solinit); Soluia numeric este evaluat n 100 de puncte uniform distribuite i este plotat cu comenzile: y = bvpval(sol,linspace(0,4)); x= linspace(0,4); plot(x,y(1,:)); 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 urmtoare: y+5yy2+y=0 pe intervalul [0, 10] n condiiile iniiale: y(0)=0, y(0)=0.5. S se reprezinte grafic i evoluia n planul fazelor. 2. S se determine soluiile ecuaiei difereniale urmtoare: y"+ ( y 2 1)y '+ y = 0 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: y+y+ysin(y)+y+1=0 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. Aceeai problem de la punctul 4 pentru ecuaia: y+7y+ytg(y)+3y+1=0 n condiiile iniiale y(0)=0.4, y(0)=0, y(0)=0.2, pe intervalul [0, 5]. 6. S se determine soluiile ecuaiei difereniale urmtoare: y-3y+y=0 pe intervalul [0,10], cu condiiile pe frontier y(0)=0; y(10)=-5.

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