主题:【原创】千奇百怪话分形 -- 安德的游戏
其实分形的维数计算有很多种方法,除了豪斯多夫维数和记盒维数以外,还有信息维数和相关维数。不过我们现在给一个最简单的。虽然可以计算的对象限制在严格自相似(就是局部和整体完全一样)的分形图形,不过这样算出来的维数和其他方法的结果是一样的。
假设我们把分形图形分成N个相等的部分,每一部分在尺度上都是原来图形的m分之一,那么这个图形的维数就是log(N)/log(m)。现在我们来算一下科赫曲线的维数:
从我们构造科赫曲线的方法看起来,我们把科赫曲线可以分成四个部分,而每一部分都是原来的三分之一大,所以N=4,m=3,那么科赫曲线的维数就是log(4)/log(3)=1.26。而科赫曲线是一条没有宽度的线,其拓扑维数是一维。所以符合分形的定义。
现在我们再来看几个经典的分形图形。
我们从先最低的维数说起,这就是康托三分集。我们可以用同样的方法,把康托三分集分成两部分,而每一部分还是原来的三分之一,所以有N=2,m=3,所以计算出来的维数是log(2)/log(3)=0.63。这个维数介于点和线之间,而康托三分集是由点构成的,拓扑维数是零维。
现在把视线放到更一层的维数上,我们就得到了谢尔宾斯基地毯。
构造的方法是,把一个正方形分成相等的九份,去掉中间的一份。然后对剩下的八个小正方形照此办理,一直到无穷。这样得到的图形的维数是1.89。要注意的是,在这里虽然每一个小正方形的面积是原来的九分之一,但是在线性尺度上,只缩小了三分之一,所以m=3。如果我们穿过正方形的中心用一条水平的直线来截这块地毯,就可以发现截出来的“断面”正好是康托三分集。
再把维数提高一层,就可以得到谢尔宾斯基海绵,也是我们在开头贴过的一张图。
从图上可以看出来海绵的构造方法:把一个立方体分成二十七个相同的小立方体,去掉每一个面上中间的小立方体和大立方体正中间的小立方体。如果我们看谢尔宾斯基海绵的每一个面,就可以发现它都是谢尔宾斯基地毯。这个海绵的分形维数是2.73。
闲话两句,这个叫谢尔宾斯基的,跟豪斯多夫生活在差不多同一个时代,是个波兰人。波兰似乎在欧洲的历史上总是处于弱小的地位,在列强的环绕下,多次惨遭被瓜分的命运。从来没有过称霸欧洲的历史。不过波兰也是个出人才的地方,哥白尼,肖邦还有居里夫人(入了法国籍),都是波兰人。
给出后面几章的题目预告,分形涉及到的东西零星繁杂,有遗漏的地方势肯定的。我想到的部分,我尽量把它们说清楚。欢迎大家提意见。
无穷小和无穷大
曼德尔布诺特集
分形与非线性系统
分形图形的构造
曼德尔布诺特集
分形与非线性系统
分形图形的构造
都不错。
这里面log(n)/log(M)其实就是以M为底n的对数。直观意义上就是体积或者面积是长度的几次方。正常情况下面积总是长度的2次方,体积是三次方,所以分别是2维和3维的。
前面说了分形的维数计算。这样计算出来的分形的维数,一般都是一个小数而不是整数。于是,这样的分形图形就会在它下方的维度上呈现出无穷大的特征,而在其上方的维度上呈现出无穷小的特征。(多说一句,因为我们讨论的分形几何特征,比如面积,体积等没有负数,所以这里无穷小是指得无限趋近于零)
我们以科赫曲线作为例子。科赫曲线的维数是1.26。显然,一条没有宽度的线是没有面积的,所以在二维的度量上,科赫曲线没有面积。但是长度呢?我们假设以原来初始线段的长度为1,那经过第一次变换以后,我们得到的折线长度是4/3。经过第二次变换以后,每一小段的长度都变成原来的4/3,所以总长度是4/3x4/3=16/9。以此类推,经过n次变换以后,长度就变成了(4/3)^n。那么经过无穷多次变换,科赫曲线的总长度就是lim n→∞(4/3)^n=∞。(这个数学公式的功能还是很重要的,怎么打得就这么别扭呢)。所以,我们知道了,科赫曲线的长度是无穷的。
回到曼德尔布诺特的论文《英国的海岸线有多长》,他在论文里面就提出了这样一个观点,海岸线的长度,跟你用一把什么样的尺子去量是有关系的。量的时候,总是把海岸线近似成折线,以折线段的长度和来作为海岸线的总长度。如果用更短的折线段来近似,那么对于海岸线形状的逼近就越好,而这样量出来的长度也就越长。海岸线的形状是一个分形图形,如果量长度的这把尺子长度趋近于零,或者说用来逼近的折线的长度趋近于零,那么得到的海岸线的总长度是趋近于无穷大的。
所以我们总是在报刊书籍里面看到,说我国拥有漫长的海岸线,海岸线的长度有多少多少公里。这样的说法,既对又不对。因为从一方面来说,按照分形的观点,我们知道海岸线的总长度是趋向于无穷的。但是从另一方面说,我们可以认为这里给出的长度,是用一把特定长度的尺子量出来的,而结果就是一个有限值。用同一把尺子,去量中国的海岸线和去量英国的海岸线,中国的就要比英国的长。
那有人问,如果用在一公里的尺度上量出来中国的海岸线长度是英国的2.3倍(我只是随便给一个比方,真正的数字肯定不是这个),那么在一百米的尺度上量出来的倍数也是个吗?十米的尺度呢?要回答这个问题,就要看中国海岸线的分形维数和英国的是不是一样。维数越高,在减小同样的尺度测量的时候,长度增长越快。
好啦,我们再来看一个有趣的例子:谢尔宾斯基海绵。前面已经讲了如何构造谢尔宾斯基海绵。从三维的角度来说,谢尔宾斯基海绵的体积是多少呢?同样的计算方法。第一次变换,我们从二十七个小正方体里面去掉了七个,体积变成原来的20/27。第二次变换,剩下的每一个小立方体的体积又变成原来的20/27,所以经过n次变换,总体积就是原来的(20/27)^n,经过无穷次变换的最终体积就是lim n→∞(20/27)^n=0。现在题目来了:如何计算谢尔宾斯基海绵经过n次变换以后的总面积?无穷次变换以后的结论已经有了,就是无穷大。好了,现在我们得到了一个怪东西,它的体积没有,也就是说不管是什么材料做的,都没有重量,但是看起来泡泡的一大块。而且有无穷大的表面积。这个东西,它比活性炭还好呀,在冰箱里放一块除味的效果一定很好。不过这个东西既然体积是零,似乎考虑是什么材料做的也没有什么意义了。说到这里,我忽然想到,所谓的皇帝的新衣,用的材料大概多半是谢尔宾斯基地毯吧?
数学原来是这样的
已经说了关于分形的这么多内容,我们要归纳一下分形的特点:
1. 分形有无限精细的结构。也就是说,无论我们把分形的图形放大任意多倍,还是有比当前尺度更小的细节存在。
2. 分形很难用传统的几何语言描述。举个例子,二次曲线和圆都可以用平面坐标的方程来描述,但是科赫曲线就没有办法找出相对应的方程式。
3. 分形有精确或近似的自相似形式。这个特性之前已经讲过了。
4. 分形的维数大于其拓扑维数。这个实际上是分形的定义。
5. 分形通常可以由简单的方式生成,比如说迭代。
现在,我们进入了分形的重头戏——曼德尔布诺特集。从名字上我们就可以看出它在分形中的重要地位:它是以分形之父曼德尔布诺特的名字命名的。
其实曼德尔布诺特集并不是曼德尔布诺特首先发现的,只不过他最开始比较有系统地对这个图形进行研究而已。我们先给出一张曼德尔布诺特集的全景照:
需要说明的是,这里有关曼德尔布诺特集的图片都是我自己写程序生成的,不过我总是调配不好颜色。不过好在需要涂颜色的部分都是曼德尔布诺特集的周边,曼德尔布诺特集本身习惯上是表示成黑色的。所以虽然颜色会有些怪,而且不够好看,但是对于讲解来说是够了。
我们把曼德尔布诺特集生成的方法放在最后面讲,先看看它的一些有趣的特性吧。
曼德尔布诺特集从整体上看,是由不规则的一大一小两个圆和周围的一些复杂结构构成的。严格地说,左侧小一点的图形的确是一个接近圆的东西(如果不考虑周围的毛刺的话),而右侧的大一点的图形应该叫做心脏线,因为看起来有点像一个躺下来的心形图案。如果你有两个大小相等的圆,其中一个不动,而另一个紧贴着不动的圆无滑动地旋转(就象两个齿轮),那么外侧的圆圆周上的一点就会画出一个心脏线的轨迹。
接下来,我们要看周围的那些“毛刺”了。首先为了方便起见,我们加一些数字标记。大的心形图案标记为1,小一点的圆形标记为2。先从最大的心形图案看起。最显眼的就是上下两个长“触角”的圆了。把它们标记为3。我们从上面这个圆往右边数,次大的标记为4,在往右数次大的依次标记为5,6,7等等。就像下面这样:
标记完了有什么用处呢?现在我们把3和4放大看看:
有趣,3上顶着一个三叉的触角,4上顶着一个四叉的触角。那么5,6和7是不是也一样呢?我们再把那里放大一下。这个是5
这个是6和7
看起来触角依次增多,到后来会很多很多。现在我们看一个二十四个触角的图
颜色上看起来比较杂乱,不过还是很象文章最开头贴过的一张
现在从标记为3的圆向左数,触角数目依次为5个,7个和9个,变成以二递增。
再单独看看标记为3的圆,周围又有一圈更小的圆围绕着,我们把它放大一些,再数数这些小圆的触角,奇怪的是,它们不增多,统一都是3个。
同样,五个触角的圆周围的小圆触角也都是5个,不过都已经卷成花儿了。
你问我说了半天触角,要这些触角有什么用?这个……拿回家做菜吧。我们又不研究数学,看这些图不就是看个热闹么。其他的热闹咱们以后再说。
终于尝试出来还比较满意的配色方案,贴几张我觉得好看的:
这个是著名的海马尾巴
放大很多倍以后的袖珍曼德尔布诺特集
五彩缤纷
小旋风