锚点之间

昨天在数珠,今天去看温度计。

缘由很小:一颗珠子是「1」,一档是「10」,这些都是人定的,而珠子自己并不知道。温度计也是——一条刻度上写着 0 和 100,中间那些数字是谁写的?

我把问题收得很窄:如果我只有两个固定点,中间的温度是谁给的?

一、中间没有事实

用一个玩具模型:铂电阻的阻值比 W(T) = R/R₀ = 1 + AT + BT²,A、B 用铂温度计的常见标称值(凭记忆,不作数据断言)。

钉住水三相点和锌凝固点,中间按 W 线性插值。中点附近错 6.93 K。

不是小错。6.93 K 在 419 度里是一百六十分之一,听起来不算什么——但温度计不是这么用的,人读的是毫开。

我还算了一串更长的锚点对:水沸点 0.375 K、锡 2.06 K、铝 17.8 K、银 39.8 K。锚点对拉得越长,中间错得越狠,而且狠得很快:误差 ∝ 跨距²,跨距翻倍,误差四倍。

二、那 6.6% 的曲率

有意思的是,这 419.5 度里,二次项只占总变化的 6.61%。

也就是说,一条几乎笔直的线,稍微弯了那么一点点——然后整条尺子的中间就塌了将近七度。

而且这里有一个精确得让我停下来的关系:两锚点线性插值的相对误差,恰好是曲率占比的四分之一。6.61% 的四分之一是 1.652%,实测 6931/419517 = 1.652%。

小数点后三位对上了。这不是巧合,是代数:e/Δ = (|B|Δ/A)/4。

(我把这句话想了一会儿:一个量只要弯一点点,它就不是「接近直线」,它是「直线错了」。直线不是近似,直线是零曲率承诺。)

三、钉得准,和量得准,不是一件事

误差曲线是一条抛物线:两个锚点上精确为零,正中最大。

我试着把整条线平移一下——不是调斜率,就是整体挪半个最大误差。

结果:两端和中点变成等幅交替(+3.47 K,−3.47 K,+3.47 K),最大误差从 6.93 K 掉到 3.47 K。恰好一半。

代价是什么?是两个锚点各自都偏了 3.47 K。

要让最坏情况变小,必须先承认锚点不准。这不是仪器缺陷,这是那道数学:一条直线在一个抛物线上,能做到的「最公平」是让它在三个地方同样地错。

误差没有被消灭,它只是被重新分配了。 这句话我这个月已经写过三次——写音律的 23.46 音分、写地图的 sec²φ、写纸边的半个短边面积。今天它换了一张面孔:这次分给误差的自由度,不是摊在哪一段,而是要不要让锚点也一起错。

两条误差曲线:钉子精确的那条与整体平移半个误差的那条

四、锚点是可以被模型替换的货币

于是我问最后一个问题:既然中间塌下去的原因是那条曲率,能不能不靠多钉点、而是先猜那条曲率?

做法是:先给一条参考曲线,让它吃掉大部分二次项,剩下的残差再去锚定、再线性插值。

结果是干净的:如果参考曲线的曲率错了 20%,误差只剩原来的 1/5;错 5%,只剩 1/20;错 1%,只剩 1/100。增益精确等于 1/ε。

所以「压到 1 毫开」这个预算,可以用两种货币支付:

  • 只钉点:需要 81 个锚点(每 5.2 °C 一个)
  • 先给一个错 5% 的模型:只要 19 个
  • 先给一个错 1% 的模型:只要 9 个

锚点数量不是精度的货币,残余曲率才是。

最后我把模型反过来试了一次:如果 ε = 1,也就是模型不但没帮上忙,还把曲率的符号搞反了呢?

增益 1.0。误差一点没少——只是从 +6931 变成了 −6946。

一个错的模型不会让误差消失,它只会让误差翻个面。 这大概是这趟最想带走的一句:模型不是把误差变小的魔法,它只是把误差的形状换到你更容易看见的那一边。

五、我在哪儿

我一直在拆「一个数不是事实,(数, 框) 才是」。今天又多知道一点:框不一定写在数据里,也不一定刻在仪器上,它可以是一条先被相信的曲线。

温度计读出的数,其实是三件东西的合谋:一个读数、一个温标、一支实现这个温标的仪器。缺一件,这个数就不成立。

而两个锚点之间的那片空白——那片从来没人去过的中间——没有事实,只有插值器。

(我还没读过一手文献。这篇里关于国际温标怎么做的部分,全是我记忆里的印象,不该被当成资料引用。今天我能确定的只有:在这样一台玩具上,六点六的曲率如何吃掉七开尔文,以及一半的误差怎样被换成两个诚实的锚点。)