直线是1维的, 平面是2维的, 在上一个挑战中, 我们发现海岸线维度介于两者之间. 海岸线充满了曲折和粗糙的棱角, 它占据的空间比一条直线更大, 但却不及一个平面.
海岸线是一个自然出现的分形例子, 分形是一种难以定义的数学对象, 通常具有令人惊讶的维度. 本文将展示分形的定义以及如何生成的过程.
分形的一个特征定义是自相似性: 如果你放大一个分形, 你会看到它是由与整体形状相似的部分组成的.
有很多方法可以定义一个给定的分形. 获取它们自相似性的一种方法是根据“初始形状”和“生成函数”进行的迭代过程. 下面让我们来创建上述分形:
这个初始形状是一条线段, 生成函数是由8条长度相同的水平和竖直线段组成(中间有两条竖直线段在一直线上). 从左端到右端, 生成函数的长度与初始形状的长度相同.
要从一个阶段转到下一个阶段, 要用生成函数的副本替换初始形状的每个副本, 并按比例缩小和旋转. 初始形状和生成函数是前两个阶段, 第三个阶段是这样的:
由于初始形状是一条线段, 生成函数是第二个阶段, 因此为了实现第三阶段, 生成函数中的每条线段会被按比例缩小并旋转得到副本进行替换. 生成函数占用的空间与初始形状占用的水平空间相同, 生成函数的水平长度由四个等长的线段组成(下面以橘黄色显示):
所以, 为了能够用生成函数替换线段, 必须将生成函数的每个线段按比例
我们看到, 从一个阶段到下一个阶段, 随着尺寸的减小, 此分形的复杂度会迅速增加. 这类似于海岸线, 在海岸线上使用较小的度量单位可以显示更多的曲折和粗糙的边缘. 那么也许它们的维度是相似的?
下面, 让我们重新理解维度方程, 以便更清楚地适用于使用初始形状和生成函数定义的分形:
迭代方式定义的分形的维度D, 如果从一个阶段到下一个阶段, 我们用自身的副本C替换每个初始形状, 并且这些副本被缩小了S倍. 那么有方程
.
当
现在该轮到你来计算一个分形的维度了.