在一边长为1的正方形跑道的四个顶点上各站有一人,他们同时开始以等速顺时针追逐下一人,在追击过程中,每个人时刻对准目标,试模拟追击路线。并讨论:
(1) 四个人能否追到一起?
(2) 若能追到一起,则每个人跑过多少路程?
(3) 追到一起所需要的时间(设速率为1)?
(4) 如果四个人追逐的速度不一样,情况又如何呢?
这道数值微分问题小妹想了半天做出来的总是出错,哪位大虾给个代码让我看看感激不尽!
mathjiang
2010-03-18, 16:05
% 本程序动画演示n人沿正n边形同向追逐问题
% 问题描述:n人沿正n边形同向等速率追逐,在追逐的过程中,相邻
% 两人行驶方向的夹角始终保持 2*pi/n.
% 当 n = 4 时,就是楼主想要的动画演示追逐过程.
% 状态的初始化
clear, clc
n = input('参与追逐的人数 n = ');
alpha = linspace(0,2*pi,n+1);
r=10;
x=r*cos(alpha);
y=r*sin(alpha);
axis equal
axis([-r-5 r+5 -r-5 r+5]);
line([-r-5 r+5],[0 0])
line([0 0],[-r-5 r+5])
axis off
hold on
plot(x,y,'marker','h','markersize',9,'linewidth',2)
% 下面首先计算轨迹坐标,然后演示追逐过程.
v=1; % n人的追逐速度.
dt=0.5; % 时间间隔.
d=2*r*sin(2*pi/n); % 相邻两人的距离--正n边形的边长.
while(d>0.5)
d=sqrt((x(1)-y(1))^2+(x(2)-y(2))^2);
for i=1:n
x(i)=x(i)+v*dt*(x(i+1)-x(i))/d;
y(i)=y(i)+v*dt*(y(i+1)-y(i))/d;
end
x(n+1)=x(1); y(n+1)=y(1);
plot(x,y,'h','markersize',9)
pause(dt)
end
hold off
vBulletin® v3.8.3,版权所有 ©2000-2025,Jelsoft Enterprises Ltd.