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 知识体系框架
下面这张图,是我自己整理的四类方程之间的关系。你可以把它当作本章的“地图”:
从这张图你可以看到,四类方程不是孤立的。动力学方程需要质量变化方程提供当前质量,需要几何关系方程提供攻角来计算气动力;运动学方程需要动力学方程提供速度;几何关系方程又需要运动学方程提供的姿态角……它们是一个闭环。
仿真实现时的建议:每个时间步按这个顺序执行——① 从几何关系方程算攻角、侧滑角 → ② 从质量变化方程算当前质量 → ③ 计算气动力和推力 → ④ 动力学方程算加速度和角加速度 → ⑤ 运动学方程更新位置和姿态。循环往复,直到仿真结束。
好了,这一讲的内容就到这里。四类方程是导弹建模的基石,你把它吃透了,后面讲制导律、控制律的时候,就会觉得顺理成章。
公众号:蓝海资料掘金营,微信deep3321