某军的一导弹基地发现正北方向120km处海面上有敌艇一艘向正东方向行驶。该基地立即发射导弹跟踪追击敌艇,导弹速度为450km/h,自动导航系统使导弹在任一时刻都能对准敌艇。而当基地发射导弹的同时,敌艇立即由仪器发觉。假定敌艇为一高速快艇,它即刻以135km/h的速度与导弹方向成固定角度逃逸。在导弹追踪过程中,飞行角度在1s内改变pi /180时,其速度相应减2%,试问导弹在何时何处击中敌艇?
解:仿真法
设固定角度为a,指从导弹运动方向顺时针到敌艇运动方向的夹角。取导弹基地为原点O(0,0),x轴指向正东方向,y轴指向正北方向,建立平面直角坐标系。并记 L=120km Ve=135km/h
设敌艇在时刻的位置为导弹在 时刻的位置为 速度为 由题意可得,在时刻
其中,
可以化简为
在Matlab中输入文件missile_7.m为
function missile_7(tau,aoe,atte,dist)
%,MISSILE_7 此处显示有关此函数的摘要
% 此处显示详细说明
L=120
ve=135
vm(1)=450
xe(1)=ve*tau*sin(aoe)
ye(1)=L+ve*tau*cos(aoe)
xm(1)=vm(1)*tau
ym(1)=0
theta(1)=atan((ye(1)-ym(1))/(xe(1)-xm(1)))
for i=1:10e6
M(i)=sqrt((xe(i)-xm(i))^2+(ye(i)-ym(i))^2)
N(i)=(xe(i)-xm(i))
Q(i)=(ye(i)-ym(i))
xe(i+1)=xe(i)+ve*tau*(cos(aoe)*N(i)/M(i)+sin(aoe)*Q(i)/M(i))
ye(i+1)=ye(i)+ve*tau*(cos(aoe)*Q(i)/M(i)-sin(aoe)*N(i)/M(i))
xm(i+1)=xm(i)+vm(i)*tau*N(i)/M(i)
ym(i+1)=ym(i)+vm(i)*tau*Q(i)/M(i)
theta(i+1)=atan((ye(i+1)-ym(i+1))/(xe(i+1)-xm(i+1)))
if abs(theta(i+1)-theta(i))>=pi/180
%theta1=theta(i+1)
vm(i+1)=vm(i)*atte
else
vm(i+1)=vm(i)
end
if (xe(i)-xm(i))^2+(ye(i)-ym(i))^2<dist^2
%距离小于dkm时视为击中
break
end
end
T=i*tau
hv=vm(i)
hx=xe(i)
hy=ye(i)
end
在Matlab中输入时间间隔tau、所成角度aoe,导弹转向后的速度衰减系数atte,及被视为击中的临界距离dist(以导弹的有效杀伤半径为参考,比如 0.1km)。另外,tau 取值要适中,以1/3600 为宜,得到的结果如下表:
hx,hy 为 敌艇被击中时的x,y 坐标 vm 为导弹击中敌艇时的速度
Euler法
由题意可得
化简
其中 SIGN1-4为各式的符号修正
在Matlab中输入missile_6.m文件
function missile_6(tau,aoe,atte,dist)
%MISSILE_6 此处显示有关此函数的摘要
% 此处显示详细说明
L=120
ve=135
vm=450
c=tan(aoe)
xe(1)=ve*tau*sin(aoe)
ye(1)=L+ve*tau*cos(aoe)
xm(1)=0
ym(1)=vm*tau
theta(1)=atan((ye(1)-ym(1))/(xe(1)-xm(1)))
if atte>1 || atte<0
atte=1
end
for i=1:10e6
tom(i)=(ye(i)-ym(i))/(xe(i)-xm(i))
M(i)=(tom(i)-c)/(1+c*tom(i))
P(i)=(xe(i)-xm(i))
Q(i)=(ye(i)-ym(i))
xe(i+1)=xe(i)+ve*tau/sqrt(1+M(i)^2)*(cos(aoe)*P(i)+sin(aoe)*Q(i))/abs(cos(aoe)*P(i)+sin(aoe)*Q(i))
ye(i+1)=ye(i)+ve*tau/sqrt(1+1/M(i)^2)*(cos(aoe)*Q(i)-sin(aoe)*P(i))/abs(cos(aoe)*Q(i)-sin(aoe)*P(i))
xm(i+1)=xm(i)+vm*tau/sqrt(1+tom(i)^2)*((xe(i)-xm(i))/abs(xe(i)-xm(i)))
ym(i+1)=ym(i)+vm*tau/sqrt(1+1/tom(i)^2)*((ye(i)-ym(i))/abs(ye(i)-ym(i)))
theta(i+1)=atan((ye(i+1)-ym(i+1))/(xe(i+1)-xm(i+1)))
if abs(theta(i+1)-theta(i))>=pi/180
%theta1=theta(i+1)
vm=vm*atte
end
if (xe(i)-xm(i))^2+(ye(i)-ym(i))^2<dist^2
%距离小于dkm时视为击中
break
end
end
T=i*tau
vm=vm*1
hx=xe(i)
hy=ye(i)
end
在Matlab中输入时间间隔tau、所成角度aoe,导弹转向后的速度衰减系数atte,及被视为击中的临界距离dist(以导弹的有效杀伤半径为参考,比如 0.1km)。另外,tau 取值要适中,以1/3600 为宜,得到的结果如下表:
hx,hy 为 敌艇被击中时的x,y 坐标 vm 为导弹击中敌艇时的速度
标签:tau,aoe,ym,ye,vm,导弹,数学,xe,追踪 From: https://www.cnblogs.com/alpha-pluto/p/17053144.html