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)