问题描述:在某一平坦的陆地上有4支队伍,每个队伍都有能精确追踪敌方队伍的导航系统,导航使得队伍每次前进都是沿直线前进,现在这四支队伍恰好在一个正方形的四个角上,每支队伍都只追踪自己左侧的队伍,请问4支队伍最终的追踪轨迹如何?
解决思路:由题可知每支队伍都是沿着直线前进,但由于4支队伍都在移动,所以最后轨迹应该是4条曲线。将这4个点的坐标表示出来,利用微分的思想,计算t时间内(t极小)每支队伍的位移,然后利用三角函数以及微积分的知识计算出一段位移过后每个点的坐标,循环n次,当4支队伍的间距小于某个值视为追上,然后依次描点画线。
代码展示:(使用Matlab)
clear;clc;
v=20;t=0.06;
n=200;
a=rand(n,2,4);
a(1,1,1)=100;
a(1,2,1)=0;
a(1,1,2)=0;
a(1,2,2)=0;
a(1,1,3)=0;
a(1,2,3)=100;
a(1,1,4)=100;
a(1,2,4)=100;
for i=1:100
for j=1:3
d1=sqrt((a(i,1,j+1)-a(i,1,j))^2+(a(i,2,j)-a(i,2,j+1))^2);
cos_1=(a(i,1,j+1)-a(i,1,j))/d1;
sin_1=(a(i,2,j+1)-a(i,2,j))/d1;
a(i+1,1,j)=a(i,1,j)+v*t*cos_1;
a(i+1,2,j)=a(i,2,j)+v*t*sin_1;
end
d2=sqrt((a(i,1,4)-a(i,1,1))^2+(a(i,2,4)-a(i,2,1))^2);
cos_1=(a(i,1,1)-a(i,1,4))/d1;
sin_1=(a(i,2,1)-a(i,2,4))/d1;
a(i+1,1,4)=a(i,1,4)+v*t*cos_1;
a(i+1,2,4)=a(i,2,4)+v*t*sin_1;
plot(a(i,1,1),a(i,2,1),'r*',a(i,1,2),a(i,2,2),'g*',a(i,1,3),a(i,2,3),'b*',a(i,1,4),a(i,2,4),'r*')
hold on
pause(0.01)
if d1<1.5
break
end
end
曲线图例: