谢尔宾斯基三角 · 三条不同的路,走到同一个图形
递归挖洞、随机投点、杨辉三角涂奇数——三种毫不相干的做法,画出的是同一个图形。面积趋于 0,点却处处都在;维数 log3/log2 ≈ 1.585。
挖洞:一变三
取一个等边三角形,连三边中点,它被分成四个小三角形。把中间那个挖掉,对剩下的三个重复同样的动作。
第 层剩下 个小三角形,每个面积是上一层的 。所以剩余面积
面积趋于 0,但没有任何一个点被”挖光”:三角形的三个顶点、每一层的中点,永远留在图里,而且留下的点有不可数无穷多个。一个面积为零、却密密麻麻处处是点的集合。
混沌游戏:随机也能画出确定的图
换个做法,完全不提”挖洞”:
- 记下三角形的三个顶点 ;
- 随便选一个起点;
- 随机挑一个顶点,走到当前点与它的中点,把落点画上;
- 重复第 3 步几万次。
每一步都靠掷骰子,可落点拼出来的偏偏是同一个谢尔宾斯基三角。切到「混沌游戏」看着它一点点浮现;把速度滑到最慢,就能一步一步看清楚:空心圈是三个顶点,实心的那个是这次抽中的,虚线指向它,红点走到一半,走过的路留下一道渐淡的残影。
为什么?因为”取中点”这个动作把整个平面缩小到一半,再平移到某个顶点附近。三个顶点对应三个这样的映射 。谢尔宾斯基三角 恰好满足
它是这三个映射唯一的”不动集”。不管从哪儿出发、按什么顺序掷骰子,点都会被越吸越近——这类系统叫迭代函数系统, 是它的吸引子。
杨辉三角:把奇数涂黑
第三条路和几何毫无关系。写出杨辉三角,把组合数 是奇数的位置涂黑、偶数留白,行数越多,图案越像那个三角形。
判断奇偶不必真去算阶乘。库默尔定理给了一个二进制判据:
写成一行代码就是 (k & ~n) === 0——这也正是这个演示里用的判断。
于是第 行的奇数个数是 ,其中 是 的二进制里 1 的个数。前 行的奇数总数是 ——又出现了 3 的幂,和挖洞那条路对上了。
维数:1 和 2 之间
把图形放大 2 倍,看到 3 个和原来一样的副本。设维数为 ,则 :
比线(1 维)多,比面(2 维)少。也难怪:它的面积是 0(所以不到 2 维),但又稠密得不像一条曲线(所以超过 1 维)。
一类问题的通用识别
- 看到”放大 倍出现 个副本”,就可以写 ,维数 。
- 看到”每一步个数 ×3、尺寸 ×1/2”,总量就是等比数列,敛散只看公比。
- 看到随机过程画出确定图形,找那几个”缩小 + 平移”的映射,图形就是它们的不动集。
顺手对照一下科赫雪花:那边周长发散、面积收敛;这边面积收敛到 0、点却处处都在。两者的算法都是”等比数列 + 自相似”这一招。