Matlab数学建模微分方程求解导弹问题
Posted 九死九歌
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Matlab数学建模微分方程求解导弹问题相关的知识,希望对你有一定的参考价值。
设位于坐标原点的甲舰向位于 x x x轴上点 A ( 1 , 0 ) A(1, 0) A(1,0)处的乙舰发射导弹,导弹始终对准乙舰。如果乙舰以最大的速度 v 0 v_0 v0( v 0 v_0 v0是常数)沿平行于 y y y轴的直线行驶,导弹的速度是 5 v 0 5v_0 5v0,求导弹运行的曲线,乙舰行驶多远时,导弹会将它击中?
我们设在时刻为t时,导弹的位置是 P ( x ( t ) , y ( t ) ) P(x(t), y(t)) P(x(t),y(t)),乙舰的位置是 Q ( 1 , v 0 t ) Q(1, v_0t) Q(1,v0t)
易知,在t时刻时:
y
′
=
v
0
t
−
y
x
−
1
即
:
v
0
t
=
(
1
−
x
)
y
′
+
y
⋯
⋯
(
1
)
y\\prime = \\fracv_0t - yx - 1\\\\即:v_0t = (1 - x)y\\prime + y\\cdots\\cdots(1)
y′=x−1v0t−y即:v0t=(1−x)y′+y⋯⋯(1)
另外,由于弧 O P OP OP的长度是 ∣ A Q ∣ |AQ| ∣AQ∣的五倍,所以:
∫ 0 x 1 + y ′ 2 d x = 5 v 0 t ⋯ ⋯ ( 2 ) \\int_0^x\\sqrt1 + y\\prime^2dx = 5v_0t\\cdots\\cdots(2) ∫0x1+y′2dx=5v0t⋯⋯(2)
联立(1)(2)两式,可得:
y
′
′
=
1
+
y
′
2
5
(
1
−
x
)
y\\prime\\prime = \\frac\\sqrt1 + y\\prime^25(1 - x)
y′′=5(1−x)1+y′2
于是就能编写出代码
f = @(x, y) [
y(2)
0.2 * sqrt(1 + y(1) ^ 2) / (1 - x)
];
[x, y] = ode15s(f, [0, 0.999], [0, 0]);
plot(x, y(:, 1), [1, 1], [0, 2]);
axis([0, 1, 0, 1]);
以上是关于Matlab数学建模微分方程求解导弹问题的主要内容,如果未能解决你的问题,请参考以下文章