Appearance
混沌:一个方程全都知道的系统,为什么还是算不出来
「跟着 AI 学任何东西」系列第 51 篇。降水概率那篇留了一个坑没填:为什么要用几十个略有差异的初始条件各跑一遍,而不是把初始条件测准一点。这一篇填它。
顺带回答那个几乎人人吐槽过的问题:天气预报为什么总有个准头的上限。
一个因为偷懒而被发现的东西
1961 年,MIT 的气象学家 Edward Lorenz 在用当时的计算机跑一个简化的天气模型。
他想重跑一段之前算过的结果,为了省时间,没有从头开始,而是从中途的一个数据点接着算。输入的时候,他把打印稿上的 0.506127 敲成了 0.506——打印输出只保留了三位小数。
在他的预期里,这点差别小到无所谓,两次结果应该几乎重合。
结果是:两条曲线一开始确实贴在一起,然后慢慢分开,在他这个模型里差异大约每四天翻一倍,到后来完全看不出它们曾经是同一条。
这不是程序出错,也不是计算机精度不够。这是一类系统的固有性质,后来被叫做混沌。
一、混沌不是随机——这是最关键的区分
「混沌」这个词在日常里几乎等于「乱」,所以很容易被理解成「随机」。这个理解会让整件事失去意义。
混沌系统是完全确定的:
方程写在那里,没有任何随机项。给定完全相同的初始条件,它每一次都会给出完全相同的结果。
它的问题不在方程,在初始条件:
初始条件哪怕只差一丁点,两条轨迹也会指数式地分开。
这两句话合起来,才是混沌的定义:确定,但不可预测。
而「不可预测」的来源不是系统里有什么神秘的东西,而是一个非常朴素的现实——你永远无法把初始条件测到无限精确。观测总有误差,而在混沌系统里,误差不会老老实实待着,它会被指数放大。
不是「我们还不够聪明」,而是「误差会被系统本身放大」。这两件事的性质完全不同:前者可以靠努力解决,后者不能。
二、复杂系统才会混沌吗?不
还有一个直觉需要纠正:混沌听起来像是「系统太复杂了才会有的毛病」。
不是。极其简单的规则就能产生混沌。
有一个著名的例子简单到可以在纸上算:
从一个 0 到 1 之间的数出发,每一步都做同一个运算——新值 = 3.9 × 旧值 × (1 − 旧值)。
就这一行。没有随机、没有外部输入、没有复杂结构。
但如果你取两个几乎一样的起点(比如 0.5000 和 0.5001),分别迭代下去,它们会在前二十多步紧紧贴着——贴到你在图上只看得见一条线——然后在很短的几步里分开,之后再无关系。
这张图值得多看两眼,因为它推翻了两个直觉:
- 混沌不需要复杂。 一行算式就够了。
- 分开不是渐进的,是「先稳后崩」。 前面一段几乎完全一致,然后在很短的时间里彻底失去关系——这正是「预报在某个时限之前挺准,之后突然没用」的数学原型。
三、于是「预测」这件事有了一个天花板
现在可以回答开头那个问题了。
如果误差每隔一段时间就翻一倍,那么把初始观测精度提高一倍,能换来的只是多一个翻倍周期的可预测时长。
这是一笔很不划算的买卖:
精度提高 1000 倍,换来的大约只是 10 个翻倍周期。 投入是指数级的,回报是线性的。
对真实大气来说,这意味着存在一个内禀的可预测性上限——业界常引用的数量级是两周左右。这个上限不是算力问题,也不是模型问题:就算你有一台完美的计算机和一套完美的方程,只要初始观测还有哪怕极小的误差,超过这个时限之后的具体天气就是算不出来的。
(这也顺带解释了降水概率那篇里的一个数字:预报技巧大约每十年提升一天。进步是真实的,但它在朝着一堵墙走。)
而这正是集合预报存在的理由:
既然测不准初值、且误差必然被放大,那就干脆承认这件事——撒出几十个略有差异的初始条件各跑一遍,看它们分不分得开。
- 几十条未来彼此接近 → 这几天的形势稳,可以给出高把握的预报。
- 几十条未来早早散开 → 说明这几天正处在敏感区,这个「散」本身就是最有价值的信息。
换句话说:混沌不允许你算准天气,但它允许你算出「今天这个预报有多可信」。 概率预报不是回避问题的托词,它是对这个数学事实的正面回应。
四、蝴蝶效应被误解成了因果
「巴西的一只蝴蝶扇动翅膀,可能在得州引起一场龙卷风」——这是 Lorenz 1972 年一场演讲的标题,也是被误用得最厉害的一句科学比喻。
流行版本把它读成了因果:那只蝴蝶导致了龙卷风。于是延伸出一堆「小事改变世界」的说法。
但原意不是这个。它说的是预测的极限:
一个小到你不可能观测、不可能记录的扰动,足以让几周之后的结果变成另一个样子。所以,你无法在初始条件里省略任何东西。
这两种读法的区别很实在:
- 因果读法说:找到那只蝴蝶,就能控制龙卷风。
- 原意说:这样的「蝴蝶」有无穷多只,它们同时在起作用,所以谁都不是原因,而这恰恰是为什么算不准。
顺带一提,龙卷风该不该出现是由大尺度环流决定的,蝴蝶改变的是具体在哪、什么时候这类细节。混沌影响的是轨迹,不是系统的整体性质——这一点直接引出下一节。
五、混沌不代表什么都不能预测
这是最容易被忽略、但最重要的一条。
混沌系统的单条轨迹不可长期预测,但它的统计性质往往非常稳定。
一个直接的例子就是天气和气候的区别:
- 天气是轨迹:某天某地下不下雨。三周以后的,算不出来。
- 气候是统计:这个地方一年大约多少降水、平均气温多少、极端事件多久出现一次。这些可以研究,而且它们不受「三周以后算不准」这件事影响。
这个区分经常被混着用——「天气预报三天后都不准,凭什么谈几十年后的气候」这句话,逻辑上就是把轨迹和统计当成了一回事。
算不出下个月 15 号的天气,和算得出这个地区的气候,两件事完全可以同时成立。就像你算不出下一次掷骰子是几,但你很清楚一万次的平均值。
同样的结构在别处也成立:单个分子的运动不可预测,但温度和压强非常稳定;单次心跳的间隔有变异,但心率的统计特征是临床指标。
所以,混沌到底改变了什么
它没有让世界变得不可知,它做的是把「可知」重新划了一次边界:
| 混沌之前的默认假设 | 混沌之后 | |
|---|---|---|
| 确定的方程 | 就能算出长期结果 | 不一定——误差会被指数放大 |
| 算不准 | 说明模型不够好 | 可能是系统的固有性质 |
| 预测 | 给一个数 | 给一个分布,外加「这次有多可信」 |
| 长期 | 无从谈起 | 统计性质仍然可以预测 |
我觉得这是这个题目里最值得带走的一点:承认不可预测,本身是一种知识的进步——它把力气从「把数算得更准」转向了「搞清楚这次的数有多可信」。
降水概率那篇说,概率预报的对错在长期频率上被判定。现在可以补上这句话的另一半了:它之所以必须是概率,不是因为气象学不够成熟,而是因为大气本身就是这么一个东西。
本文为学习笔记。文中「误差每四天翻倍」是 Lorenz 当年那个简化模型里的数量级,不同系统、不同尺度差别很大;「两周左右」是大气可预测性上限的常被引用的量级,具体数值随天气形势与变量而异。