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

图片来自flickr, 凯文·吉尔

中国作家刘慈欣的科幻小说《三体》中描绘了存在于被三颗恒星环绕的“三体”星球上的一种虚构外星文明。能想象这种文明的存在因三颗恒星而和我们的文明大不相同吗?炫目的阳光?持续的夏日?事实证明,情况要糟糕很多。

生活在仅有一颗主要恒星的太阳系是值得庆幸的,因为这使得这颗恒星(太阳)的轨道有可预测性。即使增加一颗恒星,这个系统仍能保持稳定。该系统有个被称为分析解的解法,即描绘解方程式,并得到可以精确提供该系统从一秒到百万年时间演变的函数。

然而,当加入第三体时,就会发生特殊情况。系统会变得混乱而不可预测。没有分析解法(除了少数特定情况),并且只能在计算机上用数字解方程式。它们会突然从稳定变到不稳定,或者从不稳定变到稳定。在如此混乱的世界中,三体人进化出了在“混乱时代”自我“脱水”并休眠,而在“稳定时代”温和地复苏并生活的能力。

书中对恒星系统有趣的形象化描述激发了我们对万有引力中n体类问题以及解决这类问题的数值算法的研究。此文涉及一些理解问题必要的万有引力核心概念,以及描绘系统解方程式必要的数值算法的核心概念。

此文将讲述以下工具和概念的实施方法:

· 使用Scipy模型中的odeint函数解Python中的微分方程

· 无量纲化方程式

· 在Matploylib中进行3D绘制

万有引力概要

1. 牛顿的万有引力定律

牛顿的万有引力定律提出,任何两个质点之间都存在相互吸引力(称之为万有引力),其大小与它们质量的乘积直接成正比,与它们之间距离的平方成反比。以下方程式以向量的形式表示了这条定律:

在这里,G为万有引力常数,m₁和 m₂为两物体的质量,r为物体间的距离。单位向量从m₁指向 m₂ 并且力的作用方向也是相同的。

2. 运动方程

根据牛顿第二运动定律,物体上的合力造成了物体动量的净变化——简而言之,力就是质量乘以加速度。因此,将上述方程式应用到质量m₁ 的物体中,就可以得到以下运动微分方程。

这里要注意的是,单位向量r被分解成向量r除以其大小|r|,因此要增加分母中r项的幂到3.

现在得到一个二阶微分方程,它描绘了两个物体间因重力而存在的相互作用。为简化解法,可以将其分解成两个一阶微分方程。

物体的加速度是物体速率随时间的变化,因此速率的一阶微分可以替代位置的二阶微分。类似地,速率可表示为位置的一阶微分。

指数i 表示要计算位置和速率的物体,而指数j表示和物体i相互作用的其他物体。因此,对一个二体系统来说,就要解两组方程式。

3. 质心

另一个值得记下来的实用概念是系统的质心。质心是一个点,在这个点上系统的所有质量矩总和为零——简而言之,可以将其想象成整个系统质量平衡的点。

有个简单的公式可以找到系统的质心和速率,该公式包括位置和速率向量的质量加权平均值。

在三体系统建模之前,先来为一个二体系统建模,观测其行为然后将代码延伸应用到三体系统中。

二体模型

1. 半人马座α星恒星系统

一个著名的二体系统实例或许就是半人马座α星恒星系统。它包括三颗恒星——半人马座α星A,半人马座α星B

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值