蝴蝶扇了一下翅膀,混沌就诞生了
我们耳熟能详的“蝴蝶效应”,最早来源于混沌理论当中。它用来形容的是一类对初始条件异常敏感,并由于确定性的非线性系统而导致的结果产生巨大差异的现象。
你是否曾经想过什么是混沌理论?
给我几分钟,我将给你介绍理论物理中我最喜欢领域之一的基础知识,以及这理论所展现的精美图像——而这只需要加法和乘法就可以达成这个效果,准备好被震惊吧!
01
混沌诞生之时
在上世纪六十年代初期,麻省理工学院的教授爱德华·洛伦兹致力于利用大学里面最新的大型计算机来预测天气。他推导出了描述空气对流的一组简单方程,并利用计算机来求解这个方程。
接下来发生的事情使他大吃一惊:在没有任何随机数引入的情况下(确定系统),计算机利用同样参数两次跑出的结果大相径庭。混沌理论被发现了!
什么是“确定系统”
在数学、计算机科学和物理中,确定系统是系统在未来发展的状态中不涉及到随机数的系统。因此,对于给定的初值或初始状态,其输出结果会一直相同。
所以,洛伦兹的天气预测中,发生了什么?看下面这个例子。
任选一个随机数
比如说:0.123267203462345822542,然后在每一步中,将这个数乘以10,再去掉小数点之前的数(相当于进行了操作mod 1)。
将这个数乘以10
上面的例子中我们得到:1.23267203462345822542
去掉小数点之前的数
得到:0.23267203462345822542
再次重复乘以10
2.3267203462345822542
去掉小数点之前的数:
0.3267203462345822542
......
这当然是一个确定系统,完全没有随机数的引入。
现在,我的问题来了:你能预测这些数字的未来发展状态么?
答案是“既能也不能”。对于更多有限的步骤,可以得出很准确的答案。但是,100步之后呢?题目并没有给出足够的位数。计算机存储小数点之后的位数是固定的(取决于你数字的类型)。一个64位的双精度数有16位十进制的数字,所以,在进行上述的操作15次之后,你将无法获得预测的结果。如果你会编程,我建议你自己尝试一下!在早期的计算机中,这样的方程甚至被用作伪随机数的生成器。
就算我们知道小数点之后的100或者1000位,在此之后,结果都是不可预测的,因为在每次操作中,由于删除了小数点之前的数,破坏了信息。因此最后得到的结果,尤其依赖于初始条件。
02
分叉图——重复 再重复
到这里为止,我们先总结一下我们已经得到的结论:
混沌方程是确定性的方程或者系统(代表没有随机数参与,且明确计算当前态到未来态的结构),同时非常依赖于初始条件,使得我们不可能预测长远的未来。
本文开始的图片是所谓的逻辑图的分叉图的放大区域(如下图)。读完这篇文章之后,你将明白如何解释这幅图,这也是整个物理领域中我最喜欢的图之一:)
逻辑图的分叉图
这是逻辑图的方程。别担心,让我们一起看看一下这个方程表示了什么。
逻辑图描述了种群数目模型,该模型包含两个控制种群规模的对抗部分:种群的繁衍和由于食物供应有限导致的死亡。如果种群中没有生命,x就是0;x=1代表着种群已经到达了最大值(由于食物有限),r是繁衍率。
下标i代表在时间i时的种群数目,下标i+1代表下一个时间的种群数目。这代表着,如果我们知道现在这个时间的种群数目以及繁衍率,就可以计算下一个时间的种群数目。
可以举一个简单的例子。简单起见,假设繁衍率r=1,假如种群初始数目为最大数目的80%,即x0=0.8。
这代表着种群从最大可能种群的80%缩减到16%。原因是种群没有繁殖出足够的数量,也没有足够的食物来维持现有的x=0.8种群。
方程中的 “1×0.8”代表出生的人口。繁衍率越高,出生数目就越多。这里我们把繁衍率取为1,因此下一步中结果仍为0.8;
“1-0.8”部分代表因饥饿导致的死亡。“r·x0=1×0.8” 这一项乘以系数“1-0.8=0.2”,代表5个生物中有4个饿死了。x的值越接近1,越多的生物会死亡。(幸好,这只是模型。)
那么照这样下去这些会怎么发展呢?下面的图展示了种群随时间发展的趋势。图中发生了什么呢?种群x趋于0,代表生物的出生率小于死亡率,因此最终会灭绝。
回到分叉图中,我们用黑点表示x=0,繁衍率r=1,如下图所示。
繁衍率在0~1之间的种群会灭绝
对于更大的繁衍率的种群,比如说r=2.5:
种群的大小快速达到了最大可容纳值的60%,然后保持不变,这被称为系统的不动点。不动点不依赖于x的初始值,只依赖于繁衍率r。在分叉图中,我们用绿色的点标示r=2.5和x=0.6,如下图所示。
接下来我们把繁衍率提升到 r=3.25,看一看会发生什么。下图显示了种群发展的情况:你会发现种群会在两类种群规模之间震荡!
为什么会这样呢?在较大的种群规模下,我们模型中的所有生物都没有足够的食物,一些生物会因此死去,然后剩下的生物就会有足够的食物生存。但是一旦繁衍率再次提升,食物又会缺失,一些生物又会死去,这个过程不断循环……
在绿色的点的位置图像分为了两部分,物理学家称之为:倍周期。在分叉图中用两个蓝色的点标记r=3.25。
如果将繁衍率再度提升,你猜会发生什么?两个蓝色的点分裂为了四个,现在种群的数量在四个点之间振荡。
在分叉图中标记如下。
我们观察到的现象被称为:倍周期级联。4 个固定点成为了8个,8个变为16、32、64直至无穷大,在倍周期级联的最后,混沌就出现了。
在分叉图中,整个区域不用振荡的离散固定点表示,而是用灰色的区域表示,是因为这些点在这些区域都出现过,颜色越深,出现的次数越多。
如果观察 r=3.75的部分,可以看出,灰色区域从x=0.25左右开始,在x=0.9左右结束,代表种群数目在这些值之间不断变化。
下图表示种群在r=4时的情况:种群的数目变化是完全混乱的。如果可以用数字多次计算这个趋势变化,你会发现:初始值的微小变化(由于数值精度的限制)会产生截然不同的结果,这就是混沌的主要特征。
到目前为止,一切还好。但是如果仔细观察混沌区域,会发现灰色区域中间有白色的条纹。这代表什么?让我们放大这个区域,仔细观察。
这看起来跟之前的图像非常相似,让我们放大第二个矩形。
你看见了什么?在r≈3.625的左边,只有混沌出现。在灰色区域,种群数目可以是灰色区域的任意值。然后,混沌突然消失,一个固定点出现了,这些白色的区域被称为稳定岛。然后同样的事情发生了,倍周期出现、二级倍周期……倍周期级联,混沌出现。
如果进一步放大,同样的事情出现:混沌区域的稳定岛、倍周期级联、混沌出现。再放大,更多稳定岛、倍周期级联、混沌……
我第一次学到这个的时候,这个现象绝对震惊到了我,纵使几年后亦然如此。所有这些复杂的混沌行为都能利用一个简单的模型来描述。
我尝试创建一个自相似的动画来展示这个现象,请着重注意闪烁的白色稳定岛和随处可见的倍周期级联现象。
有许多其他的混沌图展示了同样的现象,比如说如下面动画展示的高斯图(有时也被称为老鼠图,你能猜出原因么?)
这个图我们就不放大看了。图的方程包含了一项新的元素:α,在动画中α的取值是从3.5到8。
当曲线不断分裂成2、4、8……时,注意到会有周期倍增的现象。你能观察到在混沌区域出现的稳定岛和倍周期级联等所有元素。
关于混沌现象还有很多其他的图像,感兴趣的朋友可以戳下面的图片↓
蜘蛛网
洛伦兹吸引子
有兴趣的读者们还可以自己动手编码画出属于自己的混沌图哦~
作者:Fabio M. Graetz
翻译:Nuor
审校:Dannis
原文链接:
https://medium.com/@fabiograetz/the-stunning-beauty-of-chaos-theory-fd0e1597d68a
https://en.wikipedia.org/wiki/Butterfly_effect
未来论坛 | YOSIA Webinar | 第六期「AI+科学」系列
北京时间10月17日上午举办的本期“AI+基因科学”将邀请基因组学、基因编辑和生物信息的学者分享如何利用机器学习、大数据和计算方法分析人类基因组并赋能生物学研究。同时,邀请产业界代表一同探讨在人工智能的加持下基因研究未来发展的科学价值和风险对策。