wend.blog.ustc.edu.cn, 上面有动图大四就要有大四的样子
, 最近
闲来无事,想起来以前一直想做的一件事:模拟三体运 动
。正好
可以练一练 python 。 小试牛刀先从模拟二维正方 形中,
弹性小
球的运动轨迹入手,熟悉相关操作。物理情景 很简单,就
是弹性
小球位于正方形空间中,有某初速度,未 与边界碰撞时进
行匀速
直线运动,与边界碰撞时发生弹性碰 撞。模拟思路很简单
,在 t
时间,位于 r 处,取小时间微元 dt ,认为小球在此微元内
进行匀
的位置和速度,继续迭代。代码如下 import numpy as
npimport
matplotlib.pyplot as pltimport matplotlib.animation as
animation
def simData(): dt = 0.0001 d1 = 0.25 d2 = 0.25 v1 = 12 v2
= 5
while True: d1+=v1*dt d2+=v2*dt if (d1>1) or (d11) or (d2
无限模
拟下去,可以发现如果小球的 初始条件不是那么特殊,小
球最终
将遍历正方形中所有点。 这里吐槽一下 python 的动画模
块,太
不直观,帮助简直不 知所云,在用动画展示数据这方面,
mathematica 就做的非 常好。知乎不能发动图,所以我将
图片存
放在请输入提取码 访问密码 b684 可以下载
模拟三体为了简单,假设三个物体质量相同,有着相同的
引力系数,三个物体的在t 时刻的位置r、速度v 都保存下来
, 取