文档详情

关于追击问题的数学建模实验报告.pdf

发布:2015-08-19约3.77千字共6页下载文档
文本预览下载声明
实验报告 装备02 崔江 2011/4/4 一、实验问题 在一边长为 1 的正方形跑道的四个顶点上各站有1 人,他们同时开始 以等速顺时针沿跑道追逐下一人,在追击过程中,每个人时刻对准目标, 试模拟追击路线,并讨论: 1) 四个人能否追到一起? 2) 若能追到一起,则每个人跑过多少路程? 3) 追到一起所需要的时间(设速率为1)? 4) 如果四个人追逐的速度不一样,情况又如何呢? 二、问题的分析 这是一个追击问题,模拟其追击过程就是将整个追击过程离散化,即 以dt 为时间间隔,四个人分别一步一步的追击前边的人,持续直到任意两 个人的距离足够小为止。这时就可以根据条件和追击规律,实时计算出每 个人经过的路程和相遇所用的时间: 每个人的位置坐标可以根据向量的表示方法表示,而每个人运动的方 向则可以通过被追击的人的位置向量r 与追击人的位置向量 r 的差 r - r 1 2 2 1 的方向来表示。 三、实验中用到的符号 V(人的速度) dt (时间微元)A 、B、C、D (四个人的位置向量) time (最终相遇所用的时间) s (A 从开始到相遇经过的路程) 四、程序设计 clear;clc;clf; %建立坐标系和网格 hold on axis([0 100 0 100]); 1 grid %初始化四个人的位置 A=[0,0]; B=[0,100]; C=[100,100]; D=[100,0]; %初始化四个人的距离 d1=norm(A-B); d2=norm(B-C); d3=norm(C-D); d4=norm(D-A); %初始化循环变量和行走路程,速度,设置时间微元 k=0;s=0; v=1;dt=0.2; %开始执行追击的循环体 while k-1 k=k+1; plot(A(1),A(2),r.,markersize,10); plot(B(1),B(2),b.,markersize,10); plot(C(1),C(2),g.,markersize,10); plot(D(1),D(2),black.,markersize,10); e1=B-A;d1=norm(e1); e2=C-B;d2=norm(e2); e3=D-C;d3=norm(e3); e4=A-D;d4=norm(e4); %设置追击结束的条件 if d1=0.3 break end e1=e1/d1; 2 e2=e2/d2; e3=e3/d3; e4=e4/d4; A=A+v*dt*e1; s=s+norm(v*dt*e1); B=B+v*dt*e2; C=C+v*dt*e3; D=D+v*dt*e4; pause(0.00005) end %输出追击结束所用的时间和路程 time=k*dt s %程序到此结束% 五、问题求解结果与讨论 运行程序后可以得到如下图表: 3 从上表容易看出当四个人的速度相同时,他们所经过的路线呈对称分 布,并且最终会相遇在正方形的中点处,这显然是符合我们的常识的。 而在matlab 的命令栏中
显示全部
相似文档