资源描述:
《数学建模四人追击问题论文》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、.一、对《数学实践与建模》课程的讲义、授课内容、授课方式等的看法、建议:还没开始上这门课的时候,我就经常听到数学建模这个词,谁谁谁参加数学建模比赛了之类的。当时并没有多想,感觉数学建模什么的估计就是类似奥数竞赛一类的解难题吧。没想到这学期开了这门课,通过这门课让我对数学建模有了一个更清晰直观的认识。这么几周的课上下来,我觉得这门课还是很有意思的,对于这门课,我有一下一些建议:1、第一节课可以先去机房上一次实验课,让大家先试试手,这样利于后期课堂教学的开展;2、可以建立一个QQ群,让大家相互讨论,这样也可以充分利用好那些有数学建模基础同学的资源;3
2、、大家自己弄MATLAB软件不是太方便,希望学校或者老师在软件的获取上给予一定的帮助;4、实验课的时候进行分组,一个基础好的同学和几个没什么基础的同学为一组,这样可以提高整个小组成员的学习效率。有的建议可能不好实施,所以以上是我从个人想法观点出发的几点小建议。..二、题目:四人追逐实验三、摘要:这是一个关于动态追击的问题,每个人都在运动,而且每个人的运动状态是相同的。问题主要在于,每个人的运动状态都在时时刻刻改变着,这是分析这个问题的关键点。通过初步判断,四个人最终会相遇在同一点,并且四个人的运动具有对称性,我们可以通过使追及过程离散化的方法来模
3、拟四人的追及过程,即以极短的时间段为间隔,逐步分析四人的运动状况。四、问题重述:在正方形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、某人已追到其目标时,该追及活动终止,即运动结束。若此时恰巧其他三人也追到各自目标,则称这种情况为四人追到一起。否则的话,称四人不能追到一起。4、在追及过程中,四人可以在正方形区域内进行运动,并不是只能在正方形的边长上运动。5、在开始运动时和追及过程中,每个人时刻朝着目标运动不受限制。6、根据分析,可以假设连续的时间被分为多个极小且等长的时间段。又因为时间间隔极短,所以四人在时间内的运动均可视为直线运动。六、模型的建立与求解:本题求解的关键在于运用算法求出若干个时间后a、b、c、d四人的位置坐标,并计算相应追逐者间的距离。记经过k个时间后,a、b、
5、c、d位置点分别为、、、。故本题转化为求..、、、的坐标,以及、、、的值。下面,逐步分析四人的运动状况。①运动开始时,a、b、c、d四人同时分别朝着各自目标沿向量、、、的方向运动。②经过1个时间后,a由运动到,b由运动到,c由运动到,d由运动到。③此时a、b、c、d都要转变方向同时分别沿向量、、、方向追及b、c、d、a。④经过2个时间后,a、b、c、d又分别由、、、运动到、、、。⑤此时a、b、c、d需再次调整方向同时分别沿向量、、..、方向追及b、c、d、a。⑥照此循环下去,直到某两者之间的距离足够小,即这时两个人追到一起,该程序活动终止。以上过
6、程如图2所示。因此,我们可以用向量递推的方法来求出、、、的坐标,即向量、、、的坐标。记a、b、c、d四者的速率分别为、、、。=-;=-=-;=-通过对1个dt时间、2个dt时间、3个dt时间一直到k个dt时间后的分析,可以得到:=-;=-=-;=-所以接下来我们可以进行MATLAB的编程。MATLAB程序如下:..clear;clf;A=[0,0];B=[0,1];C=[1,1];D=[1,0];k=0;dt=0.004;v=1;grid;holdon;axis([0101]);whilek<10000k=k+1;plot(A(1),A(2),'
7、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
8、d1=%.4fd2=%.4fd3=%.4fd4=%.4f',k,d1,d2,d3,d4);fprintf('A(%.2f,%.2f)