数 学 建 模
实验报告
机械工程及自动化75班
丁鑫
四人追击问题
问题:
在一个边长为1的正方形跑道的四个顶点上各站有一人,他们同时开始以等速顺时针追逐下一人,在追逐过程中,每个人时刻对准目标,试模拟追击路线。并讨论:
(1) 四个人能否追到一起?
(2)若能追到一起,则每个人跑过多少路程? (3)追到一起所需要的时间(设速率为1)?
(4)如果四个人追逐的速度不一样,情况又如何呢
分析:
先建立坐标系,设计程序使从A,B,C,D四个点同时出发,画出图形并判断。
程序设计流程:
四个人追击的速度相等,则有
hold on
axis([0 2 0 2]); grid
A=[0,0];B=[0,1];C=[1,1];D=[1,0]; k=0;
s1=0;s2=0;s3=0;s4=0; %四个人分别走过的路程 t=0; v=1;dt=0.002; while k<10000 k=k+1;
plot(A(1),A(2),'r.','markersize',15); plot(B(1),B(2),'b.','markersize',15); plot(C(1),C(2),'m.','markersize',15); plot(D(1),D(2),'k.','markersize',15);
。针对这种情形,可有以下的程序。
e1=B-A;d1=norm(e1); e2=C-B;d2=norm(e2); e3=D-C;d3=norm(e3); e4=A-D;d4=norm(e4); fprintf('k=%.0f ',k)
fprintf('A(%.2f,%.2f) d1=%.2f ',A(1),A(2),d1) fprintf('B(%.2f,%.2f) d2=%.2f ',B(1),B(2),d2) fprintf('C(%.2f,%.2f) d3=%.2f ',C(1),C(2),d3) fprintf('D(%.2f,%.2f) d4=%.2f\\n',D(1),D(2),d4) A=A+v*dt*e1/d1; B=B+v*dt*e2/d2; C=C+v*dt*e3/d3; D=D+v*dt*e4/d4; t=t+dt;
s1=s1+v*dt; s2=s2+v*dt; s3=s3+v*dt; s4=s4+v*dt;
if norm(A-C)<=5.0e-3&norm(B-D)<=5.0e-3 break end end t s1 s2 s3 s4
部分运行结果:
k=481 A(0.52,0.52) d1=0.04 B(0.52,0.48) d2=0.04 C(0.48,0.48) d3=0.04 D(0.48,0.52) d4=0.04 k=482 A(0.52,0.52) d1=0.04 B(0.52,0.48) d2=0.04 C(0.48,0.48) d3=0.04 D(0.48,0.52) d4=0.04 k=483 A(0.52,0.52) d1=0.04 B(0.52,0.48) d2=0.04 C(0.48,0.48) d3=0.04 D(0.48,0.52) d4=0.04