I matlab arbetar vi, liksom i fallet "harmonisk oscillator", med en vektor y. I detta exempel får y1-y4 avse x, y, vx och vy för projektilen och y5-y8 motsvarande värden för "apan". Vi får alltså dy1/dt=y3 och dy2/dt=y4. Eftersom den endast tyngdkraften verkar under fallet fås accelerationen g i y-led, dvs dy3/dt=0 och dy4/dt =g. För y5-y8 gäller samma ekvationer.
Dessa relationer specificeras genom en liten rutin som lagras med filnamn fallm.m .
function ydot=fallm(t,y) % Fritt fall! (y=[x, y, vx,vy,xm,ym,vxm,vm]) % xdot=vx, vxdot=0, ydot=vy, vydot=g % ymdot=vm, vmdot=g g =- 9.81; % tyngdacceleration % ydot(1)=y(3); % xdot=vx ydot(3)=0; ydot(2)=y(4); ydot(4)=g; ydot(5)=0; ydot(7)=0; ydot(6)=y(8); %Apans fall ydot(8)=g; endVi kan sedan följa tidsutvecklingen genom att utnyttja ode23. (Se även
monkeyx=9; monkeyy=3; %Välj startkoordinater för apan t0=0; g=9.81; x0=0; vx0=6; %begynnelsevillkor y0=1; vy0=vx0*(monkeyy-y0)/(monkeyx-x0); tf=monkeyx/vx0; %Sluta när projektilen är rakt under apans startpunkt! init=[x0,y0,vx0,vy0, monkeyx,monkeyy,0,0]'; [t,y] =ode23('fallm',t0,tf,init); clf plot(y(:,1),y(:,2),'*'),xlabel('x'), ylabel('y'),title('Shoot the monkey') hold on plot(y(:,5),y(:,6),'+') xl=[x0,monkeyx]; yl=[y0,monkeyy]; plot (xl,yl,'-') end
Lycka till med dina egna rörelseekvationer!
Ann-Marie