Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2010-02-25, 23:32   #1
didiwei
初级会员
 
注册日期: 2010-02-25
年龄: 32
帖子: 1
声望力: 0
didiwei 正向着好的方向发展
默认 求解一道简单的追及问题

在一边长为1的正方形跑道的四个顶点上各站有一人,他们同时开始以等速顺时针追逐下一人,在追击过程中,每个人时刻对准目标,试模拟追击路线。并讨论:
(1) 四个人能否追到一起?
(2) 若能追到一起,则每个人跑过多少路程?
(3) 追到一起所需要的时间(设速率为1)?
(4) 如果四个人追逐的速度不一样,情况又如何呢?
这道数值微分问题小妹想了半天做出来的总是出错,哪位大虾给个代码让我看看感激不尽!
didiwei 当前离线   回复时引用此帖
旧 2010-03-18, 16:05   #2
mathjiang
高级会员
 
注册日期: 2008-01-02
帖子: 247
声望力: 22
mathjiang 正向着好的方向发展
默认 回复: 求解一道简单的追及问题

% 本程序动画演示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
mathjiang 当前离线   回复时引用此帖
旧 2010-03-18, 16:15   #3
mathjiang
高级会员
 
注册日期: 2008-01-02
帖子: 247
声望力: 22
mathjiang 正向着好的方向发展
默认 回复: 求解一道简单的追及问题

若速度互异,只需在相应地方修改即可。
mathjiang 当前离线   回复时引用此帖
回复

主题工具
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 11:34


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.