python 三体 模拟_三体究竟有多可怕?用Python建模来深度了解

全文共7726字,预计学习时长15分钟或更长
图片来自, 凯文·吉尔
中国作家刘慈欣的科幻小说《三体》中描绘了存在于被三颗恒星环绕的“三体”星球上的一种虚构外星文明 。能想象这种文明的存在因三颗恒星而和我们的文明大不相同吗?炫目的阳光?持续的夏日?事实证明,情况要糟糕很多 。
生活在仅有一颗主要恒星的太阳系是值得庆幸的,因为这使得这颗恒星(太阳)的轨道有可预测性 。即使增加一颗恒星,这个系统仍能保持稳定 。该系统有个被称为分析解的解法,即描绘解方程式,并得到可以精确提供该系统从一秒到百万年时间演变的函数 。
然而,当加入第三体时,就会发生特殊情况 。系统会变得混乱而不可预测 。没有分析解法(除了少数特定情况),并且只能在计算机上用数字解方程式 。它们会突然从稳定变到不稳定,或者从不稳定变到稳定 。在如此混乱的世界中,三体人进化出了在“混乱时代”自我“脱水”并休眠,而在“稳定时代”温和地复苏并生活的能力 。
书中对恒星系统有趣的形象化描述激发了我们对万有引力中n体类问题以及解决这类问题的数值算法的研究 。此文涉及一些理解问题必要的万有引力核心概念,以及描绘系统解方程式必要的数值算法的核心概念 。
此文将讲述以下工具和概念的实施方法:
· 使用Scipy模型中的函数解中的微分方程
·无量纲化方程式
· 在中进行3D绘制
万有引力概要
1. 牛顿的万有引力定律
牛顿的万有引力定律提出,任何两个质点之间都存在相互吸引力(称之为万有引力),其大小与它们质量的乘积直接成正比,与它们之间距离的平方成反比 。以下方程式以向量的形式表示了这条定律:
在这里,G为万有引力常数,m?和 m?为两物体的质量,r为物体间的距离 。单位向量从m?指向 m? 并且力的作用方向也是相同的 。
2. 运动方程
根据牛顿第二运动定律,物体上的合力造成了物体动量的净变化——简而言之,力就是质量乘以加速度 。因此,将上述方程式应用到质量m? 的物体中,就可以得到以下运动微分方程 。
这里要注意的是,单位向量r被分解成向量r除以其大小|r|,因此要增加分母中r项的幂到3.
现在得到一个二阶微分方程,它描绘了两个物体间因重力而存在的相互作用 。为简化解法,可以将其分解成两个一阶微分方程 。
物体的加速度是物体速率随时间的变化,因此速率的一阶微分可以替代位置的二阶微分 。类似地,速率可表示为位置的一阶微分 。
指数i 表示要计算位置和速率的物体,而指数j表示和物体i相互作用的其他物体 。因此,对一个二体系统来说,就要解两组方程式 。
3. 质心
另一个值得记下来的实用概念是系统的质心 。质心是一个点,在这个点上系统的所有质量矩总和为零——简而言之,可以将其想象成整个系统质量平衡的点 。
有个简单的公式可以找到系统的质心和速率,该公式包括位置和速率向量的质量加权平均值 。
在三体系统建模之前,先来为一个二体系统建模,观测其行为然后将代码延伸应用到三体系统中 。
二体模型
1. 半人马座α星恒星系统
一个著名的二体系统实例或许就是半人马座α星恒星系统 。它包括三颗恒星——半人马座α星A,半人马座α星B,半人马座α星C(通常称之为比邻星) 。然而,由于和其他两颗恒星相比,比邻星的质量小到可以忽视,半人马座α星也被视作双星系统 。这儿有个需注意的要的点是,n体系统中考虑到的物体都有相似的质量 。因此,日-地-月不是一个三体系统,因为它们没有同等的质量,并且地球和月球对太阳的轨迹影响不大 。