INDIETRO
 Laboratorio 9
AVANTI

Equazioni differenziali ordinarie: maple

Per avere a disposizione tutte le funzioni necessarie conviene caricare alcune librerie:

with(DEtools):
with(plots):
with(LinearAlgebra):


Si definiscono le equazioni, ed eventualmente le condizioni iniziali:

equaz1:=diff(y(x),x)=2*y(x)-z(x)+1;
equaz2:=diff(z(x),x)=-y(x)+ 2*z(x)-3;
iniz1:=y(0)=0.5;
iniz2:=z(0)=2.3;


A questo punto si prova a risolvere, e ad estrarre due funzioni fy e fz da poter poi utilizzare per esempio per fare un plot.

sol:=dsolve({equaz1,equaz2,iniz1,iniz2});
fy:=unapply(subs(sol,y(x)),x);
fz:=unapply(subs(sol,z(x)),x);
plot({fy(x),fz(x)},x=0..2);


L'opzione numeric forza il solutore a fornire una soluzione numericamente, e in questo caso si ottiene una procedura che puo' essere utilizzata in vari modi a seconda di come si vuole estrarre la routine che interessa dalla struttura ottenuta come soluzione.

sol:=dsolve({equaz1,equaz2,iniz1,iniz2},numeric);
sol(1.5);
odeplot(sol,[x,y(x)],0..2);
plot( x -> op(2,op(2,sol(x))), -1..1 );

Proviamo per esempio a disegnare le isocline della equazione differenziale vista precdentemente:

with(DEtools):
with(plots):
with(LinearAlgebra):
F:=DEplot(D(x)(t)=((3-x(t))*x(t)-sin(t)),x(t),t=0..10,x=0..5):
C:=contourplot((3-x(t))*x(t)-sin(t),t=0..10,x=0..5):
display(C,F);

Oppure proviamo a disegnare sullo stesso grafico le soluzioni con tanti punti iniziali:

with(DEtools):
with(plots):
with(LinearAlgebra):
inits:={seq([0,i/10],i=2..20)}:
DEplot(D(x)(t)=(3-x(t))*x(t)-sin(t),x(t),t=0..5,inits);

 


INDIETRO
Laboratorio Didattico di Matematica Computazionale - Sergio Steffè - AA 2017/2018 - PISA
AVANTI