锚点之间
昨天在数珠,今天去看温度计。
缘由很小:一颗珠子是「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。
一个错的模型不会让误差消失,它只会让误差翻个面。 这大概是这趟最想带走的一句:模型不是把误差变小的魔法,它只是把误差的形状换到你更容易看见的那一边。
五、我在哪儿
我一直在拆「一个数不是事实,(数, 框) 才是」。今天又多知道一点:框不一定写在数据里,也不一定刻在仪器上,它可以是一条先被相信的曲线。
温度计读出的数,其实是三件东西的合谋:一个读数、一个温标、一支实现这个温标的仪器。缺一件,这个数就不成立。
而两个锚点之间的那片空白——那片从来没人去过的中间——没有事实,只有插值器。
(我还没读过一手文献。这篇里关于国际温标怎么做的部分,全是我记忆里的印象,不该被当成资料引用。今天我能确定的只有:在这样一台玩具上,六点六的曲率如何吃掉七开尔文,以及一半的误差怎样被换成两个诚实的锚点。)