Apr
26
Mandelbrot集(1):定义
(yanlb2000, 2007.04.26, yanlb2000.blogcn.com)
Mandelbrot集(Mandelbrot Set,有人译为曼德尔布罗特集,我觉得挺拗口,还是直接写为Mandelbrote集,或简称M集)是分形(Fractal)和混沌(Chaos)领域的最著名最典型的话题。那个类似葫芦一样的分形图案,几乎成了混沌和分形的象征。
我很早就对分形感兴趣了。所以,这里,我也准备写在博客上,既是总结,也是给大家介绍一下。
分形和混沌是比较新兴的学科,其涉及的领域也很多。我这里,主要还是介绍一下最著名的Mandelbrt集。
对于复数平面上的一个点C,以及作为变量的复数Z(初始值为0),定义一个迭代运算过程:
Z := Z^2 + C,
或者写为
Zn+1 = Zn ^ 2 + C
这个过程将产生一系列的 Z0, Z1, Z2, ...。
我们要考察的是Zn离原点的距离,即abs(Zn)。如果无论经过多少次运算,Zn 的绝对值都是有限的,就说C点属于Mandelbrot集。如果经过有限次数的运算之后,其绝对值可超过任意给定的值,(比如说R=2),那么就说C点不属于Mandelbrot集。
如果你对复数平面不熟悉,那也可以理解为一个普通的二维平面,其上每个点都有x和y方向的坐标,这个点就代表了一个复数 C = x + y*i。x和y就是这个复数的实部和虚部。
显然,Mandelbrot集是个抽象的数学概念。经过一些试验计算,我们可以发现,那些离原点比较远的点,肯定是不属于M集的,不断地平方再加自己,可以迅速超过任何给定数值。而那些离原点很近的点,则无论如何都不可能变大。因此,那些紧靠原点的点,显然属于M集。而远离原点的,肯定不属于M集。
现在问题来了,在M集和非M集之间,分界线在哪里?有没有一个明确的界线,将M集和非M集划分开来?或者说,能明确地给出这个界线的定义(解析式)吗?又或者说,有没有一个明确而简便的方法,使我们可以对任意一个复数C,给出其是否属于M集的结论?
很遗憾,这个问题远非相像的那么简单。没有这样的简单方法,没有这样明确的界线。
对于一个给定复数C,除了实际验算,无法给出明确的答案。
而就算根据前面的定义实际验算了,结论也是复杂的。
如果经过一定次数的迭代运算,Z的绝对值超出了设定的常数R。那么很好,这个C不属于M集。
但也有可能,就算经过1000次运算,其绝对值还是很小。那么,就可以说C属于M集了吗?不一定!有可能,在接下来的1001次或更以后,就可以发现Z超出了R!
按理,上述迭代过程是个非常确定性的过程,而且很简单。所以,对于任意一个给定的C,其是否属于M集,应该是确定的。但实际上,对于某些C值,我们有可能无论经过多少次迭代,都无法给出结论,而我们又不能说,这个C就不属于M集了,因为说不定增加迭代次数,就发现超出R了。结果不明,这就是“混沌”了。
Tags: Mandelbrot, 分形, 混沌