Python绘图指南:分形与数据可视化(全彩)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

3.3 分形维数

经典几何学中的维数叫作拓扑维数,它采用了确定一个对象位置所需要的变量个数来作为维数。比如,在直线上确定一个点需要一个坐标,也就是,在直线上确定一个原点后,可以采用与这个原点的距离来确定直线上其他点的位置;在平面上确定一个点需要两个坐标(xy);在三维空间中确定一个点需要三个坐标(xyz),现实生活中的三维空间也可以采用经度、纬度和高度来确定位置。在经典几何学中,三维以内,都有现实世界的物体所对应,比如:点是0维、线是一维、面是二维、体是三维,而当维数大于三时,现实世界中就没有了对应物,只能凭借想象,比如加上了时间的四维。但是不管怎样,经典几何中的维数是一维一维地往上加的,初始是整数,增量也是整数,比如1、2、3、4、5、6等,所以也被称作整数维数。

经典几何学从拓扑角度来看维数,那么,从测量的角度来看,维数又是怎样的呢?在测量的层面上,维数是可变的。比如一个物体(球、正方体、圆柱体,甚至建筑物等),从远处看,它是一个点:0维,因为在相距过远时,物体的大小是可以忽略不计的;靠近一些,可以看清物体,这时物体是三维的、立体的;再靠近一些,贴近物体的表面,看到的是二维的、平面的。所以,测量观察的尺度不同,一个对象的维数也会随之变化。只有确定了尺度,才能确定对象的维数。从测量角度重新理解,反映出了经典几何学维数概念的局限性。1919 年,德国数学家费利克斯·豪斯多夫(F.Hausdorff,1868—1942年)给出了维数的新定义,对经典几何的维数概念进行了扩展,为维数的非整数化提供了理论基础。

分形的本质是标度变化下的不变性,和经典几何学有着截然不同的特性,所以,分形集(或分形图形)的特征并不能使用经典的整数维数来描述,而只能采用另外一种方式,也就是分形维数来描述。分形维数包括整数维数和分数维数,每一个分形集都对应着一个分形维数,这个维数可以是整数的,也可以是分数的。

可以采用自相似性的方式来定义分形图形的维数。首先将图形缩小N分之一,接着,使用 M 个缩小之后的图形来组成原来的图形,维数 d 就等于:d=ln(M)/ln (N),ln指以常数e为底数的自然对数,N为缩小比例,M为拼接个数。采用这样的方式计算出来的维数,又叫作自相似维数,但只有当分形图形可以等比例拼贴时,才可以采用这样的方式来定义。经典的几何图形,比如线段、长方形、立方体等,也可以采用自相似性的方法来计算它们的维数。

比如,一条线段缩小二分之一后,缩小的线段长度为原线段的一半,可以用这样的两条与自身相似的缩小的线段来组成原有的线段;一个长方形边长缩小二分之一后,缩小的小长方形大小为原来的四分之一,可以用4个这样的小长方形来组成原有的长方形;一个立方体边长缩小二分之一后,缩小的小立方体大小为原有的八分之一,可以用8个这样的小立方体来组成原有的立方体。所以,由公式:d=ln(M)/ln(N),可知:

一条线段的维数:d=ln(2)/ln(2)=1。

一个长方形的维数:d=ln(4)/ln(2)=2。

一个立方体的维数:d=ln(8)/ln(2)=3。

科赫曲线的维数,也可以采用这样的方法来计算。首先,将原曲线缩小三分之一,然后,可以用4个这样的小科赫曲线来组成原来的科赫曲线。所以,科赫曲线的维数d=ln(4)/ln(3)=1.2618…,可以看到,维数是分数,分数就像一个刻度指标,可以想象,在1到2之间应该存在着多种多样的复杂图形,每一种图形分别对应着一个分数,而科赫曲线只是其中的一种而已。

采用自相似性的方式来计算维数最为直观,也最容易求解,但是这种方式,并不能得到所有的分形图形的维数。自相似性的方式,只适用于各个组成部分完全相等的情况,当整体可以划分成几个部分、但是各个部分并不完全相等时,就会计算困难,甚至无法求解。

除了自相似维数,分形维数定义还有其他的一些方法,这些不同的计算方法,在数学上有着不同的难度,有兴趣的读者可查看相关的资料,这里不再详述。