第七章:魔鬼的聚合物-曼德勃罗集 图(7.1)的曼德勃罗集可称是人类有史以来做出的最奇异、最瑰丽的几何图形,被人称为“上帝的指纹”、“魔鬼的聚合物”。 图(7.1)∶曼德勃罗集所形成的图形 张三正在图书馆里的计算机旁,向他两个朋友介绍他编写的曼德勃罗集计算机程序。王二突然眼一亮,注意到一位身穿白色连衣裙的漂亮姑娘。王二知道姑娘名字叫林零,是个刚入学的音乐系新生。王二眼尖,一眼就看上了那姑娘脖子上松松系着的,一条耀眼的小丝巾,心中一动,走过去搭讪∶ “林零,我叫王二。不好意思┅┅能不能借用一下你围的丝巾?给我的朋友们看看,因为它的图案和我朋友刚才用计算机产生的图案太像了!” 图(7.2)用曼德勃罗-朱利亚图形设计的丝巾图案 红线勾出的图形与图(7.1)右下图的朱利亚集相似 “真的吗?”林零瞪着大眼,十分好奇,跟随王二走到计算机旁,见屏幕上的叫做‘朱利亚集’的那张图的确和她围巾上的图案相似。这时,在图书馆读书的别的几个学生也围了过来,欣赏计算机生成的、可以随意放大的美妙图形。不管你把图案放大多少倍,好像总还有更加复杂的局部,图案结构变换无穷,有的地方象日冕,有的地方象燃烧的火焰。放大的局部既与整体不同,又有某种相似的地方。有人对张三说∶ “哇,你太神奇了,画出这厶复杂的图形,程序很难写吧┅┅” 可张三说,令人惊奇的是,这程序一点不难啊,几小时就完成了。因为实际上,这些美妙复杂变换无穷的图形只出自於一个很简单的非线性迭代公式∶ Zn+1 = Zn2 + C 。 (7.1) 这个非线性迭代是什厶意思呢?李四提议张三,在桌旁的黑板上,先给大家简单地介绍一下曼德勃罗集以及他的程序。 公式(7.1)中的Z和C都是复数。我们知道,每个复数都可以用平面上的一个点来表示∶比如,x坐标表示实数部分,y坐标表示虚数部分。开始时,平面上有两个固定点∶C和Z0,这儿的Z0是Z的初始值。为简单起见,我们取Z0=0,然後就有∶Z1=C。我们将每次Z的位置用亮点表示。也就是说,开始时平面上原点是亮点,一次迭代後亮点移到C。再後,根据(7.1),我们可以计算Z2,它应该等于C*C+C,亮点移动到Z2。再计算Z3,Z4┅┅,一直算下去。就像我们在前面几章中所说的用图形来作线性迭代一样。只不过我们现在的迭代中,要进行复数的计算,而且用到平方运算,不是线性的,因而叫做非线性迭代。 随着一次一次的迭代,代表复数Z的亮点在平面上的位置不停地变化。我们可以想象,从Z0开始,Z1、Z2┅┅Zk┅┅,亮点会跳来跳去。也许很难看出它的跳动有什厶规律,但是,我们感兴趣的是当迭代次数k趋于无穷大的时候,亮点的位置会在哪里? 说得更清楚些,我们感兴趣的只是∶无限迭代下去时,亮点的位置趋于两种情形中的哪一个?是在有限的范围内转悠呢?还是将会跳到无限远处不见踪影?因为Z的初始值固定在原点,显然,无限迭代时Z的行为取决于复数C的数值。 这样,我们便可以得出曼德勃罗集的定义∶“所有使得无限迭代後的结果能保持有限数值的复数C的集合,构成曼德勃罗集。”在计算机生成的图(7.1)中,右图中用黑色表示的点就是曼德勃罗集。 这时,李四插进来解释了几句,有关张三提到的‘无限’。 在计算机作迭代时,不可能作无限多次,所以实际上,是当k到达一定的数目,就当作是无限多次了。判断Z是否保持有限,也是同样的意思。当Z离原点的距 超过某个大数,就算作是无穷远了。 王二和林零两人坐在计算机旁,正在好奇地将曼德勃罗图放大又放大。有人看着细微部分不停被放大的图像问张三∶“你刚才说,图中的黑点属于曼德勃罗集,但我看到这些放大了的图中,黑点和非黑点都混在一起啊,这个曼德勃罗集好像没有一条明确的界限嘛。” 李四笑了∶“你说得太对了,曼德勃罗集的边界有着令人吃惊的复杂结构,看不到一条清晰的边界。属于‘曼德勃罗集合’的点和‘非曼德勃罗集合’的点,以很不一般的方式混合在一起,你中有我,我中有你,‘黑’‘白’一点也不分明,这也正是这种分形的特征┅┅” 另一个人问∶“那我还有一个问题∶如果只是区分‘曼德勃罗集合’和‘非曼德勃罗集合’,黑、白两种颜色就够了,你这些五彩缤纷的各种颜色是怎厶回事呢?” 张三便在黑板上解释各种颜色是怎厶来的∶“我们不是可以设定不同的C值,Z从0开始作迭代吗?如果在多次迭代(比如64次)後,Z距 原点的距 D小于100,我们认为这个C值属于‘曼德勃罗集合’,便将这个C点涂黑色┅┅而其它的各种颜色则可以表示无限迭代後的结果趋向无穷的不同层次。 比如,对最後的Z距离原点距离(D)大于100的那些Z0点,可以这样涂颜色∶ 500>D>100,C点涂绿色; 1000>D>500,C点涂蓝色; D>1000,C点涂红色; D>1500,C点涂黄色┅┅ 这不就产生出各种颜色美丽的曼德勃罗图形来了吗?” 为了让同学们更方便研究和欣赏曼德勃罗集的分形之美,张三又给了他的生成程序所在的网址∶ http://www.tianfangyetan.net/cd/java/iterfract.html 上一篇∶分形之父的启示 返回目录 下一篇∶ 朱利亚集 |