//lancement affichage xset("color",1); titlepage(["résolution numérique d une EDO";" ";"un ojbet posé sur un plateau";" ";"oscillant verticalement"]) xtitle("(click gauche pour démarrer, click droit pour arrêter)") [c_i,c_x,c_y,c_w]=xclick(); result=["4","10"]; while (c_i<>2)&(c_i<>5) //tant qu'on a pas fait un click droit //choix des paramètres w et T result=x_mdialog("paramétrage",["fréquence de l''oscillation w=","durée de la simulation T="],result); if result<>[] then execstr("w="+result(1)+"; T="+result(2)); xbasc() clear_pixmap() //initialisations g=9.81; v=0;z=0;dt=0.01;z0=0; rect=[-3,-1.5,3,2.5]; x=[-1:0.05:1]'; winnum=winsid() ; toolbar(winnum(1),'off'); xtitle("(click gauche pour démarrer, click droit pour arrêter)") plot2d(x,z0*ones(x),1,frameflag=1,axesflag=1,rect=rect) xset("color",2) xfrect(-1,z0,2,0.01) //le plateau xset("color",5) xfrect(-0.5,z+0.5,1,0.5) //l'ojet xset("color",1); show_pixmap() [c_i,x,y,c_w]=xclick(); xset("pixmap",1)//ouverture du buffer video for t=0:dt:T z0=sin(w*t);//position du plateau R=g-(w^2)*sin(w*t);//force de réaction if (z>z0+0.051)|(R<0) then R=0;//nulle si on décolle du plateau end a=R-g; // acceleration v=v+a*dt;// vitesse z=z+v*dt;//position if z