作业帮 > 数学 > 作业

悬赏30分,请高手今晚用matlab解出这道题

来源:学生作业帮 编辑:灵鹊做题网作业帮 分类:数学作业 时间:2024/05/14 17:09:31
悬赏30分,请高手今晚用matlab解出这道题
导弹追踪问题:
某军一导弹基地发现正北方向120km处海面上有敌艇一艘以90km/h的速度向正东方向行驶,该基地立即发射导弹追击敌艇,导弹速度为630km/h,自动导航系统使导弹在任一时刻都能对准敌艇,试问导弹在何时何处击中敌艇?
悬赏30分,请高手今晚用matlab解出这道题
当t =0 时,导弹位于原点O,敌艇位于(0,120)点;
当时刻t ,导弹位于L(x(t),y(t)),敌艇位于(90t,120)点.
导弹速度可由水平分速度与垂直分速度合成:
(dx/dt)^2+(dy/dt)^2=630^2______【1】
导弹方向指向敌艇,导弹轨迹的导数就是其切线,所以
dy/dx=(120-y)/(90t-x)__________【2】
而dy/dx=(dy/dt)/(dx/dt)
解以上微分方程组,初始条件为:x(0)=0,y(0)=0
【1】Matlab符号解法:
>> dsolve('(Dx)^2+(Dy)^2=630^2','Dy=Dx*(120-y)/(90*t-x)','x(0)=0,y(0)=0')
解不出来,需要数值解法.
【2】数值解法,可以用差分方程法,也可以用龙格库塔法,还可以消去t,化为二阶微分方程.这里用差分方法.
dx=x(k+1)-x(k);dy=y(k+1)-y(k);dt=t(k+1)-t(k)=h
%Matlab程序:
clear;clc
h=0.0001;%时间步长
k=1;
t(1)=0;x(1)=0;y(1)=0;%初始值
while yx(k+1)=x(k)+630*h/sqrt(1+((120-y(k))/(90*t(k)-x(k)))^2);
y(k+1)=y(k)+630*h/sqrt(1+((90*t(k)-x(k))/(120-y(k)))^2);
t(k+1)=h*k;
k=k+1;
end
plot(x,y,x(1):0.05:x(end),120)
t=t(end),x=x(end),y=y(end)
运行结果:
t = 0.1945
x = 17.5281
y = 120.0140
图形见: