急求matlab高手!急!

来源:百度知道 编辑:UC知道 时间:2024/05/16 05:44:20
有一道题想请matlab高手用matlab编写一段小程序解决一下,谢谢!
1、某军一导弹基地发现正北方向120km处海面上有敌艇一艘以9km/h的速度向正东方向行驶。该基地立即发射导弹跟踪追击敌艇,导弹的速度为450km/h,自动导航系统使导弹在任一时刻都能对准敌艇,试画出导弹追击轨迹。
2、如果当基地发射导弹的同时,敌艇立即由仪器发觉,假定敌艇为一高速快艇,它立刻以135km/h的速度与导弹垂直的方向逃逸,问试画出导弹追击轨迹。

【1】
当t =0 时,导弹位于原点O,敌艇位于(0,120)点;
当时刻t ,导弹位于L(x(t),y(t)),敌艇位于(9t,120)点。

导弹速度可由水平分速度与垂直分速度合成:
(dx/dt)^2+(dy/dt)^2=450^2______【1】

导弹方向指向敌艇,导弹轨迹的导数就是其切线,所以
dy/dx=(120-y)/(9t-x)__________【2】
而dy/dx=(dy/dt)/(dx/dt)

解以上微分方程组,初始条件为:x(0)=0,y(0)=0

这里用差分方法。
dx=x(k+1)-x(k);dy=y(k+1)-y(k);dt=t(k+1)-t(k)=h

%Matlab程序:
clear;clc
h=0.1;%时间步长
k=1;
t(1)=0;x(1)=0;y(1)=0;%初始值
while y<=120
x(k+1)=x(k)+450*h/sqrt(1+((120-y(k))/(9*t(k)-x(k)))^2);
y(k+1)=y(k)+450*h/sqrt(1+((9*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.2668
x = 2.4017
y = 120.0029

【2】把9改成135即可。