Shoot the monkey

Illustration av föreläsningsdemonstrationen "skjuta lampglob", där en projektil skjuts mot ett föremål som börjar falla i samma ögonblick som projektilen skjuts iväg. En laserstråle används för att sikta så att projektilen i startögonblicket för sig i riktning rakt mot föremålet.

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;

end
Vi kan sedan följa tidsutvecklingen genom att utnyttja ode23. (Se även help ode23 eller help ode45 eller kör demonstrationen även odedemo i matlab). Följande text kan "klistras" (Paste) rakt in i matlab-fönstret.

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


Läs gärna introduktionskompendium (.ps fil, M. Cederwall, m.fl.) om mekaniska rörelseekvationer i matlab.
http://fy.chalmers.se/~f3aamp/matlab/monkey.html
1997-09-21