我们之前留下了一个问题: 一个物体真正的长度究竟是多少?比如说海岸线。 海岸线是一个在各种尺度上都具有相似锯齿形态或者说粗糙程度的分形。 接下来我们会用一些简化的理想模型来说明这个问题。课程中的其他复杂概念也会用同样的办法来说明。 首先,我要指出:分形和动态系统间通过迭代紧密联系。 即分形可以通过迭代来实现,就和我们之前画逻辑斯蒂曲线时一样。 接下来以科赫曲线来说明这个问题。这是个简单又漂亮的分形图案。 科赫曲线由瑞典数学家Helga von Koch于20世纪初创造。 这个分形始于一条简单的曲线。 一节线段,再加一个简单的迭代规则: 在每一步,对每段线段 ——首先从一条线段开始—— 去掉中央的三分之一, 换成一个角, 且这个角的每边的长度正好是原线段的三分之一。 如此,我们得到一个由四条线段组成的新图形。 其中的每条线段的长度都是原线段的三分之一。 接下来进行迭代,对四条线段中的每一条执行相同的操作。 就是说对每条线段, 去掉中央部分, 换成角 角的每一边的长度正好是原线段的三分之一。 当然,我是在凭手画,所以比例不可能这么精确。大家懂就好。 现在我们得到一个由16条线段组成的图形。 再迭代一次。 擦掉每条线段的中央, 换成角, 角的边长是原线段的三分之一。 额,希望大家看明白了。我还是画规矩点吧。 这里用了一个NetLogo库里的模型。 模型就叫KochCurve.nlogo。 我也把它放到网站上了。 来试一试, 如果按“setup”,就会出现一条线段, 就是红色这条。 然后每次我按“step”,程序就会执行迭代规则。 走你。 再来一次。 看到没,迭代规则作用在了每条线段。继续按。 多次迭代后就得到了这个。从某种意义上说, 这个图形就是理想化的海岸线。 现在的问题是:当我们迭代多次后, “海岸线”的长度是多少? 我们可以从迭代0次的图形开始。 按一下“setup”, 得到最初的图形。 然后我们可以测量一重迭代,二重迭代,三重四重迭代等等之后的图形的长度。 测量多重迭代后的图形的长度其实就是 让我们在每一步换一个更小的尺子。 好,我们从没有经过迭代的最初图形开始。 先画个表格来记录。 我把字体调小点,以便能在同一行显示。 然后每迭代一次量一次。 线段的长度就叫SegLength吧。 线段的数量就叫NumSegs。 整条曲线的长度叫CurveLength。 对于0重迭代的最初曲线,线段长度也就是整条曲线的长度, 我们叫这个长度为L。 线段数量是1,曲线长度也是L. 美化一下表格, 拉大一点。 行,就用它来记录每重迭代后的结果。 一重迭代,开始。 现在每条线段的长度变成原来的三分之一。 总共有4条线段。 所以总长是4/3L。 二重呢? 对一重迭代后的每条线段再次迭代。 一共要执行四次擦除和替换。 这是新图形。 好,来一个小问题: 在这一重迭代下,图形的总长是多少?