Python动力系统验证三体人是否真的存在
目录
- 随机三体
- 三星问题
随机三体 目前来说我们并不关心真实的物理对象,而只想看一下三个随机的点放在三个随机的位置,赋予三个随机的速度,那么这三个点会怎么走。所以其初始化过程为
m = np.random.rand(3)x = np.random.rand(3)y = np.random.rand(3)u = np.random.rand(3)v = np.random.rand(3)
得到三个随机的运动为
文章图片
文章图片
文章图片
这几个随机的三体均有一个共同的结局,二体尚存,三体皆四散而去,至于能不能重新相聚,那就很难说了,代码为
import numpy as npimport matplotlib.pyplot as pltfrom matplotlib import animationm = np.random.rand(3)x = np.random.rand(3)y = np.random.rand(3)u = np.random.rand(3)v = np.random.rand(3)fig = plt.figure(figsize=(12,12))ax = fig.add_subplot(xlim=(-2e11,2e11),ylim=(-2e11,2e11))ax.grid()trace0, = ax.plot([],[],'-', lw=0.5)trace1, = ax.plot([],[],'-', lw=0.5)trace2, = ax.plot([],[],'-', lw=0.5)pt0, = ax.plot([x[0]],[y[0]] ,marker='o')pt1, = ax.plot([x[0]],[y[0]] ,marker='o')pt2, = ax.plot([x[0]],[y[0]] ,marker='o')k_text = ax.text(0.05,0.85,'',transform=ax.transAxes)textTemplate = 't = %.3f days\n'N = 1000dt = 36000ts =np.arange(0,N*dt,dt)/3600/24xs,ys = [],[]for _ in ts:x_ij = (x-x.reshape(3,1))y_ij = (y-y.reshape(3,1))r_ij = np.sqrt(x_ij**2+y_ij**2)for i in range(3):for j in range(3):if i!=j :u[i] += (m[j]*x_ij[i,j]*dt/r_ij[i,j]**3)v[i] += (m[j]*y_ij[i,j]*dt/r_ij[i,j]**3)x += u*dty += v*dtxs.append(x.tolist())ys.append(y.tolist())xs = np.array(xs)ys = np.array(ys)def animate(n):trace0.set_data(xs[:n,0],ys[:n,0])trace1.set_data(xs[:n,1],ys[:n,1])trace2.set_data(xs[:n,2],ys[:n,2])pt0.set_data([xs[n,0]],[ys[n,0]])pt1.set_data([xs[n,1]],[ys[n,1]])pt2.set_data([xs[n,2]],[ys[n,2]])k_text.set_text(textTemplate % ts[n])return trace0, trace1, trace2, pt0, pt1, pt2, k_textani = animation.FuncAnimation(fig, animate, range(N), interval=10, blit=True)plt.show()ani.save("3.gif")
经过多次画图,基本上没发现能够稳定运行的三体,所以从经验来说,随机三体在自然界中应该是很难存在的——毕竟很快就解散了。
三星问题 短时间内稳定的三体还是有很多的,比如比如在高中出镜率极高的三星问题:
即等距等质量三星如何运动?现假设三个质量相同的等距质点,分别给一个随机的速度,看看它们怎么运动。
m = np.ones(3)r = np.ones(3)theta = np.arange(3)*np.pi*2/3x = r*np.cos(theta)y = r*np.sin(theta)V = np.random.rand(N)u = V*np.sin(theta)v = V*np.cos(theta)
文章图片
文章图片
总之只要看到它们互相靠近,那么结果注定分道扬镳,像极了人生。
如果再让它们速度相等,那么神奇的一幕出现了
文章图片
文章图片
但更神奇的是,只要对速度做出一点点的更改,例如令第三颗星在横轴方向更改 δ ,则会出现如下场景
δ = 0.001
文章图片
δ=0.0001
文章图片
这就是所谓的蝴蝶效应,初值的一点更改,就会造成不可挽回的巨大后果,这也是动力系统的独特魅力。
【Python动力系统验证三体人是否真的存在】 以上就是Python动力系统验证三体人是否真的存在的详细内容,更多关于Python验证三体人是否存在的资料请关注脚本之家其它相关文章!
推荐阅读
- python学习之|python学习之 实现QQ自动发送消息
- 逻辑回归的理解与python示例
- python自定义封装带颜色的logging模块
- 【Leetcode/Python】001-Two|【Leetcode/Python】001-Two Sum
- 如何在Mac中的文件选择框中打开系统隐藏文件夹
- 单点登陆
- Python基础|Python基础 - 练习1
- 操作系统|[译]从内部了解现代浏览器(1)
- Python爬虫|Python爬虫 --- 1.4 正则表达式(re库)
- 游乐园系统,助力游乐园管理