数学建模第三次作业追击问题.doc
《数学建模第三次作业追击问题.doc》由会员分享,可在线阅读,更多相关《数学建模第三次作业追击问题.doc(8页珍藏版)》请在冰豆网上搜索。
数学建模(机自75班)丁鑫070111148
数
学
建
模
实验报告
机械工程及自动化75班
07011114
丁鑫
四人追击问题
问题:
在一个边长为1的正方形跑道的四个顶点上各站有一人,他们同时开始以等速顺时针追逐下一人,在追逐过程中,每个人时刻对准目标,试模拟追击路线。
并讨论:
(1)四个人能否追到一起?
(2)若能追到一起,则每个人跑过多少路程?
(3)追到一起所需要的时间(设速率为1)?
(4)如果四个人追逐的速度不一样,情况又如何呢
分析:
先建立坐标系,设计程序使从A,B,C,D四个点同时出发,画出图形并判断。
程序设计流程:
四个人追击的速度相等,则有。
针对这种情形,可有以下的程序。
holdon
axis([0202]);
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;
whilek<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;
ifnorm(A-C)<=5.0e-3&norm(B-D)<=5.0e-3
break
end
end
t
s1
s2
s3
s4
部分运行结果:
k=481A(0.52,0.52)d1=0.04B(0.52,0.48)d2=0.04C(0.48,0.48)d3=0.04D(0.48,0.52)d4=0.04
k=482A(0.52,0.52)d1=0.04B(0.52,0.48)d2=0.04C(0.48,0.48)d3=0.04D(0.48,0.52)d4=0.04
k=483A(0.52,0.52)d1=0.04B(0.52,0.48)d2=0.04C(0.48,0.48)d3=0.04D(0.48,0.52)d4=0.04
k=484A(0.52,0.51)d1=0.04B(0.51,0.48)d2=0.04C(0.48,0.49)d3=0.04D(0.49,0.52)d4=0.04
k=485A(0.52,0.51)d1=0.04B(0.51,0.48)d2=0.04C(0.48,0.49)d3=0.04D(0.49,0.52)d4=0.04
k=486A(0.52,0.51)d1=0.03B(0.51,0.48)d2=0.03C(0.48,0.49)d3=0.03D(0.49,0.52)d4=0.03
k=487A(0.52,0.51)d1=0.03B(0.51,0.48)d2=0.03C(0.48,0.49)d3=0.03D(0.49,0.52)d4=0.03
k=488A(0.52,0.51)d1=0.03B(0.51,0.48)d2=0.03C(0.48,0.49)d3=0.03D(0.49,0.52)d4=0.03
k=489A(0.52,0.51)d1=0.03B(0.51,0.48)d2=0.03C(0.48,0.49)d3=0.03D(0.49,0.52)d4=0.03
k=490A(0.52,0.50)d1=0.03B(0.50,0.48)d2=0.03C(0.48,0.50)d3=0.03D(0.50,0.52)d4=0.03
k=491A(0.52,0.50)d1=0.02B(0.50,0.48)d2=0.02C(0.48,0.50)d3=0.02D(0.50,0.52)d4=0.02
k=492A(0.52,0.50)d1=0.02B(0.50,0.48)d2=0.02C(0.48,0.50)d3=0.02D(0.50,0.52)d4=0.02
k=493A(0.51,0.50)d1=0.02B(0.50,0.49)d2=0.02C(0.49,0.50)d3=0.02D(0.50,0.51)d4=0.02
k=494A(0.51,0.50)d1=0.02B(0.50,0.49)d2=0.02C(0.49,0.50)d3=0.02D(0.50,0.51)d4=0.02
k=495A(0.51,0.50)d1=0.02B(0.50,0.49)d2=0.02C(0.49,0.50)d3=0.02D(0.50,0.51)d4=0.02
k=496A(0.51,0.50)d1=0.01B(0.50,0.49)d2=0.01C(0.49,0.50)d3=0.01D(0.50,0.51)d4=0.01
k=497A(0.51,0.49)d1=0.01B(0.49,0.49)d2=0.01C(0.49,0.51)d3=0.01D(0.51,0.51)d4=0.01
k=498A(0.51,0.49)d1=0.01B(0.49,0.49)d2=0.01C(0.49,0.51)d3=0.01D(0.51,0.51)d4=0.01
k=499A(0.50,0.49)d1=0.01B(0.49,0.50)d2=0.01C(0.50,0.51)d3=0.01D(0.51,0.50)d4=0.01
k=500A(0.50,0.50)d1=0.01B(0.50,0.50)d2=0.01C(0.50,0.50)d3=0.01D(0.50,0.50)d4=0.01
k=501A(0.50,0.50)d1=0.01B(0.50,0.50)d2=0.01C(0.50,0.50)d3=0.01D(0.50,0.50)d4=0.01
k=502A(0.50,0.50)d1=0.00B(0.50,0.50)d2=0.00C(0.50,0.50)d3=0.00D(0.50,0.50)d4=0.00
t=
1.0040
s1=
1.0040
s2=
1.0040
s3=
1.0040
s4=
1.0040
从运行的结果来看,如果四个人的追击速度相同,均为1,可有以下的结果:
(1)四人最后可以追到一起。
(2)每个人跑过相等的路程,均为1.0040.
(3)追到一起的时间为1.0040秒。
如果四个人追击的速度不一样,可取,运行程序。
运行程序:
holdon
axis([0202]);
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.001;
whilek<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+2*v*dt*e2/d2;
C=C+2*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;
ifnorm(A-C)<=1.0e-3&norm(B-D)<=1.0e-3
break
end
end
t
s1
s2
s3
s4
部分运行结果:
k=662A(0.41,0.32)d1=0.06B(0.43,0.27)d2=0.00C(0.43,0.27)d3=0.00D(0.43,0.27)d4=0.05
k=663A(0.41,0.32)d1=0.05B(0.43,0.27)d2=0.00C(0.43,0.27)d3=0.00D(0.43,0.27)d4=0.05
k=664A(0.41,0.32)d1=0.05B(0.43,0.27)d2=0.00C(0.43,0.27)d3=0.00D(0.43,0.27)d4=0.05
k=665A(0.41,0.32)d1=0.05B(0.43,0.27)d2=0.00C(0.43,0.27)d3=0.00D(0.43,0.28)d4=0.05
k=666A(0.41,0.31)d1=0.05B(0.43,0.28)d2=0.00C(0.43,0.28)d3=0.00D(0.43,0.28)d4=0.04
k=667A(0.41,0.31)d1=0.04B(0.43,0.28)d2=0.00C(