内容简介:本文涉及影片内容,但算不上剧透。想看还未看的同学请谨慎阅读。春节档的几部电影里,《看过影片的人可能会有一个疑问,
本文涉及影片内容,但算不上剧透。想看还未看的同学请谨慎阅读。
春节档的几部电影里,《 流浪地球 》成为一匹黑马,刷爆微博和朋友圈,从最初不高的排片率,一跃上升到票房榜首。
看过影片的人可能会有一个疑问, 太阳系那么空旷,为什么地球在“流浪”的过程中,非要作死往木星上靠?
这就牵涉到一个时常在影视作品中拿来做文章,实际在太空探测中很常见的一个概念:
引力弹弓效应
当一个飞行器飞过一个行星时,如果距离较近,就会受到行星的引力影响:靠近时会逐渐加速,远离时会逐渐减速。由于能量守恒,飞行器在进入和离开行星轨道时,与行星的相对速度大小没有变化,但方向却发生了变化。再加上行星本身的速度,从旁观者角度来看,飞行器的速度就发生了变化。举个更通俗的例子: 你把一个网球以速度 v 砸向一面墙,球会以同样的速度 v 反弹回来;而如果你以速度 v 砸向一个以速度 u 迎面开来卡车头上,网球则会以 v + 2u 的速度反弹回来(相对速度 v + u 加上卡车速度 u) 。
利用这个办法,可以 在不额外消耗燃料的情况下,使太空探测器得到加速 ( 或者减速 ,取决于与行星接触的角度)。这看起来似乎不符合能量守恒定律和动量守恒定律,实则是因为行星的质量相较飞行器来说太大了,其速度的变化可以忽略不计。
目前离地球最远人造物体: 旅行者1号 ,当年就连续利用了 木星 和 土星 进行了加速。
来源:wikipedia-重力助推
而在影片中,也就是 为了获取更大的速度以脱离太阳系 ,人类才选择 借助木星的引力弹弓效应 。
出于好奇,我 用 python (pygame)写了一个简化的仿真,模拟地球飞越木星时可能发生的情况:
利用引力弹弓加速
速度太快或距离太远,加速效果不明显
速度太慢或距离太近,坠入木星
利用引力弹弓减速
视频版
通过几次测试,我发现这“弹弓”可不是那么好用的,离得远了没啥效果,离得太近又可能被引力捕获,撞在木星上(事实在撞上之前,地球就会因达到 洛希极限 而被撕裂)。
至于剧中发生了什么,我这里也就不多说了。
我这个模拟代码中,为了视觉效果,地球和木星的大小,以及他们的相对距离是不成比例的,否则会更小。而且为了让速度变化更明显,对运行速度也做了放大。所以 从绝对数值上来说是不准确的,但相对变化都是通过基本物理定律计算得出的 。
核心部分代码:
# 地木坐标差 delta_x = (jupiter[0] - earth[0]) * k delta_y = (jupiter[1] - earth[1]) * k # 地木距离平方 r2 = delta_x ** 2 + delta_y ** 2 # 地木间引力,万有引力定律 F = G * m * M / r2 # 地木夹角 theta = math.acos(delta_x / r2 ** 0.5) # x、y 轴引力分量 fx = abs(F * math.cos(theta)) * sign(delta_x) fy = abs(F * math.sin(theta)) * sign(delta_y) # x、y 轴加速度,牛顿第二定律 F = ma ax = fx / m ay = fy / m # 速度变化,vt = v0 + at vel_x += ax * t vel_y += ay * t # 位移变化,st = s0 + vt pos_x += vel_x * t / k pos_y += vel_y * t / k
相关参数:
k = 1e7 # 距离缩放参数 m = 5.9742e24 # 地球质量 M = 1898.7e27 # 木星质量 G = 6.67259e-17 # 万有引力常量 t = 1e5 # 时间缩放参数 pos_x= 0 # 地球坐标 pos_y= 550earth = pos_x, pos_y vel_x= 300 # 地球速度 vel_y= 0jupiter = 700, 150 # 木星坐标 v_j = 3 # 木星速度
想要测试不同效果,可以调整坐标、速度等参数。
“引力弹弓”的概念在几年前的《 星际穿越 》和《 火星救援 》中都有提及,我一直想写个模拟,直到这次趁《流浪地球》热映的机会才动手实现。这部电影我从去年7月尚未跳票之时比较期待,也看过原著,本来还担心会不会排片太少,没想到会火成这样。这里面当然有很多偶然的商业因素,影片本身也有很多不足,但我作为一个“科学爱好者”,乐见如此。之前流产的《 三体 》电影版或许也因此有机会重新投胎。
希望以后会有更多精彩的科幻作品出现,也希望更多的人在低头忙碌之余能抬头仰望星空。
模拟代码已上传,获取请在公众号( Crossin的编程教室 )中回复关键字: 引力
════
以上所述就是小编给大家介绍的《用python模拟地球飞越木星》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
UNIX网络编程
史蒂文斯、芬纳、鲁道夫 / 杨继张 / 清华大学出版社 / 2006-1 / 98.00元
《UNIX网络编程》(第1卷)(套接口API第3版)第1版和第2版由已故UNIX网络专家W. Richard Stevens博士独自编写。《UNIX网络编程》(第1卷)(套接口API第3版)是3版,由世界著名网络专家Bill Fenner和Andrew M. Rudoff执笔,根据近几年网络技术的发展,对上一版进行全面修订,增添了IPv6的更新过的信息、SCTP协议和密钥管理套接口的内容,删除了X......一起来看看 《UNIX网络编程》 这本书的介绍吧!