Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
初级会员
注册日期: 2010-02-25
年龄: 32
帖子: 1
声望力: 0 ![]() |
![]()
在一边长为1的正方形跑道的四个顶点上各站有一人,他们同时开始以等速顺时针追逐下一人,在追击过程中,每个人时刻对准目标,试模拟追击路线。并讨论:
(1) 四个人能否追到一起? (2) 若能追到一起,则每个人跑过多少路程? (3) 追到一起所需要的时间(设速率为1)? (4) 如果四个人追逐的速度不一样,情况又如何呢? 这道数值微分问题小妹想了半天做出来的总是出错,哪位大虾给个代码让我看看感激不尽! |
![]() |
![]() |
![]() |
#2 |
高级会员
注册日期: 2008-01-02
帖子: 247
声望力: 22 ![]() |
![]()
% 本程序动画演示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 |
![]() |
![]() |
![]() |
#3 |
高级会员
注册日期: 2008-01-02
帖子: 247
声望力: 22 ![]() |
![]()
若速度互异,只需在相应地方修改即可。
|
![]() |
![]() |