input('该程序可以解决导弹追踪问题中导弹最小速度的确定,M是安全的边界值,N是基地发现敌机时之间的距离')
input('飞机的速度我们取了1000公里每小时,您也可以自行调整并且我们还可以为您画出具体的追踪轨迹,请按提示进行操作')
M=input('输入M:')
N=input('输入N:')
v=1000;%定义速度为1000公里每小时
dt=0.00005;%时间间隔为0.000005小时
x=[0 N];%定义初始的X坐标位置
y=[0 0];%定义初始的Y坐标位置
d=N;%飞机与导弹的初始距离
for k=1001:1:10000
while(d>0.1)%当飞机与导弹的距离小于等于0.1时,结束循环
d=sqrt((x(2)-x(1))^2+(y(2)-y(1))^2);%飞机与导弹的距离
x(1)=x(1)+k*dt*(x(2)-x(1))/d;%导弹X的位置变化
y(1)=y(1)+k*dt*(y(2)-y(1))/d;%导弹Y的位置变化
y(2)=y(2)+v*dt;%飞机Y的位置变化
x(2)=x(2);%飞机X位置没有变化
end
if y(2)<M
break;
end
x(1)=0;
y(1)=0;
y(2)=0;
d=N;
end
for p=k-1:0.0001:k
v=1000;%定义速度为1000公里每小时
dt=0.00005;%时间间隔为0.000005小时
x=[0 N];%定义初始的X坐标位置
y=[0 0];%定义初始的Y坐标位置
d=N;%飞机与导弹的初始距离
while(d>0.1)%当飞机与导弹的距离小于等于0.01时,结束循环
d=sqrt((x(2)-x(1))^2+(y(2)-y(1))^2);%飞机与导弹的距离
x(1)=x(1)+p*dt*(x(2)-x(1))/d;%导弹X的位置变化
y(1)=y(1)+p*dt*(y(2)-y(1))/d;%导弹Y的位置变化
y(2)=y(2)+v*dt;%飞机Y的位置变化
x(2)=x(2);%飞机X位置没有变化
end
if y(2)<M
break;
end
x(1)=0;
y(1)=0;
y(2)=0;
d=N;
end
disp('当发射速度大于')
p
disp('可确保导弹击中飞机')
x=[0 N];%定义初试X的坐标位置
y=[0 0];%定义初试Y的坐标位置
t=0;
for i=1:2
plot(x(i),y(i),'.'),hold on
end
d=N;%飞机与导弹的初始距离
while(d>0.1)%当飞机与导弹的距离小于等于0.01公里时,循环结束
t=t+dt;
d=sqrt((x(2)-x(1))^2+(y(2)-y(1))^2);
x(1)=x(1)+p*dt*(x(2)-x(1))/d;
y(1)=y(1)+p*dt*(y(2)-y(1))/d;
y(2)=y(2)+v*dt;
x(2)=x(2);
for i=1:2
plot(x(i),y(i),'.'),hold on
end
end
xlabel('x')
ylabel('y')
title('导弹追踪飞机的轨迹')