电影《火星救援》计算救援轨道时使用超级计算机是否现实?航天器的发射,超算能起那些作用?

【太长了;没空读】:不用,你想算在家都能算

【最后有一点更新。。。。】

我擦,终于遇到“我等你们问这个问题很久了”这种情况了!《火星救援》电影我也就看了6-7遍吧。我不是原著党,但是对Andy Weir这部作品是非常佩服的。看完电影以后也是对剧中那个有些神神叨叨的轨道科学家Rich Purnell印象深刻。

而且我当时看着Rich Purnell蜷缩在超级计算机机房里等结果的时候就想过:用不着吧?这个火星救援轨道其实如剧中描述,就是一个引力弹弓加速。难点无非是正确加速的点火时间长度。NASA历史上玩过的复杂轨道多了去了,如果这都要用超算,像旅行者这样的项目当年是怎么算的?

稍微搜了一下,发现我的直觉是对的。但是结果让我很惊讶。。。这个救援轨道在剧中被叫做”Rich Purnell机动”。如下图和下面的视频:

Hermes飞船轨道

支持我判断的原因是,我知道这个轨道是作者Andy Weir自己写程序在家里算出来验证过的,所以,应该是不需要剧中那么牛逼的超级计算机的。惊讶的是,这个轨道是Andy Weir自己算出来的!上面那个视频就来自作者自己的主页:

Index of /martian

如果你感兴趣,上面还有不少关于原著的好东西。至于作者计算这个轨道所需的C++程序,真正计算的部分全都开源在了GitHub上:

the-martian-trajectory-app/trajectory

如果你要想,你也可以自己去算算看。

当然,这个轨道是不是现实呢?答案是:基本是的!这是因为NASA的科学家研究了这个轨道!

来自NASA Glenn研究中心的科学家Laura Burke写了篇论文研究这个轨道。论文可以在这里下载到:

https://ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/20150019662.pdf

当然,这是科幻小说。作者发现Andy的假设很巧妙,这个假设是Hermes这个飞船可以以恒定的加速度 2mm/s^2 持续加速很长时间。要知道现实情况下,随着飞船质量不断变化,保证恒定的加速度难度很大。而这里就是科幻起作用的情况了!作者假设在2035年,离子推动的 The Variable Specific Impulse Magnetoplasma Rocket (VASIMR) 引擎早就可以应用在重达110吨的Hermes飞船上了。所以在这个假设下,计算可以在恒定的单位推进力下进行。

Laura使用了COPERNICUS这个三维轨道优化工具进行了计算。

直接说结论吧:书中给出的Hermes飞船进行火星救援的轨道符合物理原理,也符合Hermes这个级别的飞船的实际需要。连剩余燃料都是基本合理的。

那么有哪些问题呢?Rich Purnell机动会让Hermes飞船进入金星轨道以内,这个时候飞船和宇航员承受的辐射会很高。不过都假设电磁推动广泛应用了,就算小说里没写,也可以假设Hermes可以应付高辐射了吧。

最后,值得一提的是,航天科技发展了这么多年,基本的轨道设计其实并没有太多神秘可言了。NASA甚至都把一个功能很强的项目设计软件开源了,叫 General Mission Analysis Tool (GMAT)

如果你感兴趣,可以在这里下载,安装,自己上手玩:

Software Details

——— 补充 ———–

由于我不是航天领域和轨道计算的专业人士,以防误导人,再稍微较个真:

1. 上面的回答说的是火星救援这个电影里Hermes飞船救援任务轨道的情况。在一些特定的假设下,这个轨道设计不需要很强的计算能力。

2. 根据我有限的了解,我知道很多情况下,航天器轨道设计和优化是不需要大型计算机的。

3. 但如果你有计算资源和合适的程序,有大型计算机是没人拦着你的。

4. 我默认肯定是有我不了解的复杂或者精确情况需要使用更强的计算资源做优化的。

关于火星救援中这条轨道的问题,可以看下面这个报告,写得很详细:

Inside The Spaceflight Of ‘The Martian’

如果你对科学设计航天器轨道的细节有兴趣,我找到了一篇关于行星际航天器复杂轨道设计的硕士论文。这是一个假想的到木星Trojan群小行星的任务。由于是硕士论文,基础,假设,工具都讲得很清楚:

https://fenix.tecnico.ulisboa.pt/downloadFile/1689244997257045/Thesis_TiagoBento_73742_final.pdf

这篇论文里使用了欧空局开放的PyKEP和PyGMO工具包来设计和优化轨道,这两个都是底层C++实现,然后用Python做界面的工具,也都是公开的。主页里提供了类似的轨道优化作为例子,感兴趣的可以在自己电脑上跑一次,就知道需要多久了:

https://esa.github.io/pykep/Welcome to PyGMO

其实对我这个完全外行来说,今天搜了一下资料,发现之前没意识到的是航天器轨迹设计和优化 (Trajectory Design) 其实还真挺好玩的,而且有大量的公开的学术文章可以参考。

比如下面这个Delft大学2010年的一个硕士论文讨论了到太阳弓形激波区域和小行星的行星际任务的轨道设计,用的是自己写的Matlab程序。文章里也是有很多非常详尽的技术讨论,其中包括了很多优化算法的,想模拟退火,Genetic Algorithm,Differential Evolution这样的工具。

https://repository.tudelft.nl/islandora/object/uuid:6672aa53-6ecc-4571-85b2-2d4aafbba5bd/datastream/OBJ/download

再比如Adelaide大学2012年的一个PhD论文,讨论的是一个非常低推进月球任务的轨道设计:

https://digital.library.adelaide.edu.au/dspace/bitstream/2440/80842/8/02whole.pdf

里面就提到了轨迹设计的一个长期目标是对任务的不同阶段进行同时的优化,而这个的计算量似乎不小,作者只是说了未来可以用大型计算机的并行任务处理。

还有一篇George理工大学的PhD论文,讨论了航天器轨迹设计里面的算法改进。浏览了一下,似乎主要是通过GPU算法提高效率和精度。作者表示计算效率已经高于某些大型计算机了:

https://smartech.gatech.edu/bitstream/handle/1853/49076/ARORA-DISSERTATION-2013.pdf

总之就是很好的一个领域!

来源:知乎 www.zhihu.com

作者:黄崧

【知乎日报】千万用户的选择,做朋友圈里的新鲜事分享大牛。
点击下载

此问题还有 16 个回答,查看全部。