混沌理论与 Python 编程
混沌理论与 Python 编程的碰撞
一、说明
了解混沌,请读詹姆斯·格雷克(James Gleick)的精彩著作《混沌:一门新科学》(Chaos: Making a New Science) ,它让我们领略了混沌的科学原理和美妙之处。理解蝴蝶效应、奇异吸引子、曼德勃罗集等概念。此外,用Python重现书中那些精美的可视化图表也让我们增加参与感,下面将展示其中的一些。
二、了解蝴蝶效应
蝴蝶效应是混沌理论中最广为人知的概念,或许也是最容易被误解的概念。大多数人对蝴蝶效应的普遍理解是,它指的是微小的因素会在之后引发巨大的变化(比如北京一只蝴蝶扇动翅膀,纽约就会出现龙卷风)。但实际上,蝴蝶效应描述的是大型复杂系统对初始条件的极度依赖性,这意味着即使初始条件发生微小的变化,也可能导致后续的巨大改变。蝴蝶扇动翅膀可能引发龙卷风,也可能阻止龙卷风的发生。由于系统过于复杂且相互交织,即使我们做出微小的改变,也永远无法预知最终的结果。
一些简单的机械系统,例如水车或双摆,就能展现这种特性。可以将上图视为我们正在追踪的系统参数(例如双摆的位置、速度等)。动画实际展示的是,系统永远不会重复相同的状态。最终的图表形似蝴蝶的翅膀,我更倾向于认为这种效应的名称来源于这种视觉效果,而不是另一个流行的龙卷风概念。尽管曲线看起来似乎相交,但仔细观察三维图表,你会发现它们实际上从未相交。洛伦兹吸引子很容易用代码实现,因为它本质上只是一组三个微分方程,分别描述了三个量随时间的变化率。
洛伦兹方程
洛伦兹方程的Python代码
三、分岔理论
在混沌理论中,分岔是我最感兴趣的概念。它与种群增长有关。假设蝴蝶种群数量为x ,增长率为r。x是一个介于 0 和1之间的数字,表示假设的最大可能种群数量。我们需要对种群增长进行建模,并且我们知道,如果种群数量不受控制地增长,蝴蝶最终会饿死。因此,模型必须是自正则化的(用数据科学术语来说)。逻辑斯蒂映射在这种情况下非常适用。
人口增长模型
该方程式表明,明年蝴蝶的数量取决于今年的数量。乘以括号中的项可以确保种群数量不会失控增长。如果我们使用上述方程式,并从某个特定的r 值(例如 2)开始,种群数量会波动,并在多年后最终稳定在一个数值上。
如果我们增加r的值呢?稳定种群的数量也会增加。如果我们进一步增加r的值,比如说 3 呢?你会发现种群数量永远不会收敛到一个单一的数值。相反,它会在两个数值之间波动。从视觉上看,图表会分成两部分,因为存在两个稳定的种群。如果继续增加r 的值,图表会再次分裂。这就是混沌的开始!
分岔图——混沌始于 x = 3 处
使用以下代码,可以在 Python 中轻松创建分岔图。
import numpy as np
import matplotlib.pyplot as plt
P=np.linspace(0.7,4,10000)
m=0.7
X =[]
Y =[]
for u in P:
X.append(u)
m=np.random.random()
for n in range(1001):
m=(u*m)*(1-m)
for l in range(1051):
m = (u * m) * (1 - m)
Y.append(m)
plt.plot(X,Y,ls='',marker=',')
plt.show()

四、分形
分岔图有一个有趣的特性。如果你放大图中杂乱的区域,你会发现其中的模式在重复出现。
分形是指在不同尺度上具有自相似性的图案。自然界中存在许多分形,例如雪花、树木、血液循环系统、光照等等。格莱克在书中指出,由于自重复图案只需要较少的信息即可编码,因此我们在生物体的复杂器官(例如人类的肺)中经常发现这种图案,因为DNA只需编码极少的信息就能告诉身体如何构建该器官。
五、曼德勃罗集
曼德勃罗集是指满足以下条件的数集:迭代函数x² + c(其中 c 为常数)不会趋于无穷大。我们以x = 2和c = -1为例来理解这一点。迭代应用该函数,我们得到x1 = 2² - 1 = 3,x2 = 3² - 1 = 8,x3 = 8² - 1 = 63,它不断趋于无穷大,因此不属于曼德勃罗集。取x = 1,我们得到x1 = 1 - 1 = 0,x2 = 0 - 1 = -1,x3 = 1 - 1 = 0。它在 0 附近波动,永远不会趋于无穷大,因此属于曼德勃罗集。如果我们编写代码找出所有属于曼德勃罗集的复数并绘制它们的图像,我们将得到如下美丽的图形。

曼陀罗集合生成代码
六、曼德勃罗集与分岔图的关系
曼德勃罗集和分岔图之间存在着一种隐藏的联系。如果我们把曼德勃罗集中的数值收敛到的 z 轴上的值绘制出来,我们实际上就能得到分岔图!是不是很神奇?
七、最后想说的话
我对混沌理论对机器学习领域的影响十分感兴趣,机器学习试图预测系统的未来状态,而混沌系统的状态却永远无法预测,至少无法预测超过一定时间范围的状态!格莱克的著作让我对混沌理论的科学性和美感有了全新的认识。它足以改变我们看待世界的方式,让我们可以窥探在日常生活中发现的分形和非线性系统运作。
更多推荐

所有评论(0)