问题描述:
导弹基地发现正北方向120km处海面上有一艘敌舰以90km/h的速度向正东方向行驶。该基地立即发射导弹追踪追击敌舰,导弹速度为450km/h,自动导航系统使导弹在任一时刻都能对准敌舰。试问导弹在何时何处击中敌舰?
问题分析:
由于自动导航系统的存在,导弹始终对准了敌舰,所以导弹的轨迹应该是一个曲线。我们可以采用微分的思想解决这个问题。先计算出基地和敌舰的初始距离d,然后利用三角函数将导弹和敌舰的坐标表示出来,设敌舰在t(t极小)时间内走过的距离为s,而导弹到飞行的距离为s1,通过此时导弹与敌舰连线与x轴的角度算出导弹的新坐标(x1,y1),以及敌舰的新坐标(x2,y2)。通过选取足够多的t,就可以找到d足够小时(视作打击完成)的导弹的坐标及飞行时间。本题使用matlab编程和图像绘制。
相应公式:
代码展示:
clear;clc;
v1=25;v2=125;n=200;t=1; %采用米做单位,时间间隔选定1秒
a=rand(n,2,2);
a(1,1,1)=0;a(1,2,1)=0;
a(1,1,2)=0;a(1,2,2)=120000;
c=1;
while c>0.01
for i=1:1100 %冗余循环次数
d=sqrt((a(i,1,1)-a(i,1,2))^2+(a(i,2,1)-a(i,2,2))^2);
cos_1 = (abs(a(i,1,2)-a(i,1,1)))/d;
sin_1 = (abs(a(i,2,2)-a(i,2,1)))/d;
a(i+1,1,2)=a(i,1,2)+v1*t;
a(i+1,2,2)=120000;
a(i+1,1,1)=a(i,1,1)+v2*t*cos_1; %依次描出导弹每个点的坐标
a(i+1,2,1)=a(i,2,1)+v2*t*sin_1;
plot(a(i,1,1),a(i,2,1),'r.',a(i,1,2),a(i,2,2),'b.')
%legend('船','导弹','Location','northeastoutside')
xlabel('东方向距离')
ylabel('北方向距离')
title('导弹追击')
hold on;
pause(0.01)
if d<50 %假设导弹在离敌舰50米处即可命中
break
end
end
c=0;
end
time1 = a(i+1,1,2)/v2 %计算导弹命中的时间
zuobiao = [a(i,1,1) a(i,2,2)]
%显示命中坐标
图像示例:
展望:
真实的追击过程远比模拟的困难,需要用到更加复杂的公式,为了简单模拟,追击过程被大大简化。希望以后我也能模拟出真正的追踪过程。
标签:追击,导弹,问题,v2,坐标,敌舰,距离 From: https://blog.csdn.net/2301_81340086/article/details/136761212