我方正前方1海里处发现一敌舰以0.4海里/分速度横向航行,立刻发射制导鱼雷,若鱼雷速度为0.8海里/分,求敌舰航行多远及何时被鱼雷击中。
模型1:(仿真模拟) 我方位置取为[0,0],敌舰初始位置为[1,0],t时刻敌舰及鱼雷位置为[1,Zt]、[Xt,Yt],取时间间隔为s,计算不同时刻鱼雷敌舰位置,求出何时击中。 假设:制导鱼雷始终对准敌舰。则鱼雷t时刻x轴方向速度
Vx=0.8*(1-Xt)/[(1-Xt)^2+(Zt-Yt)^2]^0.5,y轴方向速度 Vy=0.8*(Zt-Yt)/[(1-Xt)^2+(Zt-Yt)^2]^0.5, Zt+s=Zt+0.4*s,Xt+s=Xt+s*Vx,Yt+s=Yt+s*Vy
>restart: >x[1]:=0:y[1]:=0:z[1]:=0:a[1]:=0.8:b[1]:=0: >for t from 2 to 60 do z[t]:=z[t-1]+0.4*0.1: x[t]:=x[t-1]+a[t-1]*0.1: y[t]:=y[t-1] +b[t-1]*0.1:a[t]:=0.8*(1-x[t-1])/sqrt((1-x[t-1])^2+(z[t-1]-y[t-1])^2):b[t]:=0.8*(z[t-1]-y[t-1])/sqrt((1-x[t-1])^2+(z[t-1]-y[t-1])^2)^0.5:if 1-x[t]<0.001 then break fi od:u:=seq([x,y],i=1..60):v:=seq([1,z],i=1..60):'t'=t;'z'=z[t]; >PLOT(CURVES(,COLOUR(HUE,1)),POINTS(v,COLOUR(HUE,0.2)),VIEW(0..1,0..1));
(微分方程模型)
>dsolve({diff(y(x),x$2)=sqrt(1+(diff(y(x),x))^2)/(2-2*x),y(0)=0,D(y)(0)=0},y(x)):allvalues(");
思考问题:如果不是制导鱼雷,只是普通直线发射鱼雷,如何才能击中敌舰?
|