基于matlab的三体运动模拟

写本文的目的是记录自己学习过或做过的一些东西,深化理解,理清思路,便于回忆。本人处于学习阶段,欢迎指出不对的地方。

三体是我最喜欢的小说,小说中入侵地球的三体人,他们的母星便是由三颗恒星和多个行星组成的天体系统。这种系统最初由牛顿提出,往后的时间中吸引了包括庞加莱、拉格朗日、欧拉等无数数学界、物理学界、天文学界的大家,但时至今日也没有办法对一个任意三体系统求出解析解。三体是天体力学名词,指的是由三个质点及其相互引力作用组成的力学关系。主要是指三颗质量相似的恒星。

开始模拟

1.设置三颗恒星的质量

三颗恒星质量必须在一个量级,但也不必相同,可以随意设置,推荐1*10^23左右

2.设定三颗恒星的初始位置

设置为三维向量形式,随意设置,推荐1*10^7左右(数值是网上找的,自己试了很久试不对)

3.设定三颗恒星的初始速度矢量

1*10^4左右,保存为三维向量形式

4.设置时间步长

越小越精准,但也越慢,大的话可能恒星直接飞跑了。可以设置到0.01

5.画出三颗恒星

使用plot3函数

6.设定轨迹线

使用animatedline函数,创建三个动画线条

7.计算任意两颗恒星的距离

使用三维空间内两点的距离公式,计算三次

8.计算任意两颗恒星间的受力

利用万有引力公式,和上一步计算出的距离,总共计算三次

9.计算任意两颗恒星间的受力方向

利用之前保存为向量形式的位置,根据向量空间的运算规则计算即可。这里只表示方向不表示距离,所以求出来的向量要转换为单位向量,总共计算三次

10.求出三颗恒星的加速度

这里首先要计算出每一个恒星所受的合力,每颗恒星受到两个力,受力大小和方向都已知,所以很好求得。再使用加速度公式求出各个恒星的加速度,MATLAB可以直接计算矢量

11.计算三颗恒星的新位置

使用初始位置和位移公式(S=vt+(1/2)at^2)计算而出,MATLAB可以直接计算矢量,所以很方便,标量怎么写矢量就怎么写

12.计算三颗恒星的新速度

使用公式(v’=v+at)

13.循环

从第7步开始到12步使用while 1循环,将速度和位置作为变量,每次循环后更新。要注意的是,循环计算出的位置和速度是要实时显示的,如果每次计算结束后都进行一次显示,虽然更加精准,但程序会运行的很慢(就好像一动不动),所以增加一个计数变量,计算累计到一定次数后再进行更新(其实也就相当于步长,与前面那个时间步长异曲同工),这里设置为1000

14.显示

使用addpoints函数向动画线条中添加点,来更新位置。同时使用drawnow 更新图窗并处理回调

效果展示

多次运行结果,效果是动态的,这里截图做展示
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(这应该是一个挺长的恒纪元)

  • 9
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值