ode
est en fait un environnement qui donne
accès à la plupart des méthodes numériques classiques
pour la résolution des équations différentielles ordinaires
(voir help ode
).
A titre d'exemple nous commençons par le problème de Cauchy en dimension
1 suivant :
ode
est très stable.
deff("yprim=f(t,y)","yprim=y*cos(t)") t0=0; y0=1; t=[0:0.01:10]; sol=ode(y0,t0,t,f); max(abs(sol-exp(sin(t)))) // l'erreur est tres faible t0=0; y0=1; t=[0:0.1:100]; sol=ode(y0,t0,t,f); max(abs(sol-exp(sin(t)))) // l'erreur reste tres faibleLa situation n'est pas toujours aussi favorable. Considérons par exemple , solution du problème de Cauchy suivant.
deff("yprim=f(t,y)","yprim=y") t0=0; y0=1; t=[0:0.01:10]; sol=ode(y0,t0,t,f); max(abs(sol-exp(t))) // l'erreur est raisonnable t0=0; y0=1; t=[0:0.1:100]; sol=ode(y0,t0,t,f); max(abs(sol-exp(t))) // l'erreur est enormeVoici en dimension 2 la résolution d'un système différentiel de Lotka-Volterra, avec superposition de la trajectoire calculée et du champ de vecteurs défini par le système (figure 9).
// // definition du systeme // deff("yprim=f(t,y)",.. ["yprim1=y(1)-y(1)*y(2)";.. "yprim2=-2*y(2)+2*y(1)*y(2)";.. "yprim=[yprim1;yprim2]"]) // // champ de vecteurs // xmin=0; xmax=3; ymin=0; ymax=3; fx=xmin:0.3:xmax; fy=ymin:0.3:ymax; xbasc() fchamp(f,1,fx,fy) // //resolution du systeme // t0=0; tmax=5; pas=0.1 t=t0:pas:tmax; y0=[2;2]; sol=ode(y0,t0,t,f); // // trace de la trajectoire // plot2d(sol(1,:),sol(2,:),5,"000")
|