我們之前留下了一個問題: 一個物體真正的長度究竟是多少?比如說海岸線。 海岸線是一個在各種尺度上都具有相似鋸齒形態或者說粗糙程度的分形。 接下來我們會用一些簡化的理想模型來說明這個問題。課程中的其他複雜概念也會用同樣的辦法來說明。 首先,我要指出:分形和動態系統間通過迭代緊密聯繫。 即分形可以通過迭代來實現,就和我們之前畫邏輯斯蒂曲線時一樣。 接下來以科赫曲線來說明這個問題。這是個簡單又漂亮的分形圖案。 科赫曲線由瑞典數學家Helga von Koch于20世紀初創造。 這個分形始於一條簡單的曲線。 一節線段,再加一個簡單的迭代規則: 在每一步,對每段線段 ——首先從一條線段開始—— 去掉中间的三分之一, 換成一個角, 且這個角的每邊的長度正好是原線段的三分之一。 如此,我們得到一個由四條線段組成的新圖形。 其中的每條線段的長度都是原線段的三分之一。 接下來進行迭代,對四條線段中的每一條執行相同的操作。 就是說對每條線段, 去掉中央部分, 換成角 角的每一邊的長度正好是原線段的三分之一。 當然,我是在随手畫,所以比例不可能這麼精確。大家懂就好。 現在我們得到一個由16條線段組成的圖形。 再迭代一次。 擦掉每條線段的中央, 換成角, 角的邊長是原線段的三分之一。 額,希望大家看明白了。我還是畫規矩點吧。 這裏用了一個NetLogo庫裏的模型。 模型就叫KochCurve.nlogo。 我也把它放到網站上了。 來試一試, 如果按“setup”,就會出現一條線段, 就是紅色這條。 然後每次我按“step”,程式就會執行迭代規則。 走。 再來一次。 看到沒,迭代規則作用在了每條線段。繼續按。 多次迭代後就得到了這個。從某種意義上說, 這個圖形就是理想化的海岸線。 現在的問題是:當我們迭代多次後, “海岸線”的長度是多少? 我們可以從迭代0次的圖形開始。 按一下“setup”, 得到最初的圖形。 然後我們可以測量一重迭代,二重迭代,三重四重迭代等等之後的圖形的長度。 測量多重迭代後的圖形的長度其實就是 讓我們在每一步換一個更小的尺子。 好,我們從沒有經過迭代的最初圖形開始。 先畫個表格來記錄。 我把字體調小點,以便能在同一行顯示。 然後每迭代一次量一次。 線段的長度就叫SegLength吧。 線段的數量就叫NumSegs。 整條曲線的長度叫CurveLength。 對於0重迭代的最初曲線,線段長度也就是整條曲線的長度, 我們叫這個長度為L。 線段數量是1,曲線長度也是L. 美化一下表格, 拉大一點。 行,就用它來記錄每重迭代後的結果。 一重迭代,開始。 現在每條線段的長度變成原來的三分之一。 總共有4條線段。 所以總長是4/3L。 二重呢? 對一重迭代後的每條線段再次迭代。 一共要執行四次擦除和替換。 這是新圖形。 好,來一個小問題: 在這一重迭代下,圖形的總長是多少?