慢跑者与狗 一个慢跑者在平面上沿椭圆以恒定的速率v=1跑步,设椭圆方程为: x=10+20cost, y=20+5sint. 突然有一只狗攻击他. 这只狗从原点出发,以恒定速率w跑向慢跑者,狗的运动方向始终指向慢跑者.分别求出w=20,w=5时狗的运动轨迹. 1. 模型建立 设时刻t慢跑者的坐标为(X(t),Y(t)),狗的坐标为(x(t),y(t)). 则X=10+20cost, Y=20+15sint, 狗从(0,0)出发,与导弹追踪问题类似,建立狗的运动轨迹的参数方程:
2. 模型求解 To Matlab(chase3) (1) w=20时,建立m-文件eq3.m如下: function dy=eq3(t,y) dy=zeros(2,1); dy(1)=20*(10+20*cos(t)-y(1))/sqrt ((10+20*cos(t)-y(1))^2+(20+15*sin(t)-y(2))^2); dy(2)=20*(20+15*sin(t)-y(2))/sqrt 取t0=0,tf=10,建立主程序chase3.m如下: t0=0;tf=10; [t,y]=ode45('eq3',[t0 tf],[0 0]); T=0:0.1:2*pi; X=10+20*cos(T); Y=20+15*sin(T); plot(X,Y,'-') hold on plot(y(:,1),y(:,2),'*') To Matlab(chase3) 在chase3.m,不断修改tf的值,分别取tf=5, 2.5, 3.5,…,至3.15时, 狗刚好追上慢跑者.
To Matlab(chase4) 返 回 (2) w=5时 建立m-文件eq4.m如下: function dy=eq4(t,y) dy=zeros(2,1); dy(1)=5*(10+20*cos(t)-y(1))/sqrt ((10+20*cos(t)-y(1))^2+(20+15*sin(t)-y(2))^2); dy(2)=5*(20+15*sin(t)-y(2))/sqrt ((10+20*cos(t)- y(1))^2+(20+15*sin(t)-y(2))^2); 取t0=0,tf=10,建立主程序chase4.m如下: t0=0;tf=10; [t,y]=ode45('eq4',[t0 tf],[0 0]); T=0:0.1:2*pi; X=10+20*cos(T); Y=20+15*sin(T); plot(X,Y,'-') hold on plot(y(:,1),y(:,2),'*') To Matlab(chase4) 在chase3.m,不断修改tf的值,分别取tf=20, 40, 80,…, 可以看出,狗永远追不上慢跑者. 返 回