迭代与自相似
分形不是画出来的,是长出来的。规则只有一条——把每一段换成若干段更小的,然后对新的每一段再做一次。重复几轮之后,出现的结构比规则本身复杂得多:无限长的边界围着有限的面积,任意放大一段还是同一个样子。
LAB 01
科赫曲线
逐级迭代,同时显示周长怎么按 (4/3)ⁿ 发散而面积收敛
问题
一条曲线能不能周长无穷、面积有限?这听起来像悖论,但科赫在 1904 年就造出来了。这一台逐级迭代,同时盯住周长和面积两个数,看它们分别往哪儿去。
模型
每一级把每条线段换成 4 段、每段长 1/3。
Ln = (4/3)n L₀ → ∞, An → (8/5) A₀(有限), D = log4 ⁄ log3 ≈ 1.2619
L 是周长,A 是面积,D 是自相似维数。维数在 1 和 2 之间,正是"比线多、比面少"的量化说法。线段数—
周长(初始边=1)—
面积(初始三角=1)—
分形维数—
注意周长与面积的分头走向:每迭代一次,线段数乘 4、每段长度除以 3,所以周长按 (4/3)ⁿ 发散;而新增的面积每轮只有上一轮的 4/9,是个收敛的几何级数,总面积停在初始三角形的 8/5。无限长的边界围着有限的面积——这不是悖论,只是"长度"这把尺子量不了这种曲线,要换成维数。
LAB 02
谢尔宾斯基
三角形挖洞版与混沌游戏版并排,说明「随机也能画出确定的图」
问题
同一个谢尔宾斯基三角形,可以用"挖洞"确定性地造出来,也可以靠掷骰子随机地画出来——而且随机那种画得一模一样。这是怎么回事?随机为什么会收敛到一个确定的形状?
模型
混沌游戏:随机选一个顶点,往它走一半,重复。
xn+1 = ½ ( xn + vr ), r 均匀随机取 1,2,3; D = log3 ⁄ log2 ≈ 1.585
三个映射都是压缩映射(压缩比 ½),由 Hutchinson 定理,它们的吸引子唯一存在。随机只决定走的顺序,不影响最终落点的集合。三角形 / 点数—
剩余面积占比—
分形维数—
同一个图形,两条完全不同的路:挖洞法是确定的——每一步都精确规定挖掉哪块;混沌游戏则是纯随机——随便挑一个顶点,走到当前点与它的中点,重复几万次。随机的过程画出了一个确定的图形,因为那三条"走到中点"的映射把平面压缩到同一个吸引子上,起点在哪、掷骰子掷出什么,都不影响最后的形状。
LAB 03
L-系统
自己编辑替换规则和转角,长出蕨叶、树、龙形曲线
问题
蕨叶、树枝、血管的分叉看起来复杂,但它们的"生成规则"可能只有一行字。L-系统是生物学家 Lindenmayer 1968 年为描述植物生长发明的,现在是计算机图形学里生成植被的标准工具。
模型
L-系统 = 字母表 + 公理 + 替换规则,字符串再交给"海龟"解释成图形。
公理 ω,规则 P:A → AB, B → A … 海龟:F 前进、+ 左转 δ、− 右转 δ、[ ] 存取状态
δ 是转角。同一条规则换一个转角就从"蕨叶"变成"雪花"——这一台的两个滑杆正是规则和转角。指令串长度—
替换规则—
规则就写在读数里。L-系统把图形压缩成一条字符串和几条替换规则:F 表示前进一步,+ − 表示左右转,[ ] 表示"记住当前位置,画完分支再回来"。改一下转角,蕨叶会变成完全不同的植物;真实植物的形态多样性,很可能也来自类似这样几个参数的差别。
LAB 04
迭代函数系统
调四组仿射变换的系数,看吸引子如何随参数连续变形
问题
上一台的蕨叶是用"画法"造出来的。能不能反过来:给定一个形状,找出生成它的那几个变换?能——而且这正是分形图像压缩的原理:用参数代替像素。
模型
迭代函数系统(IFS):一组压缩仿射变换,其吸引子唯一。
wi(x) = Aix + bi, ‖Ai‖ < 1; 吸引子 K = ∪i wi(K)
拼贴定理(Barnsley):如果一组变换的像拼起来和目标形状很接近,那么它们的吸引子也和目标形状很接近。巴恩斯利蕨只需要 4 组仿射系数共 24 个数。仿射变换个数—
平均压缩率—
估计维数—
四组数字决定一片蕨叶。迭代函数系统就是几个"缩小 + 旋转 + 平移"的仿射变换,按各自的概率反复作用在一个点上,轨迹落成的那个集合就是吸引子。拖"扭曲"那根滑杆,你改的只是第一组变换里的旋转角——但整片蕨叶的姿态会跟着变,因为每一层小叶都是这个变换套出来的。
这一页想说的
这一页的四个实验台用的是同一件事:一条把"整体"换成"若干个缩小版整体"的规则,重复。科赫曲线换的是线段,谢尔宾斯基换的是三角形,L-系统换的是字符串,IFS 换的是点的位置——形式不同,骨架都是自相似。建模时遇到"结构在不同尺度上重复出现"的对象(河网、血管、裂纹、价格序列),先问一句能不能用一条迭代规则描述它,往往比直接拟合一个复杂曲面省力得多。