换一把尺子,答案就换一个(Change the ruler, change the answer)
2026-08-18 · 尺度
英国的海岸线有多长?这看着像个查一下就有答案的事实题。它没有答案——不是因为没人测过,而是因为你量得越细,它就越长,而且看不到尽头。
美国中央情报局的《世界概况》给英国海岸线的数字是 12,429 公里;英国自己的测绘局(Ordnance Survey)算出来是 17,820 公里。差了将近一半。这不是有一方算错了——两边用的地图精细程度不同,如此而已。
你可能觉得这只是测量误差。但误差有个脾气:仪器越精密,结果越往一个真值上收。海岸线不收。尺子每短一半,量出来的长度就往上跳一截,你把尺子一直短下去,它就一直涨下去。这句话的真正含义相当激进:长度根本不是这条海岸自己的属性,它是海岸和尺子两样东西合起来的属性。少了后面那一半,这个数字不成立。
从本期开始的四期讲的是同一件事的不同侧面:一个量随着观察尺度改变的方式。本期是形状上的——把一小块放大,看起来和整体一样,这叫尺度不变(scale invariance)。第 19 期讲过的幂律(power law)是分布上的同一件事:把横轴放大十倍,曲线的样子不变。两者是一条性质的两种露头,本期把它落到看得见的形状上。
1967 年,Benoit Mandelbrot 在《科学》上发了一篇短文,标题就是这句话。他不是在抬杠,他手上有数据。
数据来自气象学家 Lewis Fry Richardson。此人生前做过一件很怪的事:他拿圆规去量各国的边界和海岸线。方法土得可爱——把圆规张开固定的一段距离,从起点开始一步一步"走"完整条曲线,数走了多少步,步数乘以步长就是长度。然后把圆规收窄一点,再走一遍。
他发现的是:步长越小,量出来的总长度越大,而且没有收敛的意思。更要紧的是,这两个量的关系在双对数纸上是一条漂亮的直线。Mandelbrot 读懂了这条直线:设测得的长度是 L、步长是 ε,那么 L 正比于 ε 的 (1−D) 次方,其中 D 是一个大于 1 的数。对一条光滑的曲线(比如一个圆),D 等于 1,尺子缩短,测得的长度稳稳地收到周长上;对海岸线,D 明显大于 1,于是永远不收。
这个 D 对不同的海岸给出不同的值,而且排出来的顺序和你看地图的直觉完全对得上:南非海岸平直,约 1.05;英国西海岸曲折,约 1.25;挪威那种一层套一层的峡湾海岸,约 1.52。它不是一个比喻,是一个能算出来的数——第 3 节会说怎么算。
所以中情局和测绘局那两个数字都是对的,它们只是都漏了一句话:我用的尺子有多长。在这类曲线上,"长度"这个词必须带一个参数才有意义。
看到任何"总长度/总面积/总数量"的数字,先问它是在多细的分辨率上数出来的。两个来源差一倍时,别先去争谁算错——先把两边归到同一分辨率再比;归不了,就放弃这个比较,它不构成证据。吃这一条的东西比想象的多:管网总里程、国境线、"我们覆盖了多少个网点"、代码行数、客户投诉总量。
EN Richardson walked a pair of dividers along coastlines and found that the measured length keeps growing as the divider opening shrinks, with log L against log ε falling on a straight line. Mandelbrot read the slope as a dimension D > 1. Length is therefore not a property of the coast; it is a property of the coast together with the ruler.
上一节说海岸线量不完,但没说它为什么量不完。答案短得出奇:因为它的每一小段里,都藏着和整体一样的结构。
1904 年,瑞典数学家 Helge von Koch 写下一条规则:拿一条线段,把中间三分之一挖掉,换成一个向外凸的尖(两条同样长的边补上)。原来 1 段,现在 4 段,每段长度是原来的三分之一。然后对新出现的每一段,重复同一件事。
每迭代一次,总长度乘以 4/3。迭代下去,长度就没有上限。可这条曲线始终待在一个巴掌大的地方——它无限长,却围不出多大面积。这个组合(无限长 + 有限区域)在光滑几何里是不可能的,在这儿却是随手一条规则就得到的默认结果。
这里出现了本期第二个关键词:自相似(self-similarity)。放大科赫曲线的任意一小段,你看到的和整条曲线一模一样。没有"放大到某个倍数就看见基本单元"这回事——因为规则里压根没有基本单元,只有"再来一次"。
但真实的海岸不长这样。得把两件事分开:
严格自相似(exact self-similarity)是数学构造出来的:放大一段,它和整体逐点重合,科赫曲线、谢尔宾斯基三角形都属于这一类。统计自相似(statistical self-similarity)是自然界的那一类:放大一段,它和整体对不上,但统计性质对得上——起伏的粗糙程度、拐弯的分布、缺口的大小构成,都是同一副脾气。海岸、云边、山脊、河网、血管,全是后者。
这个区别不是学究气:严格自相似的图形能精确算出维数,统计自相似的东西只能测,测出来带误差,而且依赖你测的尺度范围有多宽。这笔账第 5 节要来结。
还有一件事值得单独拎出来,因为它是本站反复出现的那条主张在几何上的样子:分形的"复杂"不来自复杂的规则。科赫曲线的规则一句话说完,生成的形状却量不出长度。这和第 4 期讲元胞自动机时的结论是同一条 → 参考 · 生命游戏与元胞自动机——复杂的结果不蕴含复杂的原因。要产生无穷的细节,规则里只需要有一样东西:它能作用在自己的输出上。
EN One substitution rule — replace the middle third of every segment with a spike — multiplies total length by 4/3 per iteration while the figure stays inside a small patch. Mathematical fractals are exactly self-similar; natural ones are only statistically so, which is why their dimensions must be measured rather than derived.
"这条海岸比那条曲折"是句人话。要让它变成能算、能比、能被别人复核的东西,需要一个数。
先换个方式理解"维数"。别想"需要几个坐标",想"放大之后变成几份":
一条线段,长度放大一倍,它由 2 个原尺寸的自己拼成;一个正方形,边长放大一倍,由 4 个原尺寸的自己拼成;一个立方体,8 个。2 = 2¹,4 = 2²,8 = 2³。规律就在指数上:把尺寸放大 k 倍得到 N 份,那么维数 D 满足 N = k^D,也就是 D = log N ÷ log k。
现在把这条规律套到科赫曲线上:放大 3 倍,它由 4 个原尺寸的自己拼成。于是 D = log 4 ÷ log 3 ≈ 1.26。不是整数。这正是"分形"这个词的来历——Mandelbrot 1975 年造 fractal 这个词,取的是拉丁语 fractus(断裂的、分数的)。这个数介于 1 和 2 之间,意思也很直白:它比一条线更能填满平面,又填不满一个面。
这个算法只对严格自相似的图形好使——你得先知道"放大几倍是几份"。对一张真实的海岸照片、一张视网膜血管的图,得用一个更笨也更通用的办法:盒计数(box counting)。铺一张边长 ε 的方格网,数一数有多少格被这个图形碰到,记作 N(ε);然后把 ε 减半,再数一遍。如果 N 随 ε 缩小按 N ∝ ε^(−D) 涨,那个 D 就是分形维数(fractal dimension)。在双对数图上,它就是那条直线的斜率。→ 参考 · 盒计数维数
顺带一件容易被忽略的事:同一条曲线,用 Richardson 的圆规法量和用盒计数量,得到的数不必相等——本页这条模拟海岸就是,圆规法给出的斜率比盒计数略高。"维数"不是一个定义,是一族定义(盒计数维数、豪斯多夫维数、信息维数……),它们在漂亮的数学图形上重合,在真实数据上不一定。所以报数字时必须说清用的是哪一种、在哪个尺度区间里测的。
报维数、赫斯特指数(Hurst exponent)或任何标度指数之前,先看双对数图上那条"直线"跨了几个数量级。不到一个数量级就别报这个数——在那么窄的窗口里,几乎任何缓慢弯曲的曲线都能装成直线。要报就三样一起报:用的哪种方法、拟合区间的上下限、区间内有几个点。三样缺一,那个数字就没法被别人复核,也就不该出现在结论里。
EN Read dimension as "how many copies of itself appear when you magnify". Magnify a Koch curve threefold and it is made of four copies: D = log4/log3 ≈ 1.26. For real images the general tool is box counting, N(ε) ∝ ε^(−D), read off as the slope of a log-log line.
肺、血管、河网、闪电、树冠、云的边缘、山脊线、金属的断口——分形在自然界不是偶尔冒出来的花样,它的出现频率高到不像巧合。原因是有好几条互不相干的路,都通向同一类形状。至少三条。
第一条:分支供给网络。一个身体要把氧气送到每一个细胞,得有一套管道服务整个体积。管道自己要占体积——占多了就没地方装别的;而交换气体靠的是表面积——面积不够就换不动。这是一对互相顶牛的要求,而分支的分形结构正好是它的解。
算一下就看得见。假设每分一级,管子数量翻倍,长度和管径各缩到原来的 2^(−1/3) ≈ 0.79 倍:
· 每一级贡献的体积 = 数量 × 长度 × 管径² ∝ 2 × 0.79 × 0.79² = 1,不变。
· 每一级贡献的表面积 = 数量 × 长度 × 管径 ∝ 2 × 0.79 × 0.79 ≈ 1.26,每级涨 26%。
于是级数一多,表面积可以涨到很大,而体积始终受控。人的气道从气管数到肺泡大约 23 级,1.26²³ ≈ 200。(这只是骨架算的账:真实气道大约第 17 级之后规则会变、开始出现肺泡,所以别把这个数当实测值——它给的是这条规则蕴含的量级。)实测的肺泡总表面积在一百多平方米,装在几升的胸腔里。顺便纠一句流传很广的说法:"肺的表面积相当于一个网球场"其实是夸张的——一个单打场地是 195 平方米。
第二条:临界点。第 16、17、18 期反复出现过一句话——在临界点上,系统没有特征尺度。这句话的直接几何后果就是分形。渗流模型里那个刚刚贯通的巨簇 → 参考 · 渗流模型,在二维格子上的分形维数是精确已知的 91/48 ≈ 1.90:它填平面的方式介于一条线和一个面之间,到处是洞,洞里还有洞。分布上的对应物就是幂律 → 参考 · 幂律的识别与误判。所以凡是会自己爬到临界的系统(第 18 期那一类),都会顺手长出分形的几何——两件事不是巧合并列,是同一件事的两个侧面。
第三条:造形的过程本身不挑尺度。侵蚀、破裂、沉积、水流分叉——这些过程在每个尺度上遵循同样的规则:水在一条小沟里做的事和在一条大河谷里做的事是同一件事,只是尺寸不同。既然造形的过程不认尺度,造出来的形状当然不会有特征尺度。
三条路的机制完全不同:一条是优化(供给网络),一条是临界,一条是过程的尺度无关性。可它们产出同一类形状。这既解释了分形为什么这么常见,也顺带解释了为什么"这东西是分形的"这句话本身几乎不含信息——它不告诉你走的是哪一条路,而三条路给出的预测完全不同。
EN Three unrelated routes converge on fractal geometry: branching supply networks (each generation adds equal volume but 26% more surface), criticality (no characteristic scale, e.g. the 2D percolation cluster at 91/48), and shaping processes that are themselves scale-free. Because the routes differ, calling something fractal names no mechanism.
分形是复杂性科学里最容易被滥用的词,没有之一。它好看、好懂、到处都能"看见"——而这三条恰恰就是麻烦的来源。
第一,自然界的分形都很短。数学上的分形跨越无穷多个尺度,自然界的不跨。血管的自相似向下止于毛细血管(内截断,inner cutoff),向上止于整个循环系统(外截断,outer cutoff)。真正的问题是这个窗口通常有多窄。1998 年 Avnir 等人在《科学》上做了一件很不客气的事:他们把《物理评论》系列期刊上报告"自然界的分形"的论文翻了一遍,逐篇统计实际用到的标度范围,结果是平均约 1.3 个数量级。
1.3 个数量级是什么概念——横轴上从 1 到 20 出头。在这么短的一段里,直线和缓慢弯曲的曲线看不出区别。所以相当多"某某是分形的"结论,实际上是在一小段上拟合了一条直线,然后把它外推到了它没去过的地方。
第二,维数不是形状的指纹。维数相同的两个图形可以毫不相干——这是个简单的事实,却在一桩很有名的鉴定案里被忽略了。1999 年 Richard Taylor 等人在《自然》上报告,波洛克(Jackson Pollock)的滴画有稳定的分形维数,可以拿来分辨真伪,这套方法后来真的进了鉴定实务。2006 年 Katherine Jones-Smith 与 Harsh Mathur 在同一本刊物上反驳:他们随手画了几张由星形和潦草线条构成的涂鸦,这些东西同样通过了那套分形判据。也就是说,那个指标测的东西太粗,根本不足以把波洛克和随手一画分开。围绕一批来路存疑的波洛克作品的分形鉴定,也在同一时期陷入了争议。
第三,也是最要紧的:分形是一个描述,不是一个解释。说"树是分形的"没有解释任何事,它只是把"树的分支在好几个尺度上长得差不多"换了个说法。真正的解释在第 4 节那三条路上——是供给网络的优化,是临界,还是造形过程本身不挑尺度?这三条给出的可检验预测完全不同:第一条预测管径比例接近 2^(−1/3),第二条预测系统同时表现出幂律涨落和临界慢化,第三条什么都不预测、只说形状会长成那样。一个句子如果换成"这东西在几个尺度上长得差不多"之后就没了分量,那它本来也没有分量。
把"这是分形的"当成一个待检验的假设,不是一个结论。写进任何结论之前先补三样:① 标度窗口的上下限(跨了几个数量级);② 用的哪种维数、哪种拟合;③ 一个只有分形成立才做得出来的预测——比如"把分辨率提高一倍,我数出来的东西会多 2^D 倍",然后真的去数一遍。三样凑不齐,就把这个词从句子里删掉,看看剩下的还成不成立。
EN Three limits. Reported natural fractals span an average of only about 1.3 orders of magnitude (Avnir et al., 1998). Dimension is not a fingerprint — casual doodles pass the same test that was used to authenticate Pollock (Jones-Smith & Mathur, 2006). And "it is fractal" describes rather than explains: the three routes to fractal form make different, testable predictions.
有,但意义要缩水到一句很具体的话:"在这一个数量级里,我可以用同一套参数描述它。"这仍然有用——它意味着你在这个范围内可以外推。但它不支持任何跨出窗口的推论,尤其不支持"所以更大的尺度上也一样"。判断的办法是问:如果我把窗口再拓宽半个数量级,你的结论会不会翻?会翻的话,那个结论本来就是窗口的产物。
它测的是"细节随分辨率增长的速率",仅此而已。这个速率是形状的一个统计量,就像"平均身高"是一群人的一个统计量——知道平均身高,你说不出这群人长什么样。所以维数适合做比较(同一类对象、同一套测法、同一个窗口下谁更粗糙),不适合做识别。波洛克那桩案子踩的正是这条线:把一个比较用的量拿去做识别。
一部分原因在制造方式:分形结构要靠递归的生长长出来,而人的制造长期是"把零件加工好再装配",装配没法递归。3D 打印和增材制造在某种程度上解开了这个约束,于是分形结构(点阵、多孔、分支散热)近年才开始进入工程。另一部分原因在于可维护性:分形结构没有天然接缝,坏了不好换——演化不在乎更换零件,工程在乎。
是同一条性质在两种对象上的表现:幂律说的是一个分布在放大横轴后形状不变,分形说的是一个形状在放大后样子不变。它们常常同时出现(临界系统就是),但不必然:一个形状可以是分形的而它的某些统计量不服从幂律,反过来也一样。看到其中一个不要自动假设另一个也在,那是要单独验的。
几乎总是某种"物理上的最小单位"或"边界"。向下是构成材料本身的尺寸(一个细胞、一粒沙、一个像素),向上是系统的总尺寸(一个器官、一片流域、一个市场的总规模)。所以找截断的办法很实用:问这个系统里最小的不可再分的东西是什么、最大的容器是什么。这两个数一报出来,标度窗口的宽度就定了,也就知道这套语言在这里还剩多少空间。