多体重力模拟器(N体问题) 返回
宇宙物理 / 轨道力学

多体重力模拟器(N体问题)

放置星球、行星、小行星,实时可视化重力导致的轨道运动、碰撞和合并。包含8字形轨道、太阳系、双星、星系预设。

统计
预设
天体类型
⭐ 星
🪐 行星
🌑 小行星
物理参数
显示选项
计算结果
0
天体数
0
时间(年)
总能量
最大质量
模拟
天体数: 0
经过时间: 0.00 yr
总能量:
最大质量体:
点击:放置天体 / 拖动:放置天体并设置初速度
理论·主要公式

$$\mathbf{F}_{ij} = G\frac{m_i m_j}{|\mathbf{r}_{ij}|^2}\hat{\mathbf{r}}_{ij}$$

万有引力:\(G = 6.674\times10^{-11}\) N·m²/kg²、\(\mathbf{r}_{ij} = \mathbf{r}_j - \mathbf{r}_i\)

$$\ddot{\mathbf{r}}_i = \sum_{j \neq i} \frac{G m_j}{|\mathbf{r}_{ij}|^2 + \epsilon^2}\hat{\mathbf{r}}_{ij}$$

软化参数 \(\epsilon\):防止近距离发散

$$E = \frac{1}{2}\sum_i m_i v_i^2 - \sum_{i<j}\frac{G m_i m_j}{r_{ij}} = \text{const}$$

力学能守恒:用于验证数值精度

多体重力模拟器(N体问题)是什么

🙋
什么是N体问题?我听说两个星球之间的轨道是可以计算的,但三个及以上会怎样?
🎓
简单地说,三个及以上天体在重力作用下的运动是"混沌的"问题,无法用数学公式直接解出答案。两体问题(如太阳和行星)有完美的解析解,遵循开普勒定律。但加入第三个天体后,问题变得极其复杂,必须用计算机一步步计算未来的位置。这叫"数值模拟"。如果选择这个模拟器中的"三体混沌"预设,打开轨道迹线显示,你会看到一条完全无法预测的美妙轨道。
🙋
那如果星系有数百万颗星星,岂不是需要计算数百万个相互作用?这样不会太慢吗?
🎓
完全正确!如果直接计算,对于N个星体需要进行N²次的计算,很快就会超过计算机的极限。在真实的CAE软件中,天文学家使用聪明的算法,如"Barnes-Hut树法"或"快速多极法",将距离较远的星团合并为一个整体来近似计算。在这个模拟器中,如果你放置很多天体并打开"力矢量"显示,你能看到每个天体受到所有其他天体的拉力——那复杂的相互作用就是现实中超级计算机要处理的东西。
🙋
我听预设中提到"8字形轨道"。这个轨道怎么会这么特殊呢?
🎓
这是一个很有趣的发现!2000年才被发现的三个等质量天体描绘出8字形的稳定周期轨道。有趣的是,这不是通过数学推导发现的,而是通过计算机搜索才被找到的。这个模拟器中选择"8字形"预设,然后打开速度矢量显示,你能看到每个天体的速度和受力如何达到精妙的平衡,从而维持8字形的运动。这就是计算模拟的魅力所在。

常见问题

当然可以。在画布上自由放置星体和行星,通过拖动设置初始速度来创建任意轨道。如果想重现已知的稳定轨道(如8字形),可以参考相关文献中的初始条件。
这通常是因为时间步长太大,或天体距离过近导致计算误差。可以在模拟设置中减小时间步长来提高稳定性。质量比极端的情况也要小心。
默认情况下,碰撞的两个天体会合并成一个,质量和动量得到守恒。合并后的速度根据动量守恒定律计算。可以通过设置禁用合并并使其反弹。
原则上可以,但需要输入真实的行星质量、轨道半径和初速度。不过,数值误差会随着时间积累,长期预报会变得不准确。这个模拟器更适合短期轨道可视化和力学理解。

现实应用

天体物理与宇宙模拟:太阳系的长期稳定性调查、小行星带的动力学、双星系统的演化、星系形成与碰撞等,都依赖于N体问题的数值模拟。与观测数据结合可以推估暗物质的分布。

航天轨道设计:"三体问题"框架在设计考虑地球、月球和太阳重力的航天器轨迹时至关重要,特别是低能转移轨道(如隼鸟2号的往返轨道)。精确的重力辅助机动也依赖于三体动力学。

CAE(计算工程)的基础技术:N体问题的高速计算算法是分子动力学法(MD)中原子间相互作用、粒子法(SPH)中流体粒子相互作用、离散元法(DEM)中粉体碰撞的计算基础。这些都是多体系统相互作用的变种。

教育与可视化:像这个模拟器这样的工具,能让复杂的物理现象直观可视化,并让用户通过改变参数立即看到结果——这对物理和工程教育来说是强大的学习手段。能帮助学生直观体验"混沌"和"稳定性"的概念。

常见误解与注意事项

首先,"软件在实时运行,所以结果一定是准确的"——这是一个严重的误会。这个模拟器优先考虑速度和可视化清晰度,而非数值精度。例如,如果时间步长Δt设得太大,能量不再守恒,轨道会逐渐膨胀或收缩——这叫"数值不稳定性"。在真实的专业软件中,对公转周期只有1/1000的时间步长才能保证精度。

其次,不要忽视"混沌性"——初始条件的微小差异会导致完全不同的结果。例如,把地球位置改变1米,几百年后它的轨道可能完全不同。这不是软件的错误,而是三体问题的本质。如果需要重现性,初始条件必须精确记录。

最后,关于"碰撞"的处理。这个工具中两个星体重叠就合并,但现实中的天体碰撞远更复杂:会产生破碎、蒸发、碎片散射等。想要模拟真实的撞击现象需要专门的"撞击动力学"模拟,不能用这个简单的合并模型。

使用指南

  1. 用slMassNum参数设定天体数量在2~100个范围内,用sl-mass调整各天体质量范围0.5~500太阳质量
  2. 用slVelNum设定初速度在秒速1~100km/s范围,用slGNum确认重力常数G=6.674×10⁻¹¹m³/(kg·s²)
  3. 用sl-dt在0.001~0.1天单位设定时间步长来控制模拟精度,点击播放按钮开始轨道计算

具体计算示例

设定太阳质量1.989×10³⁰kg的中心星,地球质量5.972×10²⁴kg的行星3个,初始设置时,用slVelNum=29.8km/s可以稳定地球型轨道。使用sl-dt=0.01天(14.4秒)的时间步长,以Leapfrog法进行计算,可以实时追踪100年的轨道变化,木星质量天体的摄动引起的近日点移动能以1度/1000年的精度被检测出来。

实务中的注意事项

  1. 当sl-dt超过0.1天时,能量守恒的误差会增加到5%以上,多体系统有轨道飞逸的危险,因此应设定在0.01天以下
  2. 当slMassNum放置超过50个天体时,计算负荷为O(N²)增长,需要监测CPU温度
  3. 行星碰撞场景中要将碰撞检测半径设为sl-mass立方根的比例,太阳系形成模型中要以5×10⁶年的时间尺度再现尘埃盘中微行星的集聚过程