趣味数模问题(4)——舰艇追击

问题背景

在这里插入图片描述

解决方法①(时间离散化求解)

思想:将时间离散化为每一个dt处理,代曲为直,计算每一dt时刻两舰连线与正东方向的夹角,以for循环结构实现追击。

n=5000;
x=zeros(n,4);
x(1,1)=0;x(1,2)=0;%走私舰初始坐标
x(1,3)=10;x(1,4)=0;%缉毒舰初始坐标
dt=0.01;
u=8;
v=12;
writerObj=VideoWriter(‘ChaseDrug.avi’);%定义一个视频文件保存追击动画
open(writerObj);%打开该视频文件
for i=1:n-1
d=sqrt((x(i,1)-x(i,3))^ 2+(x(i,2)-x(i,4))^2);
cos=(x(i,3)-x(i,1))/d;
sin=(x(i,2)-x(i,4))/d;
plot(x(i,1),x(i,2),‘ro’,x(i,3),x(i,4),‘bo’);
frame=getframe;%将当前帧存入结构体frame中
writeVideo(writerObj,frame);%将该帧写入视频
hold on
pause(0.1)
if (x(i,1)=x(i,3))||(x(i,2)=x(i,4)) %继续追击的条件
x(i+1,2)=x(i,2)+udt;
x(i+1,3)=x(i,3)-v
dtcos;
x(i+1,4)=x(i,4)+v
dtsin;
end
if x(i,3)<1E-3
x(i,3)=0; %如果缉毒舰与正北方向偏差小于1m,则认为缉毒舰在正北方向,降低运算量
end
if (x(i,2)>0)&&(abs(x(i,4)-x(i,2))<0.05) %两舰距离在50m以内判定为追上
close(writerObj);%关闭视频文件句柄
break
end
end
t=i
dt %得出追击所需时间(h)
xlabel(‘正东方向/km’);
ylabel(‘正北方向/km’);
legend(‘走私舰’,‘缉毒舰’);
在这里插入图片描述
关于保存作图过程的方法,见https://blog.csdn.net/weixin_30487317/article/details/97728063
https://blog.csdn.net/lingyunxianhe/article/details/77857317

解决方法②(微分方程求解)

在这里插入图片描述
直线AB与缉私舰路线相切,
在这里插入图片描述

  • 2
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值