姓名:罗晓杰
学号:2015301510010
problem 4.16
摘要
运行关于地球、太阳、木星三体运动的模拟,考虑不同的地球的初始条件,然后改变木星的质量为原来的十倍、一百倍、一千倍后的情况
正文
- 因为要考虑多体的问题,所以该题必然要应用class的方式来编写会简化很多。因此可以建立两个class——system和body,其中body用于保留星体的性质及运动轨迹,而system用于运行整体的情况,控制大局的作用。
- 而且为了便于修复bug的方便起见,我们引入了turtle模块,将每一个行星做成一个turtle,使之按照system生成的每个行星运动的轨迹运动
- 其次我们就可以开始利用一个循环,得到星体之间的相互作用产生加速度的x,y方向的分量,然后经过一个外嵌套的循环再代入运动公式就可以得到,经过其他星体作用后只是输入相应的初始速度及轨道的时间问题。我们以地球的质量作为基本单位,然后利用短轴相应的公式及其最大速度取值公式:
r _{min}=a*(1-e)
v_{max}=2\pi(\frac{(1+e)}{a(1-e)}(1+\frac{M_p}{M_s}))^{1/2}
可以得到各个行星的初始条件,我们再令它们由x轴上出发,就可以构造整个太阳系了
效果展示
正常的太阳系(太阳不固定),我们可以逐步的放大图片可以发现水星有很明显的进动,而且越外面的行星跑的越慢
(turtle画面上一开始就出现了一些线,对此很无奈)
可以改变地球的初始速度及质量
,因为改变地球质量比较小的时候并没有引起轨道的较大变化,这里仅展示100,1000,10000倍的效果
100倍:
1000倍(可以很明显的看出内部的金星和外部的火星也开始出现较为明显的进动):
10000倍(由于没有控制两个行星足够靠近时r趋近于0,使得加速度趋近于无穷大,因此会出现一些行星飞出去的情况,如最后太阳跟地球靠的很近两个就一块飞出去了,成了一个直线) :
视频只是剪了最开始的部分(10000倍):
当改变地球的速度为原来的1.1倍和1.3倍时为:
地球运动不断的变成一个椭圆并有一定的进动,最后当速度大于一定的时候,便从成一条抛物线
3.最后改变木星的质量:
原来的10倍
原来的100倍:
原来的1000倍:
可以看出很多直线是由于星体靠的太近产生的,这个由turtle上看的很清楚,且木星的质量很大时,与太阳形成双星系统,相互绕转,最后碰撞。
结论
- 随着外围星体的质量增大,内部行星的进动会加剧
- 太阳系中各个星体的初始条件很重要,有一些偏差,太阳系就不能很好的存在了
致谢
有部分turtle代码参照《how to think like a computer scentist》