找回密码
 注册
Simdroid-非首页
查看: 1859|回复: 0

[3.编程] Maple 仿真鱼雷击舰问题

[复制链接]
发表于 2016-3-14 20:50:14 | 显示全部楼层 |阅读模式 来自 广东佛山
本帖最后由 wrj001 于 2016-3-14 20:51 编辑

[题目:]
我方正前方1海里处发现一敌舰以0.4海里/分速度横向航行,立刻发射制导鱼雷,若鱼雷速度为0.8海里/分,求敌舰航行多远及何时被鱼雷击中。
[假设:]
        1. 鱼雷在追击过程中方向始终朝向敌舰;
        2. 鱼雷的轨迹是光滑的曲线;
        3. 假设鱼雷与敌舰距离<鱼雷一个仿真步长,时敌舰被击中。
[数学模型:]
在笛卡尔坐标系中,我方位置取为原点[0,0],敌舰初始位置为[1,0];任意t时刻敌舰位置[1,Zt],鱼雷位置[Xt,Yt];取时间间隔为秒,计算不同时刻鱼雷敌舰位置。
鱼雷t时刻x轴方向速度
Vx=.8/60*(1-Xt)/sqrt((1-Xt)^2+(Zt-Yt)^2])
y轴方向速度
Vy=.8/60*(Zt-Yt)/sqrt((1-Xt)^2+(Zt-Yt)^2])
[仿真模型:]
初始位置计算
x[0] := 0.;
y[0] := 0.;
z[0] := 0.;
鱼雷坐标初始增量
x 方向:a[0] := .8*1/60;
y 方向:b[0] := 0.
任意时刻t位置计算
z[t] := t*.4*1/60;
x[t] := x[t-1]+a[t-1];
y[t] := y[t-1]+b[t-1];
任意时刻t鱼雷坐标增量
a[t] := .8*1/60*(1-x[t-1])/sqrt((1-x[t-1])^2+(z[t-1]-y[t-1])^2);
b[t] := .8*(1/60*(z[t-1]-y[t-1])/sqrt((1-x[t-1])^2+(z[t-1]-y[t-1])^2);
鱼雷与敌舰距离
d[t] := sqrt((x[t]-1.)^2+(y[t]-z[t])^2);
[仿真程序:]
restart;
with(plots);
x[0] := 0.:
y[0] := 0.:
z[0] := 0.:
a[0] := .8*1/60:
b[0] := 0.:
for t to infinity do
z[t] := .4*t*1/60;
x[t] := x[t-1]+a[t-1];
y[t] := y[t-1]+b[t-1];
a[t] := .8*1/60*(1-x[t-1])/sqrt((1-x[t-1])^2+(z[t-1]-y[t-1])^2);
b[t] := .8*1/60*(z[t-1]-y[t-1])/sqrt((1-x[t-1])^2+(z[t-1]-y[t-1])^2);
d[t] := sqrt((x[t]-1.)^2+(y[t]-z[t])^2);
if d[t] <= .8*1/60 then
break
end if
end do:
't' = t;
'z' = z[t];
Q1 := display(seq(plot([[x, y]], style = point, color = blue, symbol = solidcircle, symbolsize = 10), i = 1 .. t), insequence = true):
Q2 := display(seq(plot([[1, z]], style = point, symbol = diamond, symbolsize = 25), i = 1 .. t), insequence = true): display([Q1, Q2]);
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-3-28 17:26 , Processed in 0.028714 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表