Outils pour l'ingénieur - TD 9 Cycles (inspiré du TD de Lise Dubouchet) Un cas d'école ************** résoudre sur l'intervale t=[0;15] le système ci-dessus avec les conditions initiales suivantes (ca fait deux problèmes) : On crée un m-file que l'on nomme fun.m: function xp=fun(t,x) xp=[x(2)+x(1)*(1-x(1)^2-x(2)^2); -x(1)+x(2)*(1-x(1)^2-x(2)^2)]; Dans matlab on tape: >> cd OUTIL_INFO/td_9 >> [T Y1]=ode23('fun',[0 15],[0.1 0.01]); >> [T Y2]=ode23('fun',[0 15],[1.1 2.5]); tracer dans un repère orthonormé les courbes correspondant à chacune des solutions (on trace x2 en fonction de x1). = >> axis equal >> hold on >> plot (Y1(:,1),Y1(:,2)) >> plot (Y2(:,1),Y2(:,2),'r') >> hold off dessiner à l'aide de la fonction quiver (regardez l'exemple proposé dans l'aide help quiver) le champs vectoriel: >> [x,y]=meshgrid(-2:0.1:2); >> U=y+x.*(1-x.^2-y.^2); >> V=-x+y.*(1-x.^2-y.^2); >> quiver(x,y,U,V) superposer à ce graphe, les courbes tracées précédemment. >> hold on >> plot (Y1(:,1),Y1(:,2),'b',Y2(:,1),Y2(:,2),'r') Une oscillation entretenue ************************** On crée un nouveau m-file que l'on nomme fun2. function xp=fun2(x,t) xp=[x(2);-x(1)-sign(x(2)-2)]; calculer les courbes sur l'intervale [0 20] pour les conditions initiales >> hold off >> [T Y1]=ode23('fun2',[0 20],[0.2 0.8]); >> [T Y2]=ode23('fun2',[0 20],[0.5 0.5]); >> [T Y3]=ode23('fun2',[0 20],[-2 8]); tracer dans un repère orthonormé les courbes correspondant à chacune des solutions (on trace x2 enfonction de x1). >> axis equal >> hold on >> plot (Y1(:,1),Y1(:,2)) >> plot (Y2(:,1),Y2(:,2),'r') >> plot (Y3(:,1),Y3(:,2),'g') >> hold off dessiner à l'aide de la fonction quiver le champs vectoriel correspondant >> [x,y]=meshgrid(-6:0.5:6); >> U=y; >> V=-x-sign(y-2); >> quiver(x,y,U,V) superposer à ce graphe, les courbes tracées précédemment. >> hold on >> plot(Y1(:,1),Y1(:,2),Y2(:,1),Y2(:,2),'r',Y3(:,1),Y3(:,2),'g')