关于四人追及问题的数学实验报告_第1页
关于四人追及问题的数学实验报告_第2页
关于四人追及问题的数学实验报告_第3页
关于四人追及问题的数学实验报告_第4页
关于四人追及问题的数学实验报告_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

关于四人追及问题的数学实验报告西安交通大学管理学院ACCA92 爆米花小组2010年2月一、实验问题在一边长为1的正方形跑道的四个顶点上各站有1人,他们同时开始以等速顺时针追逐下一人,在追及过程中,每个人时刻对准目标,试模拟追及路线。并讨论:(1) 四个人能否追到一起?(2) 若能追到一起,则每个人跑过多少路程?(3) 追到一起所需要的时间(设速率为1)?(4) 如果四个人追逐的速度不一样,情况又如何呢? 图1二、问题分析本题是一个动态追击问题,参考MATLAB软件与基础数学实验一书中65页的问题四,我们可以通过使追及过程离散化的方法来模拟四人的追及过程,即以极短的时间段为间隔,逐步分析四人的运动状况。三、建模假设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.根据分析,可以假设连续的时间被分为多个极小且等长的时间段。又因为时间间隔极短,所以四人在时间内的运动均可视为直线运动。四、建模求解本题求解的关键在于运用算法求出若干个时间后a、b、c、d四人的位置坐标,并计算相应追逐者间的距离。记经过k个时间后,a、b、c、d位置点分别为、。故本题转化为求、的坐标,以及、的值。下面,逐步分析四人的运动状况。图2运动开始时,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。照此循环下去,直到某两者之间的距离足够小,即这时两个人追到一起,该程序活动终止。以上过程如图2所示。因此,我们可以用向量递推的方法来求出、的坐标,即向量、的坐标。记a、b、c、d四者的速率分别为、。=- ; =-=- ; =-1个时间后:=- ; =-=- ; =-2个时间后:=- ; =-=- ; =-k个时间后:=- ; =-=- ; =-如上所述,按照这样的交错递推方式,便可逐步求出、的坐标,以及、的值。所以接下来的编程求解中,鉴于该命令集的重复执行,我们考虑用条件循环while-end结构。五、MATLAB程序设计说明:下面就四人的速率v相等时的情况进行程序设计,四人的速率v不等情况将在第七节“进一步拓展与实验”中说明。程序编制:clear;clf; %清除内存变量,清理图形窗口A=0,0;B=0,1;C=1,1;D=1,0; %设置四人初始位置k=0; %设置累计计数变量kdt=0.004;v=1; %设置时间间隔dt,四人运动速率vgrid; %绘制网格hold on; %保持在同一窗口画图axis(0 1 0 1); %重置坐标轴while k10000 %开始循环 k=k+1; %循环次数累加1 plot(A(1),A(2),g.); %描出a者的位置坐标 plot(B(1),B(2),r.); %描出b者的位置坐标 plot(C(1),C(2),y.); %描出c者的位置坐标 plot(D(1),D(2),b.); %描出d者的位置坐标 e1=(B-A)/norm(B-A); %求出a追b的方向向量 A=A+v*dt*e1; %求出经过一个dt时间后a的位置 e2=(C-B)/norm(C-B); %求出b追c的方向向量 B=B+v*dt*e2; %求出经过一个dt时间后b的位置 e3=(D-C)/norm(D-C); %求出c追d的方向向量 C=C+v*dt*e3; %求出经过一个dt时间后c的位置 e4=A-v*dt*e1-D;d4=norm(e4); %计算出d与a间距离 e4=e4/d4; %求出d追a的方向向量 D=D+v*dt*e4; %求出经过一个dt时间后d的位置 d1=norm(B-A); %计算出a与b间距离 d2=norm(C-B); %计算出b与c间距离 d3=norm(D-C); %计算出c与d间距离 d4=norm(A-D); %计算出d与a间距离 fprintf(k=%.0f d1=%.4f d2=%.4f d3=%.4f d4=%.4fn,k,d1,d2,d3,d4); %显示累计数k,以及相应两者间距离 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 %判断a与b的位置是否足够小 break %终止循环 end %结束判断 if d2=0.005 %判断b与c的位置是否足够小 break %终止循环 end %结束判断 if d3=0.005 %判断c与d的位置是否足够小 break %终止循环 end %结束判断 if d4=0.005 %判断d与a的位置是否足够小 break %终止循环 end %结束判断 pause(0.01) %放慢画图演示过程end %结束循环六、问题求解结果与结论上述程序的运行结果:k=250 d1=0.0102 d2=0.0102 d3=0.0102 d4=0.010 A(0.50,0.49) B(0.49,0.50) C(0.50,0.51) D(0.51,0.50)k=251 d1=0.0073 d2=0.0073 d3=0.0073 d4=0.0073 A(0.50,0.49) B(0.49,0.50) C(0.50,0.51) D(0.51,0.50)k=252 d1=0.0052 d2=0.0052 d3=0.0052 d4=0.0052 A(0.50,0.50) B(0.50,0.50) C(0.50,0.50) D(0.50,0.50)k=253 d1=0.0042 d2=0.0042 d3=0.0042 d4=0.0042 A(0.50,0.50) B(0.50,0.50) C(0.50,0.50) D(0.50,0.50)图3程序的运行结果表明:在四人的速率v相等的情况下:当运动结束时,a与b间距离、b与c间距离、c与d间距离、d与a间距离都已足够小(小于初始距离的0.5%)。即运动结束时,a、b、c、d四人可以追到一起,都到达正方形中心(0.5,0.5)位置附近。整个运动过程经历的时间:t=k=2530.004=1.0121从开始到结束,每个人跑过的路程:s=vt=1四人运动的轨迹如图3所示。其实,不难想像,由于四个人所处的位置关于正方形中心对称,且四人运动的速率相同,所以四人运动的轨迹也是时刻对称的,最后也应该同时停止在正方形的中心。另外,值得一提的是,原程序设计的时间间隔为0.004个时间单位,运动停止的临界距离为0.005单位。当然也可以根据需要更改这两个参数。将和临界距离设置越小,得出的运行轨迹、时间t与路程s的值也会越精确。比如,将和临界距离逐渐改小,其对应的t值如下:dt=0.004 d0.005 t=1.012dt=0.003 d0.004 t=1.008dt=0.002 d0.003 t=1.004dt=0.001 d0.002 t=1.002由上可以看出,整个运动过程所用时间t在逐渐趋近于1个单位,因而我们可以合理地推断,四人完全重合在一起所花的时间应该是1个时间单位整,而每个人跑过的路程也应该是1个距离单位。七、进一步拓展与实验下面就四人追逐速度不一样的情况(即问题(4)进行编程与探究。虽然四人的速率不一样,但是依然可用向量递推的方法求解,编程时只需要将原式中v的分别改成v1、v1、v3、v4即可。程序编写如下:clear;clf; %清除内存变量,清理图形窗口v1=input(v1=) %输入a的运动速率v2=input(v2=) %输入b的运动速率v3=input(v3=) %输入c的运动速率v4=input(v4=) %输入d的运动速率A=0,0;B=0,1;C=1,1;D=1,0; %设置四人初始位置k=0; dt=0.004; %设置累计计数变量k,时间间隔dtgrid; %绘制网格hold on; %保持在同一窗口画图axis(0 1 0 1); %重置坐标轴while k10000 %开始循环 k=k+1; %循环次数累加1 plot(A(1),A(2),g.); %描出a者的位置坐标 plot(B(1),B(2),r.); %描出b者的位置坐标 plot(C(1),C(2),y.); %描出c者的位置坐标 plot(D(1),D(2),b.); %描出d者的位置坐标 e1=(B-A)/norm(B-A); %求出a追b的方向向量 A=A+v1*dt*e1; %求出经过一个dt时间后a的位置 e2=(C-B)/norm(C-B); %求出b追c的方向向量 B=B+v2*dt*e2; %求出经过一个dt时间后b的位置 e3=(D-C)/norm(D-C); %求出c追d的方向向量 C=C+v3*dt*e3; %求出经过一个dt时间后c的位置 e4=A-v1*dt*e1-D;d4=norm(e4); %计算出d与a间距离 e4=e4/d4; %求出d追a的方向向量 D=D+v4*dt*e4; %求出经过一个dt时间后d的位置 d1=norm(B-A); %计算出a与b间距离 d2=norm(C-B); %计算出b与c间距离 d3=norm(D-C); %计算出c与d间距离 d4=norm(A-D); %计算出d与a间距离 fprintf(k=%.0f d1=%.4f d2=%.4f d3=%.4f d4=%.4fn,k,d1,d2,d3,d4); %显示累计数k,以及相应两者间距离 fprintf(A(%.2f,%.2f) B(%.2f,%.2f) C(%.2f,%.2f) D(%.2f,%.2f)n,A,B,C,D); %显示四者坐标 if d10.005 %判断a与b的位置是否足够小 break %终止循环 end %结束判断 if d20.005 %判断b与c的位置是否足够小 break %终止循环 end %结束判断 if d30.005 %判断c与d的位置是否足够小 break %终止循环 end %结束判断 if d40.005 %判断d与a的位置是否足够小 break %终止循环 end %结束判断pause(0.01) %放慢画图演示过程end %结束循环该程序中可分别改变v1、v1、v3、v4初始值的大小来研究不同速率带来的情况变化。下面我们对以下几种情况进行研究:保持三者速率不变,只改变另一人速率的值。不妨保持v1=v2=v3=1,仅改变v4的值。我们可以取多组v4的值进行探究,运行结果如下:v4=4时k=67 d1=0.7339 d2=0.6344 d3=0.9811 d4=0.0024该组数据表明运动结束时,仅有d(速率为v4)追上av4=2时k=140 d1=0.4373 d2=0.2838 d3=0.5104 d4=0.0039该组数据表明运动结束时,仅有d(速率为v4)追上av4=1.1时k=246 d1=0.0058 d2=0.0038 d3=0.0064 d4=0.0039该组数据表明运动结束时,d(速率为v4)追上a,且b追上cv4=1.01时k=252 d1=0.0045 d2=0.0044 d3=0.0045 d4=0.0044该组数据表明运动结束时,a、b、c、d都追上各自目标,即四人追到一起从上面4组数据中,我们看到了不同的结果,并可以发现,随着v4的值与其他三者的值越来越接近,运动结束时四者的距离也越来越接近。当v4=1.01时,a、b、c、d甚至都追上各自目标,即四人追到一起。但是,我们在v4=1.01的情况下把的值由原来的0.004改为0.0001个单位时,却得到了如下的结果:当v4=1.01时k=9928 d1=0. d2=0.0049 d3=0. d4=0.即此时a、b、d都追上各自目标,但是c并没有追上d,即四人并没有追到一起我们惊奇地发现,在四人速率不变的情况下,仅仅改变的值,却得到了不一样的结果!在其他情况下我们也发现了类似结果:保持两者速率不变,改变另外两者的值。当v1=v2=1,v3=1.08,v4=1.1,dt=0.004时k=242 d1=0.0044 d2=0.0046 d3=0.0047 d4=0.0042该组数据表明运动结束时,a、b、c、d都追上各自目标,即四人追到一起当v1=v2=1,v3=1.08,v4=1.1,dt=0.0001时k=9522 d1=0. d2=0. d3=0. d4=0.即此时a、b都追上各自目标,但是c、d并没有追上各自目标,即四人并没有追到一起四者速度全部不同时。当v1=1,v2=1.01,v3=1.02,v4=1.03,dt=0.004时k=249 d1=0. d2=0. d3=0. d4=0.该组数据表明运动结束时,a、b、c、d都追上各自目标,即四人追到一起当v1=1,v2=1.01,v3=1.02,v4=1.03,dt=0.0001时k=9805 d1=0. d2=0. d3=0. d4=0.该组数据表明运动结束时, a、b都追上各自目标,但是c、d并没有追上各自目标,即四人并没有追到一起针对以上出现的在四人速率不变的情况下,仅仅改变的值,却得到了不一样的结果的现象,我们进行分析讨论,发现这是因为用离散化求解的方法无法避免地忽略了运动的连续性,即它只能粗略地表现质点在时间段之间的变化,却不能细致描绘出质点在时间段之内的情况。也就是说,采用离散化的手法后,四者的运动过程是呈跳跃状的。可能经过n个时间单位时,他们所有的人离自己目标的距离是大于临界值的,经过n+1个时间单位时,他们所有的人离自己目标的距离就小于临界值了。这时,看上去,他们都追上了自己的目标,即四人追到了一起。但是,如果把时间间隔再细分,比如把原来的一个再次100等分,每份记作。那么,由于速率不一样,可能经过k个时间单位,他们彼此的差距大于临界值,但是在经过k+1个时间单位后,有可能只有一个人与自己目标的距离小于临界值,其他三者与目标间距离并未小于临界值,而此时根据假设3运动已停止,但四人并未追到一起。因此,我们猜想,即使四者的速率相差的再小,只要将时间间隔设定的足够小,一定会有存在有人追上自己的目标,而另外的人没有追上自己目标的时刻。换言之,只要四人速率不一样,无论速率多么接近,四人都不会追到一起。速率不一样是四人追不到一起的根本原因!虽然在速率不等时四人不能追到一起,但是我们还发现,有可能同时存在两个人追到各自目标的现象。即为下述情况:令a、c两者速度相等,b、d两者速度也相等。当v1=v3=1,v2=v4=2时,运行结果如下:k=116 d1=0. d2=0. d3=0. d4=0.k=117 d1=0. d2=0. d3=0. d4=0.k=118 d1=0. d2=0. d3=0. d4=0.k=119 d1=0. d2=0. d3=0. d4=0.k=120 d1=0. d2=0. d3=0. d4=0.k=121 d1=0. d2=0. d3=0. d4=0.k=122 d1=0. d2=0. d3=0. d4=0.图4上

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论