matlab实践(十一):导弹追踪
1.题目
a=9.94,x0=62.06
2.方程
我们有:
(
d
x
d
t
)
2
+
(
d
y
d
t
)
2
=
w
2
(\frac{\mathrm d\mathrm x}{\mathrm d\mathrm t})^2+(\frac{\mathrm d\mathrm y}{\mathrm d\mathrm t})^2=\mathrm w^2
(dtdx?)2+(dtdy?)2=w2
还有导弹始终指向船
(
d
x
d
t
d
y
d
t
)
=
λ
(
X
?
x
Y
?
y
)
\left.\left(\begin{array}{c}\frac{\mathrm{dx}}{\mathrm{dt}}\\\frac{\mathrm{dy}}{\mathrm{dt}}\end{array}\right.\right)=\lambda\left(\begin{array}{c}\mathrm{X-x}\\\mathrm{Y-y}\end{array}\right)
(dtdx?dtdy??)=λ(X?xY?y?)
则有:
{
d
x
d
t
=
w
(
X
?
x
)
2
+
(
Y
?
y
)
2
(X-x)
d
y
d
t
=
w
(
X
?
x
)
2
+
(
Y
?
y
)
2
(Y-y)
\begin{cases}&\frac{\mathrm{dx}}{\mathrm{dt}}=\frac{\mathrm{w}}{\sqrt{(\mathrm{X}-\mathrm{x})^2+(\mathrm{Y}-\mathrm{y})^2}}\text{(X-x)}\\&\frac{\mathrm{dy}}{\mathrm{dt}}=\frac{\mathrm{w}}{\sqrt{(\mathrm{X}-\mathrm{x})^2+(\mathrm{Y}-\mathrm{y})^2}}\text{(Y-y)}\\\end{cases}
?
?
???dtdx?=(X?x)2+(Y?y)2?w?(X-x)dtdy?=(X?x)2+(Y?y)2?w?(Y-y)?
先编写函数:
function dy=eq1(t,y)
v0=10;
a=9.94;
x0=62.06;
dy=zeros(2,1);
dy(1)=a*v0*(x0-y(1))/sqrt((x0-y(1))^2+(v0*t-y(2))^2);
dy(2)=a*v0*(v0*t-y(2))/sqrt((x0-y(1))^2+(v0*t-y(2))^2);
end
接着利用ode45求解
%调用
[t,y]=ode45('eq1',[0 0.6],[0 0]);
plot(y(:,1),y(:,2),'r*')
更改函数中的v0可以得到不同的轨迹
对于第二题做法是求出中间时刻t,dx,dy再列方程求解
试探法得到t=0.3125,dy=0.9910,由公式一得到dx
新函数
function dy=eq3(t,y)
v0=10;
a=9.94;
x0=62.06;
t1=0.3125;
dy=zeros(2,1);
dy(1)=a*v0*(x0-y(1))/sqrt((x0-y(1))^2+((1.5*v0*t+t1*10)-y(2))^2);
dy(2)=a*v0*((1.5*v0*t+t1*10)-y(2))/sqrt((x0-y(1))^2+((1.5*v0*t+t1*10)-y(2))^2);
end
求解
clc;clear;
x0=62.06;
a=9.94;
y11=0.990954556248263;
%调用
[t,y]=ode45('eq1',[0 0.3125],[0 0]);
dy=0.0767429352348030;
dx=sqrt(9.94*10*9.94*10-dy^2);
plot(y(:,1),y(:,2),'r*')
hold on
[t1,y1]=ode45('eq3',[0 0.325],[31.03 y11]);
plot(y1(:,1),y1(:,2),'b*')
红色是加速前的轨迹,蓝色是加速后的轨迹。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!