分享

气象学史:28.蝴蝶效应

 科学声音 2022-06-19 发布于上海

书接上文,上文书讲到,天气预报进入了计算机时代。数值天气预报从一种梦想逐渐变成了可能。当时的气象局长韦克斯勒是非常支持使用计算机来进行数值天气预报的。后来又是在他的推动之下,美国发射了世界上第一颗气象卫星。科学家们第一次从太空之中以上帝视角看到了他们天天打交道的气旋到底长什么样儿。

世界最早的气象卫星云图

但是,气象卫星能从太空之中对着地球拍照,苏联人不干了,那岂不是被美国人看光光。没办法,韦克斯勒还担任美国政府的首席谈判代表,跟苏联人沟通。韦克斯勒还是“核冬天”理论的提出者,可见当时美苏两国的冷战气氛还是很浓厚的,打起来不是闹着玩儿的。

第一颗成功的气象卫星TIROS-1号

最后两个国家决定联合使用气象卫星的资料数据。仅有两个国家其实还是不够的,建立世界级的气象组织也必须提上议事日程了。
随着探测手段的大发展,当时的气象学界有一个梦想,那就是赶上天文学界的预测能力。牛顿年代开始,科学家们就能对天体的运行轨道进行计算,而且算得相当准确。甚至勒维耶和亚当斯还能凭着计算,推测出海王星的存在。可是天气预报的精确度就跟天体运行没法比了,但是现在有了卫星云图,有了遍布世界的传感器,有了电子计算机,气象学家们总想希望对天气的预测能够更加准确。他们觉得,道路是曲折的,但是未来是光明的,总之那个时代的气象学家们普遍比较乐观。
就在这时候,有人给大家兜头破了一瓢冷水,弄得大家心里拔凉拔凉的。这个人叫爱德华·洛伦兹。咱们先说清楚一点,这个洛伦兹和提出洛伦兹变换的那个洛伦兹没关系,挨不上,我们千万别搞混了。

朱尔·查尼和爱德华·洛伦兹

洛伦兹参加了普林斯顿高级研究院的计算机天气预报的研究项目。他曾经在达特茅斯学院获得了数学本科学位,在哈佛大学获得数学硕士学位。正赶上美国军方要培养气象预报人才,洛伦兹也去了。后来他就转向气象学,在麻省理工一直读到气象学的博士学位。他的整个学术生涯都是在麻省理工度过的。
洛伦兹参与过普林斯顿高级研究院计算机天气预报项目。毕竟数值计算需要非常深的数学功底。当时朱尔·查尼使用的微分方程已经让阿伯丁试验场的ENIAC计算机不堪重负。我们不能拿那个时代的计算机和现在的计算机比,要用当时的电子管计算机去求解一个复杂的微分方程也是很麻烦的事情,要计算很长时间。那时候的电子管计算机速度实在是慢得可怜,而且故障率也很高。万一电子管烧坏了,机器就罢工了。所以,当时的计算机总是需要人守着。
那该怎么办呢?只能先尽量简化方程,迁就计算机的速度,他们只能先忽略风场的垂直变化,这样计算量就可以减低。但是你不能总是忽略垂直方向的变化。总是使用二维模型,真正取得突破的是小组里的菲利普斯,他把空气分为两层,这样比较容易处理了。这样就可以利用计算机对大气环流进行模拟计算了。
当时洛伦兹他们开始关注长期天气预报,依照过去的经验,长期天气预报根本做不到,明年的天气会如何呢?只有天知道啊。但是别忘了,当时有不少气象学家相对是乐观的,他们觉得,这个问题最终可以解决。经过洛伦兹的一次又一次简化,他弄出了一个含有12个变量的常微分方程组。但是这个模型还是太复杂了,当时的计算机根本就算不动。
和洛伦兹同在麻省理工一般环流研究项目的巴里·萨尔茨曼给洛伦兹提供了不少的新思路,最后洛伦兹把变量简化到了3个,解这个方程需要动用一台LGP30电子计算机。这个常微分方程从数学上讲是根本没有办法直接解出来的,也就是没有解析解。其实很多方程式都是解不出来的,只能用迭代的方式去计算它的数值解,好在现在有计算机帮忙。人类发明计算机的初衷实际上就是为了解决这个问题。

艾伦·菲特

负责为这台计算机编程的是两个女程序员。一个叫艾伦·菲特,一个叫玛格丽特·汉密尔顿。她们都是非常优秀的程序员,特别是那位汉密尔顿女士。她很快就成了一个编程的高手。后来她去了美国国家宇航局,先后为阿波罗登月项目编制控制程序,为天空实验室空间站编写操作代码。她也是“软件工程”这个词的发明人。2003年她获得了NASA授予的航天杰出贡献奖。2016年她获得了美国总统自由勋章。

 玛格丽特·汉密尔顿

当时的人对职业和性别总是存在一些刻板印象。比如幼儿园里的老师女的就比较多,纺织厂也是女工比较多。大家认为女生特别适合心灵手巧的工作,所以那个年代女程序员特别多。那个时候电子计算机伺候起来都很麻烦很枯燥。编程也不像现在这么方便,那个时候的计算机语言也很简陋。

缺少数字键“1”

这台计算机使用的键盘是没有数字1的。所有的数字一都要用小写字母“i”来代替。反正这俩长得也挺像的。

右边绿色的小格子就是显示屏幕

这台计算机也没有显示器,而是用一个最简单的示波器来输出结果。你在屏幕上只能看到一小串方块,这些方块儿就是编码。虽然这台机器很简陋,但多多少少有一点现代计算机的影子了。
这一天是礼拜五,罗伦兹像往常一样来到了办公室,继续用他推导出来的方程组做天气预报仿真。他计划把昨天的计算结果重复一遍,以确保计算结果准确无误。他知道这台计算机慢得像蜗牛一样,需要一个多小时才能算完,所以呢,他就溜达到学院旁边的小咖啡馆喝咖啡去了。喝完咖啡回到办公室以后,他看到仿真结果。发现出大问题了。今天算出的结果和昨天大相径庭。明明输入的数据都是一样的,为什么计算结果差这么多呢?
当时洛伦兹计算的是长期天气预报,要连续计算好几个月的数据。今天计算的结果和昨天计算的结果在一开始相差不大。前几周时间。数值吻合的都比较好,但是随着时间的推移,结果就变得毫不相关。

越往右,曲线越不吻合

洛伦兹怎么也想不通,他自己去仔细检查了数学公式,发现这个数学公式很清晰,没有什么问题。这两个女程序员也赶紧反复检查程序,也没有发现程序上有任何错误。这时候洛伦兹就有点懵圈了,这到底是怎么回事?
两次计算的结果完全不一样,那么到底是昨天算错了,还是今天算错了?为什么输入的数值是一样的,计算程序也是一样的,算出来的结果却相差那么大呢?
查来查去,他发现了问题所在,在第1次计算的时候,他输入的初始数据是0.506127。第2次计算的时候,他为了图省事,而他只输入了0.506。他觉得这不到1‰的四舍五入应该不会带来什么严重影响。现在他发现自己错得离谱,这一点点的误差就导致了结果的大相径庭。

如果从实用主义角度出发,把输入数字改成0.506127,再算一遍不就完了吗?但是洛伦兹没有这样做,因为他是学数学出身的,他一定要找到数学上的原因。接下来的几天里,他带着两个程序员又重复了很多次。他发现,用迭代法来解这个常微分方程,对初始数值极其敏感。后来洛伦兹就把他的这个发现写成了一篇论文,题目就叫“确定性的非周期流”。1963年发表在《大气科学》杂志上。
洛伦兹发现有很多方程式对输入的数值非常敏感。哪怕输入的数值稍微变了一点点,结果也会大相径庭。可是测量误差是无法避免的,如果用这些公式做天气预报的话。时间长了,偏差就会变得非常离谱。你要计算遥远的未来某一瞬间的状态,也就变得根本不可能了。用洛伦兹的原话来说,由于天气观测之中存在着不明显的不精确性和不完全性,非常长期的天气预报是不可能的。
这篇论文影响深远,成为混沌理论的基础,一开始没几个人引用他的论文,但是过了20年,引用次数就变成了每年几百次。到现在一共有多少人引用过,那就不好算了,反正很多。一开始,洛伦兹把他的发现比喻为海鸥的飞翔引发了暴风雨。但是后来他觉得这个比喻不太刺激。他接受了一位朋友的建议,换了一种说法,那就是“巴西的一只蝴蝶拍打一下翅膀,会在德克萨斯引发一场龙卷风吗?”从此后我们又多了一个科学术语,叫做蝴蝶效应。

1963年那篇里程碑式的论文之中,洛伦兹提出了一个著名的方程式,也叫洛伦兹方程。这个方程的解在三维空间里面呈现出一个漂亮的双漩涡,很像蝴蝶的两个翅膀。所以叫蝴蝶效应还是挺贴切的。
其实混沌系统在日常生活中还是很常见的。用物理公式来描述钟摆的运动规律是很容易的。但是把钟摆断成两截儿你再试试。你就会发现,这个摆的运动轨迹就变得十分难以预测。所以这种分两截儿的摆又叫做“混沌摆”。

混沌摆

最著名的混沌现象当然就是“三体”,都是因为大刘的小说太出名了嘛,弄得三体这个词家喻户晓。用牛顿的公式解决两个天体的运转规律并不难。但是,当参与的天体增加到3个,计算就变得不可能了。只能在特定情况下,找到几个特殊的解,比如5个拉格朗日点。
在一般情况下,每个天体都会受到其他2个天体万有引力的作用,依照这个模型,可以表示成3个2阶常微分方程或者是6个1阶常微分方程。所以一般性的3体运动方程为18阶,必须求得18个完全积分才能得到完整的解析解。目前我们只能得到10个这样的积分,所以这个问题根本解不出来。

3体模拟计算

到了1887年,瑞典国王悬赏征求多体问题的解法。3体问题实际上是多体问题一部分。法国的数学家庞加莱证明了这个问题是根本解不出来的。但是后来庞加莱的文章被发现有错误,需要加以修订,一直到1890年修订版才问世,这个问题成了研究混沌理论的起点。
混沌理论为什么这么重要呢?因为它打破了人们过去科学界的一种观念。著名的科学家拉普拉斯曾经做了一个假设,如果宇宙间存在一个智者,他能掌握全宇宙中每一个粒子的瞬时位置和速度,根据牛顿力学就可以预测出未来任意时刻粒子的状态,同时他也能推算过去任一时刻粒子的状态。
物理学界有那么几头神兽,比如说“芝诺的乌龟”,“薛定谔的猫”、“拉普拉斯的智者”和“麦克斯韦的妖”。当然,有人管拉普拉斯的智者叫做“拉普拉斯妖”,只是名字不同而已,实质上都一样。在拉普拉斯看来,这个“智者”明察过去,善晓未来,就连宇宙的未来都能确定无疑的推算出来。但是,拉普拉斯显然被打脸了,庞加莱告诉大家,即便是看似简单的3体问题,整个过程也没有不确定性,你依然算不出来。

拉普拉斯妖

其实我们的古人从日常经验之中也模模糊糊的感觉到了这一点,比如说我们常说“失之毫厘,差之千里”。比如说苏东坡曾经写过“竹中一滴曹溪水,涨起西江十八滩”,这段描述就和蝴蝶效应有异曲同工之妙。
西方人也描述过类似现象,丢了一根铁钉,坏了一个马蹄铁,因为马蹄铁坏了,使得一匹战马摔倒,因为一批战马摔倒了,只带一个骑兵阵亡,因为一个骑兵阵亡使得一场战役输了,因为一场战役输了使得一个国家灭亡。开始那一件非常微小的事儿,经过逐级放大,变得一发而不可收拾。我们所处的社会和历史都是极其复杂的,可以认为是个二阶混沌系统。
扯远了,我们扯回来,洛伦兹的发现实际上是给长期天气预报判了死刑。也把朱尔查尼吓了一跳,因为当时朱尔·查尼在积极推动全球大气研究计划的实施。这个研究计划的一个亮点就是能够发展出两周天气预报,也就是预测半个月以后的天气。两个礼拜的时间长不算长,但是短也不算短,预测结果靠不靠谱?

朱尔·查尼

朱尔·查尼不得不降低自己的目标,先验证一下是否有可能做长期预报。1964年,查尼在科罗拉多州和10个国家的科学家们面对面讨论了这个问题。在这次会议期间,他说服同行们,就像当初洛伦兹那样,把输入的数值做微小的调整,看看结果会有什么不一样。看看他们自己所用的那个公式是不是对数值太敏感。最后大家研究了半天,得出了一个结论,平均而言,温度和风的微小差别会在5天内加倍,也就是说预测一个礼拜的天气预报还基本上是靠谱的,但是预测一个月的您就别想了,误差已经大得没有参考价值了。预测半个月的天气,基本上处在临界点上,勉强凑合。
不管怎么说,气象学界淘汰了一些旧方法,因为这些旧方法对数值太敏感了。比如洛伦兹在1969年的一个研究表明,利用过去与当前类似情况的集合来对未来的情况进行预测的方法是无效的。
所以,即便到现在为止,天气预报最多告诉你两个星期以后天气如何,再长就基本上没有什么参考价值了。即便现在我们条件好了,可以动用更复杂的公式,更快的计算机,也很难改变这种局面,但是可以大幅度提高短期内的预报精度,所以如今天气预报是需要动用超级计算机的。
但是我们现在面对短时间内的天气突变,预测起来仍然有一定的困难,比如说龙卷风。那么龙卷风能不能预测呢?我们下回再说。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多