贾明子,化学工程,玻尔兹曼门下走狗 一、蝴蝶效应 1961 年,气象学家 Edward Lorenz 建立了一个简化的气象模型,这个模型一共用了 12 个参数,用来表征基本的气象特征,诸如气压、温度等等。他在计算机上运行了这个模型。这是一个非常典型的数值计算过程,现在每个科学家和工程师对对之无比稔熟,但是在这次计算中,一个事件成了混沌理论的第一个灵感。 引发这个灵感的事件,是 Lorenz 无意间的一个决定:处于某种原因他想重新运行一下这个程序的一部分。为了节约时间,他并没有从头运行这个模型,而是从运行中段的某一时刻作为初始点来运行。熟知数值运算的人们都知道,程序不变,初始点又是来自上一次运行结果,那么再运行多少次,最终得到的结果都是一样的。但是这一次不同,Lorenz 发现,这次的运行结果和上次大相径庭,仅仅在一开始的很短时间内重复了上一次的结果,但是很快就偏离了,并且偏离得毫无规律,就好像这个结果是来自一个完全不同的程序。 我们在运行一段有点复杂度的代码的时候,会经常发生类似的令人意外的结果。绝大多数情况下,我们会抱怨电脑的不靠谱,又是哪里出 bug 了,然后执行“关闭所有的窗口并且重启”的标准流程。但是这一次 Lorenz 决定好好看看哪里出问题了。他很快发现了问题所在:当他从中段重新运行这段程序的时候,他并没有直接取用存储在电脑里的中间数据作为初始点,而是从打印出来的数据上手抄进电脑。当时的电脑精度并不太高,但是中间数据也有很多位(0.506127),但是他抄写的却只有 0.506 三位数,这样就有了 0.025%的偏差。就是这么一丢丢偏差,导致了运行结果的截然不同。于是他发现,这段程序有一个特点,就是对初始条件的极端敏感。 我们知道,系统未来的演化路径是由它现在的状态(初始条件)决定的。那么,不同的初始状态,未来演化路径不同,我们一般认为,初始状态越一致的,未来演化路径就会越接近。两个非常接近的初始状态,它们未来的演化路径会非常接近。但是这个运行结果却表明,实际上并非总是如此。两个非常接近的初始状态,未来演化却在很短时间内变得分道扬镳,完全不同了。 我们说极端敏感,到底有多敏感呢?答案是,非常。Lorentz 很快把这次结果发表了一篇论文[1]。在论文中他这样说: “One meteorologist remarked that if the theory were correct, one flap of a sea gull's wings would be enough to alter the course of the weather forever. ” “一个气象学家这么评价:如果这个理论是正确的,那么,一只海鸥忽闪一下翅膀,就足以永久地改变天气走向。” 这个比喻很形象地描述了预测结果对初始条件微小误差的敏感性。后来,在 1973 年,在第 139 届美国高等科学学会(American Association for the Advanced Science)会议上,他做了一个报告。会议的主持人给了这个报告一个很有诗意的名字,叫做“巴西某个蝴蝶闪动一下翅膀会引发德克萨斯的一场飓风吗?”。[2]至此,人们所熟知的“蝴蝶效应”就正式登入了科学史册。 二、反馈系统和指数发散 从数学上讲,这种所谓的极端敏感,是因为误差的增长随着时间以指数速度被放大。指数的放大有多么恐怖,这里就不多讲了。有很多有趣的例子,例如印度舍罕王的宰相西萨.班.达依尔的数麦粒的故事。 具体讲,如果一个动力学系统的初始条件中有一个微小误差 ,那么,在它的演化过程中,这个偏差在时间 t 会 演化为: 这里, 被称为Lyapounov 指数。它表征了敏感程度。如果它是负数,我们会发现初始偏差会在演化过程中被不断抹平 - 它对初始条件不敏感。反之,初始误差则随着时间不断放大 - 它对初始条件极端敏感。 从数学上讲,这个指数速度来源于这样一个事实:一般动力学系统,其演化总是可以被这样一个微分方程来描述: 这里,X 指的是系统的状态,而 f(X)指的是对系统状态的某种变换。这个方程说的是: 一个系统的变化速率,取决于系统的状态本身。 这个是一个很 trivial 的关系。科学研究的就是事物的状态和事物状态的变化,因而,科学定律必然是与“状态”和“状态的变化”有关的,所以科学定律表达成这种形式就顺理成章了。并且,由于物理定律的时间不变性(这里考虑孤立系统),这种形式肯定是不含时的。 任何一个“光滑”的动力学系统,总是可以被局部线性化(通俗点讲,就是在很短的距离内,一段曲线可以用它的切线来近似替代): 其中L是一个线性算子。而我们知道,线性微分方程,它的解总是带有一个指数的: 用通俗的语言来解释,其实也很简单:这种形式的微分方程,描述的是一个反馈系统。 怎么理解呢?我们说,这个方程的形式告诉我们,在某一时刻系统状态的变化率是由系统状态本身决定的。而系统状态变化率又会决定下一时刻系统的状态,下一时刻的状态又决定了下一时刻的变化率,继而又决定了下下时刻的状态……,系统就以这种方式不断反馈给自身。 简单说,对一个初始稳定的动力学系统,它的所有状态不随时间变化,也就是变化率为零。如果在 0 时刻系统的状态发生一个扰动δ,使得它的状态偏离了平衡态,那么,根据微分方程,这个偏离了平衡态的状态就导致了它的变化率偏离了零(也就是说它的状态会进一步发生变化)。而不为零的变化率就会使得下一时刻系统状态进一步变化。如果这个变化的方向与最初的扰动δ一致的,那么它会使得系统在最初扰动的方向上走得更远,系统状态就会更加偏离最初的稳定态。而更加偏离的状态又会使得其下一刻的变化率更加有利于这个方向。这是一个正反馈,那么,系统的这个扰动就会以非常快速的速度扩大,在一瞬间崩溃。每一个正反馈的循环,都会在初始的偏差上附加一个变化倍数,所有的这些变化倍数叠加起来,自然而然就是指数形式的。 反之,最初的扰动使得系统状态偏离平衡态,而偏离的平衡态导致状态变化率偏离了零,如果这个变化率与最初的扰动方向相反,那么,它就会把系统状态从偏离的方向拉回平衡态,动力学方程是个负反馈的,那么,系统的扰动就会以指数速度缩小,因而系统回到最初的状态,这就是微分方程中得到的指数收敛的结果。 总之,如果系统状态的反馈抵抗它的扰动,那么这个系统是负反馈的,初始的扰动会以指数速度迅速缩小直至为零;如果系统状态反馈强化它的扰动方向,那么这个系统是正反馈的,初始的扰动会以指数速度迅速扩大直至完全不知所踪; 负反馈是稳定的,正反馈是不稳定的。事实上自然界有很多这种正负反馈的例子,比如说同样的氧化反应,一个稳定的燃烧过程就是一个负反馈过程,但是一个爆炸过程就是正反馈过程。再比如说,我们只会看到一根立着的针倒下,却从来看不到一个平躺的盒子站起来: 三、蝴蝶效应≠混沌 蝴蝶效应是混沌过程最广为人知的特征,但是也是最容易被误解的特征。 很多影响巨大,甚至足以开辟或颠覆一个领域的科学理论,作为一个科学议题,它的知名度却只是局限于一个非常小的科学家圈子里,这包括了很多对科学有重大意义的理论。这些理论都是极具颠覆性而且极富争议的,但是广大吃瓜群众对它们毫无所知也毫无兴趣。但是如果把它们以一种娱乐形式的类比表达出来,或者是冠以一种富有戏剧性的名号,它就很快吸引到大量的眼球,并迅速普及开来。比较典型的例如所谓的物理学四大神兽。蝴蝶效应也是这样一个典型的例子。如果没有蝴蝶闪动翅膀引起飓风的论述,人们根本不会知道混沌原理。 但是,给科学理论赋予戏剧化,这是一柄双刃剑,它的确能够迅速地把一个理论普及开来,同时,普及开来的理论因为被被赋予了太多的戏剧性,因而理论的普及往往伴随着误解的扩散,普及开来的理论已经与原本严肃的理论大相径庭了。 蝴蝶效应所表达的,并不是说蝴蝶的翅膀不可避免地导致一场风暴。蝴蝶的翅膀其实与德克萨斯的风暴没有任何直接的因果关系。这个类比真正的含义是说,如果我们想精确地预测两周后的一场风暴,我们现在所需要获知的的信息,必须要细致到每一个微小的变化,哪怕是像一个蝴蝶的翅膀这么细致。这并不是说蝴蝶翅膀引发了风暴 - 如果是存在这种因果关系,我们就应该能够从蝴蝶的翅膀预测风暴的发生,而实际上,引发风暴的因果网极其复杂,世界上每一只蝴蝶的翅膀都被卷入了这张网络之中。多一个或少一个蝴蝶的翅膀可能会引发风暴,也可能不会,也有可能会引发一次大地震或者海啸什么的,或者引起了我本文的回答。这些我们都无法预测 - 它太复杂了。简言之 蝴蝶效应不是说:“蝴蝶的翅膀引发了风暴” 而是说:“引发风暴的原因太复杂了,以至于我们需要知道每一只蝴蝶的翅膀才有可能预测。” 并且,蝴蝶效应并非混沌的最关键效应,有很多很多有着蝴蝶效应的系统,它们并不是混沌系统。比如说,我们考虑一个生物群落的增殖过程(想象一个细菌的培养皿)。假设说,培养皿很大,菌落很小,那么整个菌落的增殖不会受到任何环境资源的限制。如果说每一代的增值倍数为 r,那么很显然第 N 代的数量为: 这个就是指数增殖速率。 但是在实际世界中,一个环境的资源总是有限的。假设环境可以维持的最大个体数量为 K,那么在个体数量为 N 的时候,环境还剩余能够支撑增殖的数量为(K-N)。那么, 就是环境剩余的增殖空间。那么,在环境资源有限的情况下,这个增殖过程就可以表示为: 这个,叫做logistic 增值速率。 我们取: 就可以得到指数增殖速率为: logistic 速率为: 其中,指数增殖不是一个混沌系统,但是在某些情况下,logistic 增殖是。但是两个系统中都有蝴蝶效应。比如说在指数增殖,很容易知道: 如果初始条件有了 的偏差,很容易得到,到第 i 代时,偏差就会是: 很显然,初始偏差随着演化以指数速度扩大,Lyapunov 指数就是 lnr。也就是说,在初始状态下,两个菌落的数量有一个很小的区别,随着增殖过程,这两个菌落的数量差距会越来越大。但是很显然这是一个完全可预测的系统。比如说当 r=3.9 的情况下,一个菌落初始 x=0.5,另一个有 10%的偏差(0.55),两个菌落的增殖过程如下: 我们可以看你两个菌落之间的偏差演化: 我们可以看到,初始 0.05 的偏差,在第九代就变成了 26760。这个增长速度不可谓不快。但是很显然它不是混沌系统。这就是一个典型的有蝴蝶效应的非混沌系统。 我们再来看看 logistic 增殖。同样的两个菌落,演化过程是这样的: 它们之间的偏差随着演化是这样变化的: 这个就有着非常强烈的不可预测性。 从这个例子我们可以看出,蝴蝶效应远远不是混沌行为。混沌行为还有其他更重要的特征。 四、相空间的混合性 一系列相互有所偏差的系统所组成的集合,在动力学或统计力学中叫做系综。我们通过研究这个集合中的每一个系统的演化轨迹,就可以研究动力学的混沌行为。这个系综在相空间中构成一个粗粒,这个粗粒有一定的相体积。直观上讲,一个粗粒的大小表示了我们对系统的不确定性:越小的粗粒,表明系统的可能范围越小,我们对它的认知就越精确;越大的粗粒,表明系统的可能范围就越大,我们对它的认知就越模糊。 对一个能量守恒的孤立系统,刘维尔定理告诉我们,粗粒的相体积守恒,也就是说系统的演化过程中不会产生额外的不确定性; 但是蝴蝶效应说:系统的演化对初始条件的误差极端敏感,初始的一丝丝不确定性就会被瞬间放大到一个令人瞠目结舌的尺度。 其实,这两者并不矛盾。 对于一个蝴蝶效应的系统,如下图中的一个初始粗粒,随着时间的增加,它们中间任意两个点的偏离会以指数速度增加。同时,粗粒本身却不膨胀。也就是说,粗粒在演化过程中必然伴随着拉伸和压缩两个形变。也就是说,粗粒中的相点在某些方向上快速分离,导致距离增加,为了保持相体积守恒,必然会在另一些方向上快速收缩。效果上,就是这个粗粒在某些方向上拉伸,另一些方向上压缩。也就是说,粗粒会快速被“摊”成一张极薄的大饼,或者“抽”成一条极细的丝线。因而,系统的演化就是这样在总体相体积不变的情况下,出现了某些相点的指数速度分离。简言之,以某些自由度的确定性高度增加换取了另外一些方向上的不确定性的放大。 无论是“摊”成薄饼或者“抽”成细丝,都是以某些维度上偏差的快速扩大换来了另一些维度上的快速缩小。也就是说,系统其实在一定程度上获得了很好的确定性,这意味着这个子空间的相应的自由度在丧失,使得复杂运动变得非常简单。在我们在某些维度上丧失确定性地同时,另一些维度上反倒获得了极大的确定性。 然而,混沌系统留给我们的,是近乎 100%的无知。动力学系统的复杂性并不仅仅体现在初始条件敏感这一点上,更加令人头痛的,是它拓扑结构的高度混合。 随着演化,这个粗粒会发生平移、旋转、拉伸等等一系列形变。上面提到的拉伸和压缩,都是线性变化(考虑一个线性算子的特征值问题)。但是动力学系统往往是高度非线性的,所以在些变化之外,还有很多非线性变化,包括扭曲、弯折、卷曲、缠绕等等。 有了这些形变过程,就产生了更加复杂的变化。形象地说前面说到的一个粗粒的线性拉伸,会把它拉扯成一根“针”。然而,非线性形变,就会有更多“柔软”的性质,相当于把它拉扯成一根细长的“拉面”。然后我们把拉面窝成松散的一团放进碗里,它就“分散”在整个相空间里了。当我们把它拉断极细极细,那么这一团拉面就像是“扩散”一样,扩散到碗里了。就好像是一滴墨水滴入水池中去。在一开始,我们非常确定墨水的位置。但是很快它就扩散到全部水池中,我们就不能确定墨水的位置了。然而在这个过程中,墨水的体积并没有增加,它只是和池水混合了。 最后,我们来打一个比方:混沌系统是一个毛线球。对于某个系统,一开始我们观察它的状态。根据观察精度,我们可以确定系统在一个狭小的相体积 S(0)内。然后系统开始演化,这个 S(0)就不断被拉伸,由一块“立体”的体积变成了一条长长的“纤维丝”。这条纤维丝不断缠绕,变成更粗的丝线,丝线又继续缠绕,就变成一条毛线,这条毛线线继续缠绕,编织在一起,就成了一个毛线球。由于持续的拉伸作用,原始的 S(0)可以被越拉越长,因而这个“毛线球”就会越缠越大,S(0)可以拉长成为任意长的一条丝线,因而它所能缠绕而成的体积也可以变得任意大。这样一来,一开始我们所能够确定的系统所在的狭小范围,现在变成了一个巨大的线球。也就是说,一开始系统的确定度十分精确,渐渐地就变得扩大、模糊。 当然,如果我们能够提高观察精度,我们会发现,这个球是有空隙的,每条毛线之间是有距离的,而编制成毛线的每条纤维之间也是有距离的。抛去内部空隙,这个毛球所“真实”覆盖的体积其实是非常有限的,与原始的 S(0)相比并没有任何扩大。但是,随着演化时间的增加,在线球内部,丝线和空隙形成了一种极端精细的结构,彼此互相式交织在一起,每条丝线附近无限小的地方就有另一条丝线,而每个空隙附近无限小的地方就有另外一个空隙。这个精细结构的形成是极其迅速的,几乎一瞬间就突破了我们的观察精度。整个过程如下图示意: 这个毛线球在空间中的结构有一点点让人头晕:缠绕成这个毛线球的线是无限长的(当然,如果不是经历了无穷长的演化时间,它不会是真的“无限长”,但是它比宇宙的尺寸还要长百万千万倍)。当我们就进观察这个毛线球中的一小段线,我们会发现,这段线并不是简单的一条线,而是由众多细线缠绕而成的。而这些细线呢?当我们更加仔细观察,用放大镜看时,我们会发现,它们也是一样的结构:由众多更细的线缠绕而成。那这些更细的线呢,我们再仔细观察,用最好的电子显微镜,我们会发现它仍然是同样的结构。如果我们可以无限扩大我们的观察精度,我们无限地往下跟踪这些更细的线,我们会发现,永远没有尽头!所有的线都是由更细的线缠绕的,我们找不到那一条“最后”的、不是更细的线编成的、最细的线! 这种结构,有一种非常有意思的几何特征:它的每个局部,无论多么精细的局部,都与整体有着相似的结构,永无休止。它有一个数学上的名字,叫做“分形”。 分形的形成,是混沌系统的关键。 五、分形 分形是 1967 年由 Mandelbrot 提出的。他的论文题目也很有特点,是“英国海岸线到底有多长?统计自相似性和分数维度”[3]。在其中他分析到,英国海岸线的长度,取决于我们的测量精度。当我们不断增加精度的时候,我们会发现以前按照直线测量的部分,其实有细微的曲折。当然我们可以进一步 zoom in, 会发现曲折中有更细微的曲折。每一层的曲折都有着和上一层非常相似的结构。如此循环,最终其实英国海岸线有无穷长(图片来自维基百科)。 这就是分形的无限精细结构和自相似性。这在混沌系统中有着极其重要的作用。 一个相空间中的初始粗粒,在演化过程中变成复杂的分形结构,这在动力学系统中也是普遍存在的现象。在前面我们说到,一个非线性动力学的演化过程,初始粗粒的形变包括了线性的拉伸和压缩,还有非线性的弯曲、扭曲、缠绕等。这些基本的形变形式,结合起来并不断重复,恰恰就是分形结构形成的基本机制。这种自相似追溯下去是无穷无尽的。基于分形的这种特征,动力学系综在演化过程中,一个初始粗粒就可以在保持自身体积不变的情况下,把一个很小的初始相体积,逐渐渗透、扩散、并填充到整个相空间中去,并且与整个相空间混合得趋向于无穷精细,让你再也无法从相空间中把它们区分出来。就像是前面讲的那个极端复杂的毛线球一样。 我们仍然用液体的混合过程作为类比:一滴液体滴入流水当中,这一滴液体具有初始的体积和形状(初始粗粒和初始相体积)。随着水流,这滴液体逐渐在流水中运动、形变。如果说,这滴液体是一滴油,那么,这个油滴尽管会发生各种形变,我们都可以把它和水区分开来 -- 这就是拓扑非混合的演化。它不会无限重复形变最终达到分形结构。但是,如果这滴液体是糖浆,那么,糖浆的液滴在水中一开始它保持着相对独立的体积,但是随着溶解过程(演化过程)的展开,它就混合(分形)到整个水中,形成溶液,与水密不可分。虽然说,糖浆的量并没有增加,但是它却已经与水完全交融了,因而分布在整个空间中再也没有办法区分 – 这就是拓扑混合的演化。 既然初始的粗粒在演化过程中与相空间高度混合而无法区分,那么我们只好说,它的相体积分散到各处了。或者说,演化的轨迹分散到整个空间无法区分了。 六、一些典型的混沌系统。 我们最常听说的混沌系统莫过于三体系统了,拜刘慈欣所赐。前面讲的logistic map也是一例。这里不多讲 再比如说,复摆[4]: 最典型的一类混沌系统,莫过于奇怪吸引子(strange attractor)。所谓的吸引子,是指的相空间中一片区域,周边的演化最终全部进入该区域并且再也出不来了。用非数学的语言说,就是有这么一些运动状态,一个系统一旦进入到这种运动状态就维持它,而再也不会产生其他运动。直观讲,就是有些“坑”一旦进去了就再也出不来了。 奇怪吸引子的奇怪之处在于,在这个坑里面处处不稳定,但是这个坑却是稳定的。任意两个状态点在这个坑中总是时时相互远离,但是它们却永远呆在这个有限的坑中出不去。最终的结果就是,任意靠近的两点,在演化中总有一些时刻完全分离;反之完全分离的两点,也总能有些时间演化为任意靠近。比如说 Lorenz 的模型就是一个奇怪吸引子。 七、一句话总结 总而言之,混沌的特征包括: 非线性、决定论 蝴蝶效应 极端精细的相空间混合性 分形的形成 八、划重点:混沌≠随机 混沌理论又被称作“确定性混沌”(deterministic chaos)。原因是它起源于完全决定论的方程。原则上它是完全确定的、可预测的,并没有什么随机性在里面。而在实际上(For All Practical Purpose, FAPP),这种预测需要近乎无限的计算力。比如说为了精确计算一个三体问题,我们可能把全宇宙的所有物质全部用来制作成数据存储器还不够。也就是说,它原则上可预测,实际上不可预测。 另外请不要把确定性混沌和量子混沌混为一谈。后者其实是一个量子 - 经典过渡问题,而不是混沌本身。这一点这里就不多讲了。 以上内容简化自本人专栏文章: 贾明子:8、指数发散和蝴蝶效应贾明子:9、我们这个反馈的世界贾明子:10、运动是个毛线球贾明子:11、分形:小小体积可以充满大大空间吗?贾明子:12、FAPP 和原则