Documente Academic
Documente Profesional
Documente Cultură
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
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.