4. 导弹运动方程组:动力学方程、运动学方程、质量变化方程、几何关系方程

各位同学,欢迎来到第四讲。

说实话,前面三讲我们一直在搭框架,讲坐标系、讲作用力。今天终于要动真格的了——我们要把导弹在空中飞行的整个过程,用数学语言完整地描述出来。

我个人习惯把这一讲称为“建模范式”。你想想看,导弹在天上飞,它受重力、受气动力、受推力,它还在不断变轻(燃料在烧),同时它的姿态还在转。这么多事情同时发生,我们怎么用一个方程组把它们全装进去?

答案就是今天要讲的四类方程:动力学方程、运动学方程、质量变化方程、几何关系方程

核心观点:导弹运动方程组 = 力与运动的关系(动力学)+ 位置与姿态的更新(运动学)+ 质量随时间的变化 + 各变量之间的约束(几何关系)。缺一个,模型就不完整。

4.1 动力学方程——力是怎么让导弹加速的

动力学方程,说白了就是牛顿第二定律在导弹上的应用。F = ma,这个大家都会。但在导弹上,事情没那么简单。

为什么?因为导弹在旋转。你想想看,一个旋转的物体,它的加速度不光来自外力,还来自旋转本身带来的附加项——这就是所谓的哥氏加速度向心加速度

我在项目中遇到过一件事:有一次仿真,导弹的攻角在某个时刻突然发散,怎么调参数都压不住。后来查了一整天,发现是动力学方程里少写了一个哥氏项。嗯,从那以后,我每次写动力学方程都会多检查两遍这个旋转耦合项。

在弹体坐标系下,动力学方程的矢量形式是这样的:

m * (dV/dt + ω × V) = F

其中:

  • m —— 导弹当前质量(注意,不是常数)
  • V —— 速度矢量(在弹体坐标系下表达)
  • ω —— 弹体角速度矢量
  • F —— 合外力矢量(推力 + 气动力 + 重力)

展开成三个分量方程,就是我们常说的:

方向 方程 物理含义
轴向(x) m(du/dt + qw - rv) = Fx 沿弹体纵轴的加速
法向(y) m(dv/dt + ru - pw) = Fy 侧向机动能力
法向(z) m(dw/dt + pv - qu) = Fz 俯仰方向的过载

这里 u、v、w 是速度在弹体坐标系下的三个分量,p、q、r 是角速度的三个分量。看着有点乱?其实你只要记住:左边第二项就是旋转带来的耦合项,没有它,你的导弹在旋转时算出来的加速度就是错的。

我的小技巧:写代码实现时,先把非耦合项写好(m * du/dt = Fx),再单独加一个函数计算耦合项(-m * (qw - rv)),最后加起来。这样调试时容易定位问题。

4.2 运动学方程——位置和姿态怎么更新

动力学方程告诉我们导弹的加速度,但我们要的是位置和姿态。这就需要运动学方程来“积分”。

运动学方程分两部分:

  • 质心运动学:速度 → 位置
  • 绕质心运动学:角速度 → 姿态角

质心运动学很简单,就是把速度从弹体坐标系转到地面坐标系,然后积分:

dx/dt = u * cosθ * cosψ + v * (sinφ * sinθ * cosψ - cosφ * sinψ) + w * (cosφ * sinθ * cosψ + sinφ * sinψ)
dy/dt = u * sinθ - v * sinφ * cosθ - w * cosφ * cosθ
dz/dt = -u * cosθ * sinψ + v * (sinφ * sinθ * sinψ + cosφ * cosψ) + w * (cosφ * sinθ * sinψ - sinφ * cosψ)

看着复杂?其实就是一个坐标变换矩阵在起作用。我个人习惯把这部分封装成一个函数,输入是 u、v、w 和姿态角,输出是地面系下的速度分量。

绕质心运动学稍微有点意思。它描述的是:已知弹体旋转的角速度 p、q、r,怎么算出俯仰角 θ、偏航角 ψ、滚转角 φ 的变化率?

dφ/dt = p + q * sinφ * tanθ + r * cosφ * tanθ
dθ/dt = q * cosφ - r * sinφ
dψ/dt = (q * sinφ + r * cosφ) / cosθ

注意!当 θ 接近 ±90° 时,tanθ 会趋于无穷大,dφ/dt 和 dψ/dt 会出现奇异。这就是所谓的“万向锁”问题。我在做高机动导弹仿真时遇到过这个问题,解决方案是用四元数代替欧拉角。这个我们后面会专门讲。

4.3 质量变化方程——燃料在烧,导弹在变轻

这个方程最简单,但也最容易被人忽略。

导弹飞行过程中,发动机一直在消耗燃料。质量在减少,质心位置也在移动。如果你把质量当成常数,那算出来的过载、弹道都会偏。

质量变化方程就是一句话:

dm/dt = -m_dot

其中 m_dot 是燃料的质量流量,通常由发动机的推力比冲决定:

m_dot = T / (Isp * g0)

这里 T 是推力,Isp 是比冲,g0 是地面重力加速度。

我曾经犯过一个低级错误:把 m_dot 写成了常数。结果仿真出来的弹道比实际试飞数据短了一大截。后来才发现,发动机的推力在飞行过程中是变化的(比如固体火箭的推力曲线是先升后降),m_dot 自然也不是常数。

建议:把质量变化单独作为一个模块。输入是发动机的工作时序和推力曲线,输出是当前时刻的质量和质心位置。这样换发动机型号时,只需要改这个模块就行。

4.4 几何关系方程——把所有的量串起来

有了动力学、运动学、质量变化,是不是就够了?还不够。因为导弹的很多状态量之间是有约束关系的。

比如:

  • 攻角 α侧滑角 β 是怎么从速度分量算出来的?
  • 弹道倾角 θ弹道偏角 ψv 和姿态角之间有什么关系?
  • 速度在弹体坐标系和速度坐标系之间怎么转换?

这些关系,就是几何关系方程要干的事。

举个例子,攻角和侧滑角的定义:

α = arctan(w / u)
β = arcsin(v / V)

其中 V = sqrt(u² + v² + w²) 是合速度大小。

再比如,弹道倾角 θ 和弹道偏角 ψv 与速度分量之间的关系:

θ = arcsin(Vy / V)
ψv = arctan(-Vz / Vx)

这些方程看起来简单,但它们是连接不同坐标系、不同物理量的桥梁。没有它们,你算出来的攻角可能是错的,控制律也就无从谈起。

总结一下:四类方程各司其职——动力学方程算加速度,运动学方程算位置和姿态,质量变化方程算质量,几何关系方程算攻角、侧滑角等中间变量。把它们组合在一起,就是一个完整的导弹运动方程组。

4.5 知识体系框架

下面这张图,是我自己整理的四类方程之间的关系。你可以把它当作本章的“地图”:

导弹运动方程组知识框架 动力学方程 m(dV/dt + ω×V) = F 计算加速度、角加速度 输入:力、力矩、质量、惯量 运动学方程 dx/dt = f(u,v,w,姿态) 计算位置、姿态角 输入:速度、角速度 质量变化方程 dm/dt = -m_dot 计算当前质量、质心位置 输入:推力曲线、比冲 几何关系方程 α = arctan(w/u) 计算攻角、侧滑角等 连接不同坐标系 速度、角速度 质量、惯量 攻角、侧滑角 四类方程相互耦合,共同构成完整的导弹运动模型 仿真时需在每个时间步内联立求解

从这张图你可以看到,四类方程不是孤立的。动力学方程需要质量变化方程提供当前质量,需要几何关系方程提供攻角来计算气动力;运动学方程需要动力学方程提供速度;几何关系方程又需要运动学方程提供的姿态角……它们是一个闭环。

仿真实现时的建议:每个时间步按这个顺序执行——① 从几何关系方程算攻角、侧滑角 → ② 从质量变化方程算当前质量 → ③ 计算气动力和推力 → ④ 动力学方程算加速度和角加速度 → ⑤ 运动学方程更新位置和姿态。循环往复,直到仿真结束。

好了,这一讲的内容就到这里。四类方程是导弹建模的基石,你把它吃透了,后面讲制导律、控制律的时候,就会觉得顺理成章。


公众号:蓝海资料掘金营,微信deep3321