Pràctica: RESOLUCIÓ SIMBÒLICA D'EDOs

Podem trobar la solució analítica o simbòlica d'algunes EDOs usant la funció de Matlab dsolve. Vegem-ne alguns exemples.
(1) Trobem la solució general de l' EDO de primer ordre
syms x(t) %definim x(t) com a funcio simbolica
Dx=diff(x,t); %derivada (una altra funcio simbolica)
 
eq= Dx==t^3-5*t*x; %EDO a resoldre
 
xsol=dsolve(eq) %solucio general, que depen d'una constant arbitraria
xsol = 
Afegim, a l'EDO anterior, la condició inicial i trobem la solució del PVI. Per a la solució obtinguda, calculem (com a expressió simbòlica i després el seu valor numèric).
ci= x(0)==2; %condicio inicial
 
xsol1=dsolve(eq,ci) %solucio del PVI
xsol1 = 
 
xx=subs(xsol1,t,3/2) %substituim t per 3/2 a la solucio obtinguda
xx = 
xxnum=eval(xx) %valor numeric de l'expressio anterior
xxnum = 0.3775
(2) Podem fer dependre l'EDO o la condició inicial d'algun paràmetre, que definirem com a variable simbòlica. Com a exemple, resolem el PVI
en funció del paràmetre Després, fixem el valor
syms x(t)
Dx=diff(x,t);
syms a %variable simbolica
 
eq= Dx==a*x+exp(t); %EDO depenent d'un parametre a
ci= x(0)==2;
 
xsol=dsolve(eq) %solucio depenent del parametre
xsol = 
xsolsimp=simplify(xsol) %sovint cal simplificar les solucions obtingudes
xsolsimp = 
 
xsolsimp1=subs(xsolsimp,a,5) %podem fixar un valor concret del parametre
xsolsimp1 = 
És possible que la solució obtinguda no tingui sentit per alguns valors del paràmetre, com a l'exemple anterior quan En aquest cas caldria fer la substitució abans de resoldre l'EDO, i podem veure que la solució és d'un altre tipus.
eq1=subs(eq,a,1);
xsol2=dsolve(eq1,ci) %resolem la nova EDO amb la mateixa condicio inicial
xsol2 = 
(3) Resolem el PVI següent per a una EDO de segon ordre
syms x(t)
Dx=diff(x,t);
D2x=diff(x,t,2); %derivada segona
 
eq= t^2*D2x-t*Dx+x==0;
ci1= x(1)==2;
ci2= Dx(1)==-1;
 
xsol=dsolve(eq,ci1,ci2)
xsol = 
(4) Resolem el PVI següent per a un sistema d'EDOs,
(un focus atractor) i representem la corba solució per a
syms x(t) y(t) %dues funcions simboliques
Dx=diff(x,t);
Dy=diff(y,t);
 
eq1= Dx==2*x-6*y;
eq2= Dy==3*x-4*y;
ci1= x(0)==1;
ci2= y(0)==-5;
 
Xsol=dsolve(eq1,eq2,ci1,ci2); %es crea una estructura Xsol amb camps x,y
xsol=Xsol.x %primer camp de l'estructura Xsol
xsol = 
ysol=Xsol.y %segon camp de l'estructura Xsol
ysol = 
 
close all %tanquem figures anteriors (optatiu)
figure %nova figura
 
tv=0:0.01:4; %rang de valors de t
xv=subs(xsol,tv); %substituim t pel rang de valors tv
yv=subs(ysol,tv);
plot(xv,yv)
________
(c) Numerical Factory (by Pere Gutiérrez)