TOPIC 8 · PHASE B

混沌CHAOS

确定的世界,仍然算不出来(A deterministic world you still cannot compute)

2026-07-26 · 动力学与不可预测性

"蝴蝶效应"几乎总被读成"小事也能改变世界"。它的原意差不多是反的:你永远不可能知道那只蝴蝶在哪儿——所以哪怕世界完全由铁律运行、一丝随机都没有,长期预测照样出局。

天气预报能报到一周,报不到一个月。你大概会想,这是数据不够、算力不够、模型不够细。三样全补上,答案还是一周多一点。

反直觉的地方在这儿:这个上限不来自我们不知道的东西,恰恰来自我们知道的东西。大气服从的方程是确定的——同样的初始状态输进去跑一万次,得到一万条一模一样的轨迹,中间没有掷过一次骰子。确定,然后算不出来。把这两件事拆开,是这门学科最贵的一课。

本站讲"预测不了"的有好几期,机制各不相同:本期讲敏感依赖(sensitive dependence)——初值里的微小差异被指数放大;第 9 期讲一个参数怎么把系统一路推进混沌;第 11 期把预测的极限分成两类(精度极限 vs 计算不可约性);第 12 期讲噪声本身能干什么。本期只回答一个问题:为什么"确定"不蕴含"可预测"。

01一台打印机砍掉了三位小数(Three Decimal Places)

1961 年冬天,麻省理工的气象学家爱德华·洛伦兹(Edward Lorenz)在一台叫 Royal McBee LGP-30 的机器上跑一个玩具天气模型。那机器每秒只算得动几十次乘法,慢到你可以盯着结果一行行打出来。

他想把之前的一段结果重看一遍,就没有从头开始,而是从中途起跑——把上一次打印出来的那行数字重新敲了进去。按理说,接下来的走势应该和上次分毫不差。

不是。新旧两条曲线一开始还贴着,然后慢慢分开,几个模拟"月"之后已经完全是两种天气了。

排查了半天,问题出在打印机上:为了省纸,它把内存里的 0.506127 印成了 0.506。洛伦兹敲进去的,是一个在千分之一位上被截断的初值。他后来把这件事整理成 1963 年的论文《Deterministic Nonperiodic Flow》——"确定性的非周期流"。标题本身就是那个发现:确定的,而且永不重复。

同一组方程,初值只差 0.00001 t ≈ 13 轨迹 A 轨迹 B 这一整段,两条线肉眼分不出 这里开始,它们各走各的 时间 → (洛伦兹方程的真实数值解,纵轴是变量 x) x
两条轨迹各自都被方程完全决定,没有任何随机成分。差别只在初值的第五位小数。左半段粉线压在青线上,是因为它们真的重合。

这张图的关键不是"它们最后分开了",而是前面那一段有多像。误差从第一秒起就在,只是还小;它一直在长,长到和系统本身一样大的那一刻,预报就变成了瞎猜。

所以"确定论不等于可预测"这句抽象的话,具体含义就是这张图:方程完全决定一切,可你对初值的了解永远只有有限的精度——而有限的精度只能买到有限的时间。

🌀 生物 · 同卵双胞胎的指纹 同卵双胞胎基因完全相同、共用一个子宫,指纹却不一样,法医可以据此区分他们。指纹的纹路是胎儿指垫在发育中被力学过程"压"出来的,这个过程本身没什么神秘的随机性可言——差别来自初值:指垫的微米级几何、胎儿当时的姿势和血流,都不可复制。于是有一条不太舒服的推论:指纹作为身份标识之所以可靠,不是因为它信息量大,而是因为它不可复现。同一套基因、同一个子宫都重放不出同一条轨迹,任何"复制条件就能复制结果"的期待,在敏感依赖面前都会落空。

EN In 1961 Edward Lorenz restarted a toy weather model from a printout that had been rounded from 0.506127 to 0.506. The two runs tracked each other, then drifted apart into completely different weather. Nothing random was involved: finite knowledge of the initial state buys only a finite span of prediction.

02精度几乎买不到时间(Precision Buys Almost No Time)

上一节说"误差被放大",这一节把它变成一个能算的量——本期最有用的一步就在这里。

在混沌系统里,两条邻近轨迹的距离大致按指数拉开:d(t) ≈ d₀ · eλt。这里 d₀ 是初始的那点差别,λ 是这个系统放大误差的速率,叫李雅普诺夫指数(Lyapunov exponent)。λ 大于零,就是"混沌"这个词最核心的技术含义。洛伦兹那组方程 λ ≈ 0.9,也就是误差每过大约 0.77 个时间单位翻一倍。

现在把这条式子倒过来解一次。设你能容忍的最大误差是 D,那么你的预测能维持多久:

T ≈ (1/λ) · ln(D / d₀)

注意 d₀ 在对数里面。这一个细节决定了一切:把初值精度提高 10 倍,可预测的时间只增加 ln10/λ ——一个常数。再提高 10 倍,再加同样一小段。精度是指数级的投入,时间是线性的回报。

纵轴是误差的对数 — 指数增长在这里是直线 误差 = 系统自身的尺度 → 预报到此作废 10⁻⁹ 10⁻⁶ 10⁻³ 10⁰ 误差 ● = 三种初始精度 精度 ×1000 再 ×1000 两段一样长 — 每千倍精度只多买到同样一小截时间 时间
三条线斜率相同(都是 λ),只是起点不同。它们撞上"作废线"的时刻等距——这就是对数的意思。

换成大气的数字:误差大约 1.5 天翻一倍。即便初始场完美到只剩仪器噪声,中纬度天气的可预测上限也就在两周上下。按这个翻倍速度算一下:想把 5 天预报做成 10 天,得把初始误差压到大约十分之一;想再往后推 5 天,再压十分之一——而这已经贴着上限了,两周之后压多少都没用。这不是工程难度的问题,是兑换率的问题。

🌀 工程与技术史 · 每十年多报一天 欧洲中期天气预报中心的长期评估里有一条著名的曲线:预报技巧大约每十年前进一天——今天的 6 天预报,大致相当于 1980 年代的 3 天预报。同一时期,气象中心的算力涨了七八个数量级。当然,进步不只来自精度,模型物理和资料同化都在改;但这条曲线为什么是线性爬升而不是随算力爆发,对数律给出了天花板。推论很实用:任何"再多算一点就能算准"的路线图,在混沌系统里都应该按对数折价——先问它买的是哪一段时间,值不值那笔钱。
🎯 决策线

给你依赖的每一个预测标一个有效期:它的误差多久翻一倍 × 你能容忍几倍误差。超过有效期的点预测,从仪表盘上撤掉——不是改进它,是撤掉它,换成区间或情景。同样,别再为"提高精度"追加投入之前不问回报:在混沌系统里,投入是指数的,买回来的时间是线性的。

EN Nearby trajectories separate as d(t) ≈ d₀eλt, so the horizon is T ≈ (1/λ)ln(D/d₀). Because d₀ sits inside a logarithm, a hundredfold gain in initial precision buys only a fixed extra span. Atmospheric errors double in roughly 1.5 days, capping midlatitude weather at about two weeks.

03混沌不是随机(Chaos Is Not Randomness)

这是最容易混过去的一步,也是这个词在实践中唯一值钱的地方:乱,不等于随机。

把一段混沌信号和一段噪声并排画成曲线,多数时候你分不出来——两条都在毫无规律地上下窜。可它们的差别在另一种画法下一目了然。

换一种坐标:不画"某个量随时间怎么变",而是画状态。取信号在时刻 t 的值当横坐标,取它在稍晚一点(比如 0.1 个时间单位之后)的值当纵坐标,每个时刻落一个点。这叫延迟嵌入(delay embedding),是拿一条一维的记录去反推系统状态的标准手法。

同样看不出规律的两段信号 — 换个画法就分家了 信号 A · 混沌 信号 B · 替代序列 数值随时间 → 数值随时间 → 把横轴换成「此刻的值」,纵轴换成「稍后的值」 有骨架 — 确定性的混沌 一团 — 没有骨架
信号 B 不是随便找来的噪声,而是把信号 A 做相位随机化(phase randomisation)得到的:功率谱、自相关、数值分布和 A 完全一样,只是不再由方程决定。上排因此真的分不出。下排换成状态坐标:A 落在一条细细的曲线上,来回绕出两叶;B 是一团理不出线索的乱麻。

左边那个形状就是奇怪吸引子(strange attractor):系统的状态被约束在一个维数很低的形状上,永远绕,永不重复,也永不离开。→ 参考 · 洛伦兹系统 → 参考 · 相空间与吸引子

右边没有形状可言。噪声的"下一个值"和"这一个值"之间没有任何约束,所以它把方框填满。

这个区别落到操作上就是一条判据:在历史里找到与当前最像的几个状态,看它们接下来一小段是不是走向一致。一致,说明有确定性骨架,短期可预测,建模有回报;不一致,说明你面对的是噪声,再复杂的模型也只是在拟合过去。

一句话记住这两者的分别:混沌是短期高度可预测、长期完全不可预测;随机是两头都不可预测。

🌀 经济与制度 · "技术分析"的可检验版本 图形派声称价格走势里有可辨认的形态。上面这条判据能把这句话变成一个能做的实验:把价格序列做延迟嵌入,再和保留了相同均值、方差与自相关的"替代序列"(surrogate data)比——如果确实有确定性骨架,两者应该分得开。几十年的检验里,金融序列在这类判据下基本分不开。推论有点绕但很硬:说"市场是混沌的"其实是在替技术分析背书(混沌意味着短期有结构),而证据不支持这句话;市场更像"重尾 + 近乎不可预测",那是另外两条机制,第 19、37 期的事。
🎯 决策线

在为一堆"看起来有规律"的数据立项建模之前,先做这一个测试:取历史上与当前最相似的 k 个状态,看它们随后一小段的走向是否一致。一致 → 有骨架,短期预测值得投入。不一致 → 停掉建模预算,改做对冲和容错,因为你要预测的东西在这个分辨率下就是噪声。

EN A chaotic time series and a noise series look alike. Re-plot them in state coordinates — value now against value slightly later — and the chaotic one collapses onto a thin surface while the noise fills the box. The operational test: do the nearest historical analogues go on to do the same thing for a short while? If yes there is deterministic structure worth modelling; if no, it is noise.

04于是还剩下什么可做(What Survives)

不可预测的是轨迹,不是统计。这句话是本期全部实用价值的来源。

上一节那个形状有两叶(洛伦兹那只著名的蝴蝶,完整的样子在参考页上)。你说不出第 3000 步落在左叶还是右叶;但你可以相当准地说出:长期看落在左叶的比例是多少、数值的分布长什么样、极端值多久出现一次。这些量对初值不敏感——恰恰相反,它们正是把初值的差别抹平之后剩下来的东西。

天气和气候的关系就在这儿。气候不是"很长的天气预报",它问的是另一个问题:不是"那天下不下雨",而是"这套系统的雨量分布往哪儿移"。所以"连下周都报不准,凭什么报 2100 年"这个诘难,把两类问题混为一谈了——一个问轨迹,一个问吸引子的统计。

第二件还能做的事,是把"一条预测"换成"一群预测":集合预报(ensemble forecast)。既然初值必然带误差,那就别只跑一条轨迹;在初值附近撒一小片云,跑几十条,看它们什么时候散开。欧洲中期天气预报中心和美国国家气象中心从 1992 年起把这件事做成了日常业务。

40 个几乎相同的初值,各跑一条 右叶 左叶 还聚成一束 = 这几步可信 已经撑满整个范围 = 从这里起只剩概率 此刻 40 条里 15 条在右叶、25 条在左叶 黄色带 = 40 条的上下包络 · 彩色三条 = 其中三条个体 · 这个比例可以报,"哪一条"不行 时间 →
散开的快慢本身就是信息:今天的集合到第七天还聚成一束,就说明这几天可预测性高;第二天就散了,那就老实说不知道。
🌀 天文学 · 太阳系稳定吗 这个问题从牛顿问到现在。1989 年 Jacques Laskar 的数值积分给出了坏消息:行星轨道是混沌的,李雅普诺夫时间约 500 万年——初值差 1 米,一亿年后位置就完全不确定了。于是天文学界做了一件很本期的事:换问题。Laskar 与 Gastineau 在 2009 年跑了 2501 条略有差异的轨道,报告的不是"水星会不会失稳",而是"约 1% 的算例里它会"。这条转向不是认输,是认清了兑换率——在给定的李雅普诺夫时间之外,再精确的初值也换不来一条确定的答案,能报的只有比例。
🎯 决策线

把预算从"一个更好的模型"挪到"同一个模型的一群初值"。汇报格式随之改:不给一个数,给一个扇形——外加一句"我们的集合在第几步散开"。离散度本身是要报的第一项,因为它是你今天这次预测到底可不可信的唯一诚实度量。

EN Trajectories are unpredictable; the attractor's statistics are not. That is the difference between weather and climate — one asks which path, the other asks how the distribution shifts. Hence ensemble forecasting: perturb the initial state, run many members, and report the spread. How fast the ensemble diverges is itself the measure of today's predictability.

05这套说法在哪儿不成立(Where This Breaks Down)

"混沌"是复杂性科学里被借用得最随便的词之一。用它之前,四条边界。

第一,"蝴蝶效应"的流行读法基本是反的。1972 年洛伦兹在美国科学促进会做报告,题目叫"巴西一只蝴蝶扇动翅膀,会不会在得州掀起一场龙卷风?"——这个标题还是会议召集人替他起的。它想说的是:既然如此微小的扰动都足以改写后果,那么任何一次天气都无法被追溯到某个具体的原因。而流行版把它读成了"你的小小善举可以改变世界",方向正好拧了:混沌不保证任何单个扰动可以被识别、被瞄准、被用来达成什么。它保证的是不可归因。

第二,在真实数据里"发现混沌"极难,而且当年发现的大多没站住。1980 年代末到 90 年代,经济、生态、心电、脑电里都曾冒出大量"找到低维混沌"的论文。等到替代序列检验(surrogate data test)这类严格方法普及之后,相当一部分结论撑不住——短序列、非平稳、带噪声的数据会让那些指标给出假阳性。癫痫发作预警是最有代表性的例子:早期基于混沌指标的算法在严格的盲测里大多没能超过随机基线。能看出"有确定性结构",和"能预测",是两件事。

第三,混沌不等于不可控——这一条最反直觉。1990 年 Ott、Grebogi 与 Yorke 提出:正因为系统对扰动极其敏感,用非常小的扰动就能把它稳住。奇怪吸引子里嵌着无数条不稳定的周期轨道,只要在合适的时刻轻轻推一下,就能让系统一直沿着其中一条走。这套方法后来在激光、电路、心律实验里都实现过。所以"反正是混沌的,认命吧"是个错误结论:不可预测与不可干预是两回事。

第四,"两周极限"不是每天都成立的承诺。李雅普诺夫指数是长时间的平均值。实际的可预测性随系统当前所处的位置剧烈变化——有的天气型能报十天,有的三天就散。所以真正该报的从来不是"我们的模型能报几天",而是"今天这一次能报几天"。集合的离散度正是拿来回答这个问题的。

EN Four limits. The popular butterfly effect inverts the original claim: chaos means causes cannot be traced, not that small deeds matter. Most 1980s–90s discoveries of low-dimensional chaos in real data failed once surrogate-data tests arrived. Chaos is not uncontrollable — OGY control exploits sensitivity to stabilise unstable periodic orbits with tiny nudges. And λ is a long-run average, so the horizon varies from day to day.

🎒 场景 · BigCat

  1. 工程与系统设计那种"重跑一遍就好了"的偶发失败——挂了一次的测试、线上偶现一次的报错。团队默认的处理是重跑,绿了就关单。但如果这个系统对时序/并发的初值敏感,重跑不是修复,是又抽了一次样。可改的东西:给这类问题记录复现率而不是"是否复现"(跑 200 次挂几次),把"不可复现"当成敏感依赖的证据而不是玄学;第一修法是固定初值——锁住随机种子、锁住时序与执行顺序,让它变得可复现,然后再谈修。该停掉的动作:重跑通过就关单。
  2. 育儿孩子最近冒出某个苗头——不愿写作业、迷上某样东西、某科忽然掉下去——你开始往十年后外推。这条外推正是本期说的那种:轨迹的长期形态对当下这一点差别不敏感才怪,但也正因为敏感,它不可外推——你算不出那个终点,别人也算不出。能改的是另一类东西:吸引子的统计由约束和环境决定,所以动的应该是"家里每天默认会发生什么"(几点熄灯、桌上放着什么、谁在场),而不是这一次的表现。给自己一个可校验的动作:把你半年前对"现在"的预测写下来的那句话翻出来对一次账——对不上的次数,就是你该给长期外推打的折扣。
  3. 修行与心性晚上复盘"今天怎么这么烦",然后一路往回找那件事:某条消息、某个会、某句话。机制说这条追溯基本不含信息——同样的一天里,早半小时或晚半小时遇到同一件事,走向可以完全不同,你找到的那个"原因"只是轨迹上离你最近的一个点。改问一个可测的东西:你是带着什么状态进入今天的——睡了几小时、醒来第一个小时是不是就被别人的议程占掉了。这两项是初值,是能改的;今天第几件事惹了你,不是。该停掉的动作:对当天情绪做因果追溯,改成对次日初值的两行记录。

🌀 越界 · 跨学科的联想(Crossings)

深入思考(Going Deeper)

如果混沌系统短期可预测,那"短期"到底该由谁来定?

由你能容忍的误差定,不由系统定。同一个系统,要求"误差不超过 1%"和"不超过 50%",可预测时间差着一个常数倍(就是那条 ln(D/d₀) 的公式)。这带来一个实际的操作:与其去改进模型,不如先去谈判可容忍的误差——后者常常便宜得多,而且效果是同一个量级的。

为什么明明是确定的方程,人们还是习惯把混沌叫作"随机"?

因为在有限精度下,两者的可用信息是一样的。这提示一件事:确定与随机的区别不是关于世界的,而是关于模型的分辨率。同一条河流,在分子尺度上是确定的力学,在工程尺度上用湍流的统计描述更划算。选哪一种不看"世界本来是什么",看你手上的测量精度和你要回答的问题。

集合预报里的"离散度"能不能直接当成概率?

不能直接当。集合只覆盖了初值的不确定性,模型本身的误差(物理过程的近似、分辨率不够)不在里面,所以集合常常过于自信——散得比真实的不确定性小。业务上的做法是拿历史检验去校准它(可靠性图、分级技巧评分)。一句可迁移的话:任何自产的不确定度都要拿现实校一遍,否则它量的是模型的自信,不是世界的模糊。

如果一个系统被证明是混沌的,"长期规划"还有什么意义?

意义在于它规划的应该是另一类对象。轨迹不可规划,但约束、边界条件、系统的结构参数是可规划的——它们改变的是吸引子的形状与统计,而那正是长期唯一可预测的东西。判断一份长期计划的质量,看它承诺的是"三年后我们会到达某个点",还是"三年后我们的分布会移到哪儿"。

延伸阅读(Further Reading)