太阳、地球、月球三体系统,采用真实比例的质量和万有引力模拟,地球和月球维持稳定椭圆轨道。
本案例模拟真实的日-地-月三体系统:
原子间万有引力由 gravity_strength 缩放控制,$F = G \dfrac{m_1 m_2}{r^2}$。
| 天体 | 质量 / kg | 模拟质量(月球=1) |
|---|---|---|
| 太阳 | $1.989 \times 10^{30}$ | $27\,000$ |
| 地球 | $5.972 \times 10^{24}$ | $81$ |
| 月球 | $7.35 \times 10^{22}$ | $1$ |
| 轨道 | 半长轴 $a$ | 偏心率 $e$ | 半短轴 $b$ | 周期 |
|---|---|---|---|---|
| 地球绕太阳 | $1.4960 \times 10^8$ km (1 AU) | $0.0167$ | $1.4958 \times 10^8$ km | 365.25 天 |
| 月球绕地球 | $3.844 \times 10^5$ km | $0.0549$ | $3.838 \times 10^5$ km | 27.32 天 |
拖动下方滑块改变偏心率 $e$,观察轨道形状的变化和参数标注:
拖动下方滑块改变月球轨道偏心率 $e_\text{moon}$(真实值 0.0549):
偏心率 $e$ 描述椭圆轨道偏离正圆的程度:
其中 $c = ea$ 为偏心距(焦点到椭圆中心的距离),$a$ 为半长轴。
| $e$ 值 | 轨道形状 | 说明 |
|---|---|---|
| $e = 0$ | 正圆形 | 速度恒定,距离恒定 |
| $0 < e < 1$ | 椭圆 | 近日点/近地点速度最大,远日点/远地点速度最小 |
| $e = 1$ | 抛物线 | 逃逸轨道,速度恰好达到逃逸速度 |
| $e > 1$ | 双曲线 | 飞越轨道,速度超过逃逸速度 |
当 $e \ll 1$ 时,$b \approx a\left(1 - \dfrac{e^2}{2}\right)$,椭圆度非常微小。
近日点(距太阳最近)和远日点(距太阳最远)的距离分别为:
在近日点轨道速度最大,在远日点轨道速度最小:
真实尺度无法直接用于模拟(日地距离 1.5 亿 km),因此采用缩放参数。当前 case04 的配置为教学演示而简化:
| 参数 | 值 | 说明 |
|---|---|---|
gravity_strength | 100.0 | 万有引力强度 |
box_a | 30.0 | 盒子半边长 |
method | leapfrog | 蛙跳法(辛积分器,能量守恒) |
T_total | 10.0 s | 总模拟时间 |
NSTEP | 2 | 抽帧间隔(密采帧) |
| 天体 | 质量 | 位置 $(x,y,z)$ | 速度 $(v_x,v_y,v_z)$ | 固定约束 |
|---|---|---|---|---|
| 太阳 | $27\,000$ | $(0,0,0)$ | $(0,0,0)$ | 全部固定 |
| 地球 | $81$ | $(10,0,0)$ | $(0,0,520)$ | 无 |
| 月球 | $1$ | $(10.5,0,0)$ | $(0,0,647)$ | 无 |
地球在 $z$ 方向获得初速度 $v=520$,产生绕太阳的轨道运动(接近圆轨道);月球在地球基础上附加 $v\approx127$ 的绕地速度,形成绕地球的轨道。速度由圆形轨道公式 $v = \sqrt{G_{\text{eff}} M / r}$ 计算,其中 $G_{\text{eff}} = \text{gravity\_strength} = 100$。
# 进入 case04 目录并运行
cd examples/case04
python run_dynamics.py
# 仅输出轨迹图,跳过动画
python run_dynamics.py --no-plot
配置文件:input/input.txt(物理参数)、input/coord.txt(初始位置/速度)。
| case03(失败案例) | case04(成功案例) | |
|---|---|---|
| 轨道状态 | 轨道发散或碰撞 | 稳定椭圆轨道 |
| 关键差异 | 初始速度或质量比不恰当 | 合理的初值和参数 |
| 教学意义 | 展示参数选择的重要性 | 展示正确的三体运动 |