分形与混沌

混沌

这里所说的混沌并不是混乱之意,而是世间万物的一种属性。人们试图找到自然界事物发展的一定定律,然后用数学公式抽象出来,希望能预测将来事物发展轨迹,大部分时候可以奏效,但是极少时候也会出现问题,出现不可预测情况,比如气候骤变,股市突然暴跌。这些都体现了事物的混沌属性。混沌,是指在一个能被数学方程式精确描述的系统中,可以自发生成不可预测的现象,并且不需要任何外界的干预。有一种误解是,认为混沌就是一切事物都是非常复杂的,搞不清楚。事实比这更简单但同时也更复杂。通过使用非常简单的法则或方程式,并且里面不包含任何的随机性,系统中所有的元素都是确定的,并且我们完全掌握系统的法则,即使是这样的系统也会产生完全不可预测的现象。由于系统内部构造,在某种情况下,即使在初始的时候有一点点误差,哪怕这个误差小到难以测量,这个误差会随着每次计算不断被放大,随着系统的运转,系统的状态会一点一点地偏离你所期望的状态,由此产生蝴蝶效应。混沌是一条基本的物理法则。简单的数学方程式能繁衍出复杂的行为,这种复杂超出我们的想象。所以简单而机械的系统能够表现出复杂和丰富的行为。自然界具有固有的不可预测性,这种不可预测的内部驱动力也可以使系统表现出特定的结构。

分形

有序与混沌是联系紧密的,自然界中所有形状的共同点,就是自相似性,不断在更微小尺度重复自己。天空中漂浮的白云,如果从更小尺度上看的话,你会发现与整体非常相似;高山,当你局部放大后,你同样会发现这部分又是由诸多小山峰构成;大树,你会发现它每部分都是由与自身相似的更小部分组成的,从树干到叶片上的经络;海上的波浪,飞行的群鸟。这种在更微小尺度上重复自己的特性,造就了由简单结构够成的系统的复杂性。比如曼德布罗集,通过公式表示如下:

z=z 2 +c

由此得到的曼德布罗集图像如下所示:


分形与混沌_第1张图片

单从图片整体上看,会觉得这是一幅很复杂的图像,但是当你放大之后,会发现它的每一微小尺度都与更大尺度是一样的,而达到这种效果的背后,只是一个简简单单的数学公式,将上一步得到的结果(因变量)再次赋值自变量(其实因变量和自变量都是同一个变量),这就很像程序之中的迭代。这种由简单构造(上面那个简单的公式)构成的系统(曼德布罗集图案)看上去是不是很复杂的样子呢?

考虑函数f(z)=z^2-0.75。固定z0的值后,我们可以通过不断地迭代算出一系列的z值:z1=f(z0), z2=f(z1), z3=f(z2), …。比如,当z0 = 1时,我们可以依次迭代出:

z1 = f(1.0) = 1.0^2 – 0.75 = 0.25

z2 = f(0.25) = 0.25^2 – 0.75 = -0.6875

z3 = f(-0.6875) = (-0.6875)^2 – 0.75 = -0.2773

z4 = f(-0.2773) = (-0.2773)^2 – 0.75 = -0.6731

z5 = f(-0.6731) = (-0.6731)^2 – 0.75 = -0.2970

可以看出,z值始终在某一范围内,并将最终收敛到某一个值上。

但当z0=2时,情况就不一样了。几次迭代后我们将立即发现z值最终会趋于无穷大:

z1 = f(2.0) = (2.0)^2 – 0.75 = 3.25

z2 = f(3.25) = (3.25)^2 – 0.75 = 9.8125

z3 = f(9.8125) = (9.8125)^2 – 0.75 = 95.535

z4 = f(95.535) = (95.535)^2 – 0.75 = 9126.2

z5 = f(9126.2) = (9126.2)^2 – 0.75 = 83287819.2

经过计算,我们可以得到如下结论:当z0属于[-1.5, 1.5]时,z值始终不会超出某个范围;而当z0小于-1.5或大于1.5后,z值最终将趋于无穷。

现在,我们把这个函数扩展到整个复数范围。对于复数z0=x+iy,取不同的x值和y值,函数迭代的结果不一样:对于有些z0,函数值约束在某一范围内;而对于另一些z0,函数值则发散到无穷。由于复数对应平面上的点,因此我们可以用一个平面图形来表示,对于哪些z0函数值最终趋于无穷,对于哪些z0函数值最终不会趋于无穷。我们用深灰色表示不会使函数值趋于无穷的z0;对于其它的z0,我们用不同的颜色来区别不同的发散速度。由于当某个时候|z|>2时,函数值一定发散,因此这里定义发散速度为:使|z|大于2的迭代次数越少,则发散速度越快。这个图形可以编程画出。

c = 0.45, -0.1428

分形与混沌_第2张图片

c = 0.285, 0.01


分形与混沌_第3张图片

c = 0.285, 0


分形与混沌_第4张图片

你可能感兴趣的:(分形与混沌)