数学建模四人追击问题论文

  • 格式:doc
  • 大小:404.50 KB
  • 文档页数:7

下载文档原格式

  / 7
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、对《数学实践与建模》课程的讲义、授课容、授课方式等的看法、建议:

还没开始上这门课的时候,我就经常听到数学建模这个词,谁谁谁参加数学建模比赛了之类的。当时并没有多想,感觉数学建模什么的估计就是类似奥数竞赛一类的解难题吧。没想到这学期开了这门课,通过这门课让我对数学建模有了一个更清晰直观的认识。

这么几周的课上下来,我觉得这门课还是很有意思的,对于这门课,我有一下一些建议:

1、第一节课可以先去机房上一次实验课,让大家先试试手,这样

利于后期课堂教学的开展;

2、可以建立一个QQ群,让大家相互讨论,这样也可以充分利用好

那些有数学建模基础同学的资源;

3、大家自己弄MATLAB软件不是太方便,希望学校或者老师在软件

的获取上给予一定的帮助;

4、实验课的时候进行分组,一个基础好的同学和几个没什么基础

的同学为一组,这样可以提高整个小组成员的学习效率。

有的建议可能不好实施,所以以上是我从个人想法观点出发的几点小建议。

二、题目:

四人追逐实验

三、摘要:

这是一个关于动态追击的问题,每个人都在运动,而且每个人的运动状态是相同的。问题主要在于,每个人的运动状态都在时时刻刻改变着,这是分析这个问题的关键点。通过初步判断,四个人最终会相遇在同一点,并且四个人的运动具有对称性,我们可以通过使追及过程离散化的方法来模拟四人的追及过程,即以极短的时间段为间隔,逐步分析四人的运动状况。

四、问题重述:

在正方形ABCD的四个顶点各有一个人。设在初始时刻时,四人同时出发匀速以沿顺时针走向下一个人。如果他们始终对准下一个人为目标行进,最终结果会如何。作出各自的运动轨迹。

五、模型假设:

1、将四个人看成质点a、b、c、d,设他们的初始位置分别为(0,0)(即坐标原点O)、 (0,1)、 (1,1)、 (1,0),如图1所示。

2、假设某人追上其目标的要该者与其目标间的距离足够小。我们不妨将该临界距离设为0.005个单位(该值为初始距离的0.5%)。

3、假设当中a、b、c、d某人已追到其目标时,该追及活动终止,即运动结束。若此时恰巧其他三人也追到各自目标,则称这种情况为四人追到一起。否则的话,称四人不能追到一起。

4、在追及过程中,四人可以在正方形区域进行运动,并不是只能在正方形的边长上运动。

5、在开始运动时和追及过程中,每个人时刻朝着目标运动不受限制。

6、根据分析,可以假设连续的时间被分为多个极小且等长的时间段。又因为时间间隔极短,所以四人在时间的运动均可视为直线运动。

六、模型的建立与求解:

本题求解的关键在于运用算法求出若干个dt时间后a、b、c、d 四人的位置坐标,并计算相应追逐者间的距离。记经过k个dt时间后,a、b、c、d位置点分别为k A、k B、k C、k D。故本题转化为

求k A、k B、k C、k D的坐标,以及

的值。下面,逐步分析四人的运动状况。

010x

①运动开始时,a 、b 、c 、d 四人同时分别朝着各自目标沿向量00B A 、00C B 、00D C 、00A D 的方向运动。

②经过1个dt 时间后,a 由0A 运动到1A ,b 由0B 运动到1B ,c 由0C 运动到1C ,d 由0D 运动到1D 。

③此时a 、b 、c 、d 都要转变方向同时分别沿向量11B A 、11C B 、11D C 、11A D 方向追及b 、c 、d 、a 。

④经过2个dt 时间后,a 、b 、c 、d 又分别由1A 、1B 、1C 、1D 运动到2A 、2B 、2C 、2D 。

⑤此时a 、b 、c 、d 需再次调整方向同时分别沿向量22B A 、

22C B 、22D C 、22A D 方向追及b 、c 、d 、a 。

⑥照此循环下去,直到某两者之间的距离足够小,即这时两个人追到一起,该程序活动终止。以上过程如图2所示。

因此,我们可以用向量递推的方法来求出k A 、k B 、k C 、k D 的

坐标,即向量k OA 、k OB 、k OC 、k OD 的坐标。记a 、b 、c 、d 四者的速率分别为1v 、2v 、3v 、4v 。

00B A =0OB -0OA ; 00C B =0OC -0OB

00D C =0OD -0OC ; 00A D =0OA -0OD

通过对1个dt 时间、2个dt 时间、3个dt 时间一直到k 个dt 时间后的分析,可以得到:

1111---⨯⨯+=+=k k k k k B A dt v OA A A OA

OA 2111---⨯⨯+=+=k k k k k C B dt v OB B B OB

OB 3111---⨯

⨯+=+=k k k k k dt v OC C C OC

OC 4111---⨯

⨯+=+=k k k k k A D dt v OD D D OD OD k k B A =k OB -k OA ; k k C B =k OC -k OB

k k D C =k OD -k OC ; k k A D =k OA -k OD

所以接下来我们可以进行MATLAB 的编程。

MATLAB 程序如下:

clear;clf;

A=[0,0];B=[0,1];C=[1,1];D=[1,0];

k=0;

dt=0.004;v=1;

grid;

hold on;

axis([0 1 0 1]);

while k<10000

k=k+1;

plot(A(1),A(2),'g.');

plot(B(1),B(2),'r.');

plot(C(1),C(2),'y.');

plot(D(1),D(2),'b.');

e1=(B-A)/norm(B-A);

A=A+v*dt*e1;

e2=(C-B)/norm(C-B);

B=B+v*dt*e2;

e3=(D-C)/norm(D-C);

C=C+v*dt*e3;

e4=A-v*dt*e1-D;d4=norm(e4);

e4=e4/d4;

D=D+v*dt*e4;

d1=norm(B-A);

d2=norm(C-B);

d3=norm(D-C);

d4=norm(A-D);

fprintf('k=%.0f d1=%.4f d2=%.4f d3=%.4f d4=%.4f\n',k,d1,d2,d3,d4); fprintf('A(%.2f,%.2f) B(%.2f,%.2f) C(%.2f,%.2f) D(%.2f,%.2f)\n', A(1),A(2),B(1),B(2),C(1),C(2),D (1),D(2));

if d1<=0.005

break

end

if d2<=0.005

break

end

if d3<=0.005

break

end

if d4<=0.005

break

end

pause(0.01)

end

最终获得的图像如下图所示: