一颗被偷偷改动的行星
把一个太阳系装进电脑,只需要三步:输入八颗行星此刻的位置和质量,给每颗行星一个速度,然后让引力自己计算。有人在这套程序里把水星的质量悄悄调高了千分之一,这个误差小到肉眼看不出来。按下运行键,一亿年后画面还认得出是太阳系;几十亿年后,某颗行星被甩出边界,从此在黑暗里流浪。
只改了一个小数点后第三位的数字,结局就换了一整个剧本。这就是N体模拟想告诉我们的第一件事:引力系统对初始条件极度敏感。
一口锅里漂着N颗肉丸
一句话解释:N体模拟,就是让计算机替N个互相吸引的天体,一步一步算出它们未来或过去的位置。这里的N可以是2,可以是8,也可以是上百亿。
不妨想象一口大锅里漂着N颗肉丸。每一颗都被其他所有肉丸的引力拽着,同时也在拽别人。两颗肉丸的运动,中学物理就能写出公式;变成三颗,事情就彻底不一样了。
三体没有公式,只有答案
两个天体在引力下的运动有精确解,开普勒在17世纪给出了它:轨道是椭圆。三体呢?1887年瑞典国王奥斯卡二世悬赏求解,法国数学家庞加莱没交出完整答卷,却证明了一件更深刻的事——三体问题不存在通用的解析公式。这代表根本不存在这样的公式,并非只是“尚未算出来”。
没有公式,只能一步一步往前推:由当前位置和速度算出加速度,更新位置,再算下一瞬间。每走一步,每一对天体都要互算一次引力。这个“两两配对”的特性,决定了N体模拟最大的成本。
算力账本上的天文数字
算一笔账。假设有100万颗恒星,每走一步要处理的引力对大约是100万乘100万再除以2,约5000亿次——差不多等于地球上每个人各按70次计算器。如果机器每秒能完成10亿次这类运算,走完一步也要八分多钟;而为了看清星系旋臂怎样演化,这样的步骤往往要走几十万到上千万步。
现实中的宇宙学模拟规模更大。以Illustris TNG这类项目为例,一个宇宙学体积被切分成约上百亿个粒子,用来追踪暗物质和气体的引力演化,一次运算要动用成千上万个CPU核心、连续跑上数月。
绕开硬算的几种办法
硬算太贵,于是有妥协。常用的办法之一叫“软化”:距离极近的两个粒子,引力被刻意削弱一点,避免数值爆炸——就像统计人流时,你不会去追究两个人肩膀相碰时的那点力。
“树算法”换了个思路:把远处一大群恒星打包成一个整体,只算它们的总质量和质心。你在手机上缩放地图时,远处的城市只显示成一个点,道理相通。
还有更朴素的一招:拉长时间步长。模拟银河系一百亿年,每一步代表一千年,也要走上千万步。步长太大,细节糊成一片;步长太小,机器要跑到天荒地老。这个取舍,是每个做N体模拟的人绕不开的手艺活。
模拟不是预言
需要说清楚:N体模拟给出的不是一个注定发生的未来。太阳系内行星的轨道在数千万年到数亿年的尺度上是混沌的(混沌意味着对初始条件极度敏感,微小误差会被指数放大)。天文学家拉斯卡团队的长期数值积分显示,水星在未来约五十亿年内,有大约1%的概率与金星相撞,或被甩出太阳系。这1%目前尚无定论——它依赖模型假设、观测精度,以及如何处理广义相对论带来的微小修正。
所以天文学家很少说“模拟证明太阳系会散架”,更常说“模拟给出了这样的可能性”。观测证实的是当下,理论预言的是趋势,模拟给出的是一张带雾的地图。
它究竟算出了什么
答案比想象中实在。星系并合时为什么拖出长长的潮汐尾?暗物质晕为什么是毛茸茸的形状?银河系的旋臂如何维持?这些问题的线索,不少是先在N体模拟里浮现,随后才被望远镜印证的。模拟还是探测“看不见的东西”的探针:星系旋转曲线的异常,最终指向了占据宇宙大部分质量、却从不发光的暗物质。
它也能反过来校准观测。如果模拟出的太阳系和真实的对不上,也许是某颗小行星的质量记错了,也许是引力理论在某处需要微调。
回到那颗被改动的行星
现在再看开篇那个实验:动一个千分之一的数字,几十亿年后少一颗行星。其实,这是引力系统本身的特点,并非计算机不靠谱:它像一排立着的多米诺骨牌,第一张倒下的角度差半度,最后一张就可能完全跑偏。
那么问题来了:我们此刻测到的这些初始数据,精度够不够撑到五十亿年后?
延伸阅读
- 《混沌:开创新科学》,詹姆斯·格雷克 著
- BBC纪录片《宇宙的奇迹》(Wonders of the Universe,2011)
- NASA喷气推进实验室太阳系动力学网站 ssd.jpl.nasa.gov;Illustris TNG 项目官网 tng-project.org