导弹追击问题

问题描述:

   导弹基地发现正北方向120km处海面上有一艘敌舰以90km/h的速度向正东方向行驶。该基地立即发射导弹追踪追击敌舰,导弹速度为450km/h,自动导航系统使导弹在任一时刻都能对准敌舰。试问导弹在何时何处击中敌舰?

问题分析:

  由于自动导航系统的存在,导弹始终对准了敌舰,所以导弹的轨迹应该是一个曲线。我们可以采用微分的思想解决这个问题。先计算出基地和敌舰的初始距离d,然后利用三角函数将导弹和敌舰的坐标表示出来,设敌舰在t(t极小)时间内走过的距离为s,而导弹到飞行的距离为s1,通过此时导弹与敌舰连线与x轴的角度算出导弹的新坐标(x1,y1),以及敌舰的新坐标(x2,y2)。通过选取足够多的t,就可以找到d足够小时(视作打击完成)的导弹的坐标及飞行时间。本题使用matlab编程和图像绘制。

相应公式:

d=\sqrt{(x1-x2)^{2}+(y1-y2)^2}

\cos \alpha =|x1-x2|/d

\sin \alpha =|y1-y2|/d

代码展示:

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)]
%显示命中坐标

图像示例:

展望:

   真实的追击过程远比模拟的困难,需要用到更加复杂的公式,为了简单模拟,追击过程被大大简化。希望以后我也能模拟出真正的追踪过程。

  • 16
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值