CR3BP 动力学

圆型限制性三体问题的运动方程与太阳辐射压力 (SRP) 摄动。

运动方程

CR3BP 在旋转坐标系下的运动方程:

\[ \begin{align}\begin{aligned}\ddot{x} - 2\dot{y} = \frac{\partial \Omega}{\partial x}\\\ddot{y} + 2\dot{x} = \frac{\partial \Omega}{\partial y}\\\ddot{z} = \frac{\partial \Omega}{\partial z}\end{aligned}\end{align} \]

其中 Ω 为伪势能函数。

伪势能 Ω

伪势能由引力势与离心势组成:

\[ \begin{align}\begin{aligned}\Omega = \frac{1}{2}(x^2 + y^2) + \frac{1-\mu}{r_1} + \frac{\mu}{r_2}\\r_1 = \sqrt{(x+\mu)^2 + y^2 + z^2}\\r_2 = \sqrt{(x-1+\mu)^2 + y^2 + z^2}\end{aligned}\end{align} \]

其中 r₁、r₂ 分别为第三体到两个主天体的距离。

科里奥利力与离心力

旋转坐标系中的惯性力:

  • 科里奥利力: 与速度方向垂直,不改变能量

  • 离心力: 沿径向向外,与伪势能中的离心势对应

状态转移矩阵 (STM)

状态转移矩阵描述初始状态微小偏差的线性演化:

\[\delta \mathbf{x}(t) = \boldsymbol{\Phi}(t, t_0) \, \delta \mathbf{x}(t_0)\]

其中 \(\boldsymbol{\Phi}\) 为 6×6 状态转移矩阵,满足:

\[\dot{\boldsymbol{\Phi}} = \mathbf{A}(t) \, \boldsymbol{\Phi}, \quad \boldsymbol{\Phi}(t_0, t_0) = \mathbf{I}\]

\(\mathbf{A}(t)\) 为运动方程的雅可比矩阵。

太阳辐射压力 (SRP)

SRP 对第三体的摄动加速度:

\[\mathbf{a}_{SRP} = -\frac{P_{SR} \, C_R \, A}{m} \hat{\mathbf{r}}_s\]

其中:

  • \(P_{SR}\) — 太阳辐射压强

  • \(C_R\) — 反射系数

  • \(A/m\) — 面质比

  • \(\hat{\mathbf{r}}_s\) — 朝向太阳方向的单位向量

使用示例

from e2m2e.core.system import CR3BP_System
from e2m2e.core.dynamics import CR3BP_Dynamics, SRP_Perturbation

# 创建系统与动力学对象
system = CR3BP_System.from_known_system("earth_moon")
dynamics = CR3BP_Dynamics(system)

# 计算加速度
state = [0.8, 0, 0, 0, 0.6, 0]
accel = dynamics.compute_acceleration(state)
print(f"accel = {accel}")

# 计算状态转移矩阵
stm = dynamics.compute_stm(state)
print(f"STM shape = {stm.shape}")

# 添加 SRP 摄动
srp = SRP_Perturbation(CR=1.2, Am=0.01)
dynamics_with_srp = dynamics.with_perturbation(srp)