文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Python动力系统验证三体人是否真的存在

2024-04-02 19:55

关注

随机三体

目前来说我们并不关心真实的物理对象,而只想看一下三个随机的点放在三个随机的位置,赋予三个随机的速度,那么这三个点会怎么走。所以其初始化过程为


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 np
import matplotlib.pyplot as plt
from matplotlib import animation
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)
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 = 1000
dt = 36000
ts =  np.arange(0,N*dt,dt)/3600/24
xs,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*dt
    y += v*dt
    xs.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_text
ani = 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/3
x = 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验证三体人是否存在的资料请关注编程网其它相关文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯