第七章:魔鬼的聚合物-曼德勃罗集 图(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 上一篇∶分形之父的啟示 返回目錄 下一篇∶ 朱利亞集 |