Skip to content
速览
  • 插值难在同时穿过所有点,拉格朗日把它拆成 n+1 个只管自己的开关,再加权混合。
  • 开关的构造口诀就八个字:分子管零,分母管一。
  • 我卡得最久的不是公式,是 j 和 i 这两个下标的身份。
  • 思考题和误差公式共用同一个机关:0 乘任何导数都是 0。

这页公式把我劝退过一次 ​

研究生课《数值计算方法》,教材第 66 页,拉格朗日插值。一页纸排了七条编号公式,从 4.7 排到 4.13,页尾还有一道思考题。我第一次看就是扫了一眼下标,翻过去了。

这次找了 AI 一对一当老师,先约法三章:讲解要完全闭环,每个式子、每个符号在哪个式子里干什么都得讲透;检测标准是我能不翻书、自己道出本质、还能动手算。事实证明这个标准定得对——第一遍听完我觉得全懂了,一动手就露馅。

先把问题摆出来。已知平面上 n+1 个点 (x₀,y₀)…(xₙ,yₙ),要造一条次数不超过 n 的多项式,恰好穿过它们。难在哪?难在「同时」:一条曲线要一口气伺候所有点。

拉格朗日的招是不硬凑。先造 n+1 个「开关」,第 i 个开关 lᵢ(x) 只管第 i 个点,规矩两条:手指走到自己的点输出 1,走到别人的点输出 0。然后每个开关配一个旋钮,旋钮拧到各自的 yᵢ,加权混合:

Lₙ(x) = Σᵢ₌₀ⁿ yᵢ·lᵢ(x)

把 x 放到任何一个节点上,全场只有一个开关亮着,曲线自动等于那一点的 y。插值多项式白送。

开关怎么造?把上面两条规矩翻译成式子,就是教材里那条连乘公式:

lᵢ(x) = Πⱼ₌₀,ⱼ≠ᵢⁿ (x−xⱼ)/(xᵢ−xⱼ)

读法:j 从 0 数到 n 但跳过 i,把每个「别人的因子比上自己到别人的距离」乘起来。分子全是 (x−xⱼ),负责归零;分母是常数 (xᵢ−xⱼ) 的连乘,负责归一化。

八个字

开关的构造口诀:分子管零,分母管一。分子连乘所有「别人」的因子 (x−xⱼ),埋地雷,手指踩到谁谁爆 0;分母就是把 x=xᵢ 代进分子算出来的那个常数,踩自己时分子等于分母,除出来恰好是 1。

下面的演示可以玩。三颗钉子在 x=0、1、2,虚线是三个开关,绿粗线是加权合成出来的 L₂。盯着三件事看:①拖 y₀/y₁/y₂ 旋钮,曲线形状变但「结构」不变;②点播放让手指滑,踩到钉子时读数框会报「满格/断电」;③x 落在任何位置,L₂ 都是三个读数乘各自 y 再相加。

拉格朗日插值演示:三颗钉子 (0,y₀)(1,y₁)(2,y₂),虚线是三个开关 l₀/l₁/l₂,绿粗线是合成结果 L₂
x=0.750

卡住我的四个地方 ​

公式本身不难,难的是四个我以为懂了、其实没懂的点。复盘成对照表:

当时的疑问想通之后
x=xᵢ 时分母不就是 0 了吗连乘号脚下写着 j≠i,名单里压根没有自己,(xᵢ−xᵢ) 这个因子从来不会被造出来
x 能等于 xᵢ,j 又不能等于 i,同一个式子不矛盾吗不矛盾。x 是活的函数值随便走,j 是死的常数名单管分母由哪些因子组成,各管各的
xᵢ 和 xⱼ 到底是什么都是钉子的位置,固定数值。i 是自己的编号,j 是点名点到谁就是谁的编号。全式唯一会动的只有 x
0 和 1 到底怎么蹦出来的真代进去算:踩别人,某颗因子 (xⱼ−xⱼ)=0,零乘任何数全灭;踩自己,分子和分母逐因子相同,自己除自己等于 1

第二个问题我纠结得最久。总感觉「一边允许等于一边不允许」是自相矛盾。后来想明白,这是把两种东西混在一个筐里了:分子里的 x 是「这个月实际干了多少活」,分母里的下标名单是「底薪多少」,一个随便变,一个焊死。

还有一个更狠的视角,是一句话把我打通的:别把开关看成 n 个分式相乘,把它看成一个分数——分子是手指的脚印,分母是自己钉子的脚印,读数就是两个脚印的重合度。 分母是死标尺,分子是活测量,比值天然在别人家归零、在自己家满格、半路连续过渡。演示里那几条虚线,就是这个比值自己长出来的形状。

最容易看漏的记号

Π 底下的小字 j≠i 不是装饰。「跳不跳自己」是两个式子的分水岭:lᵢ 的分子分母都跳自己,ω 一个都不跳。ω 负责全都要,lᵢ 负责唯独不要我。

思考题:幸存者法则 ​

教材页尾留了一道思考题,要证的是这条等式——ω 求导后代入 xᵢ,恰好等于跳过 xᵢ 的那串连乘:

ω′ₙ₊₁(xᵢ) = (xᵢ−x₀)·(xᵢ−x₁)···(xᵢ−xₙ) (跳过 xᵢ)

我第一次的回答是「求导,然后代入 xᵢ」——动作对了,但老师追问「为什么代进去只剩一串连乘」,我答不上来。

补了一块积木就通了。乘积法则处理多个因子的规律是:每一项挑一个因子拿去求导,其余原样抄。三个因子就三项:

(uvw)′ = u′vw + uv′w + uvw′

拿 ω(x)=x(x−1)(x−2) 算 ω′(0)。三项里,除了消化掉 (x−0) 的那一项,另外两项都原样抄着 x——代 x=0 时它变成地雷,整项归零。唯一消化了自己的那项没有地雷可爆,带着剩下的连乘活到最后。ω′(0) = (0−1)(0−2) = 2,展开验算 x³−3x²+2x 求导代 0,也是 2。

我最后用自己的话说了一遍:「计算过程里有很多展开,但只幸存了这一串。」老师补了最后半句:幸存的那项不是运气好,是它唯一把 (x−xᵢ) 消化掉了,别项都原样背着这颗雷。

一句话记住

0 乘任何导数都是 0。乘积法则展开的所有项里,只有把 (x−xᵢ) 求导成 1 的那一项不背地雷,它就是幸存者。

ω 和误差公式:不是换皮,是换舞台 ​

插值多项式还有一条等价写法,先把两条都摆出来。普通版——每个开关各写各的:

Lₙ(x) = Σᵢ₌₀ⁿ yᵢ · Πⱼ₌₀,ⱼ≠ᵢⁿ (x−xⱼ)/(xᵢ−xⱼ)

ω 版——把公共连乘提出来起个名:

ωₙ₊₁(x) = (x−x₀)·(x−x₁)···(x−xₙ) (一个因子不跳,n+1 个一次因子相乘所以次数是 n+1)

Lₙ(x) = Σᵢ₌₀ⁿ yᵢ · ωₙ₊₁(x) / [(x−xᵢ)·ω′ₙ₊₁(xᵢ)]

分子 ω 比开关的分子多一个 (x−xᵢ),分母里的 (x−xᵢ) 负责把它除掉;分母里的 ω′ₙ₊₁(xᵢ) 就是上一节思考题证的那个常数,恰好等于普通版里每个开关的分母。两条式子逐项相等,我一开始以为这纯属换皮,老师说对,但 ω 有三个真金白银的用处:

  1. 省算力:全连乘只算一次,每个开关的分子除一下就出来,不用每个开关从头乘。
  2. 误差公式的绝对主角:插值误差 Rₙ(x) = f⁽ⁿ⁺¹⁾(ξ)/(n+1)! · ωₙ₊₁(x)。f 给定了,弯度上限 M 就定死;(n+1)! 由点数定死。唯一能动的旋钮是钉子钉在哪——它直接决定 |ω| 的形状。所谓切比雪夫节点,本质就是挑钉子位置让 max|ω| 最小。
  3. ω′ 这串连乘在数值微分里还要出场,思考题的结论直接复用。

误差公式说的是替身和真人的差距。先立定义:Rₙ(x) = f(x) − Lₙ(x),钉子上等于 0,钉子之间不为 0。误差公式给出它的上限,逐个符号的角色我按闭环标准拆:ξ 读「克赛」,是区间内某个存在但位置未知的中值定理产物,所以那块算不出精确值只能框上限;分母 (n+1)! 是点越多压得越狠的压制项;ω 衡量「你离钉子阵整体有多远」,踩中任何钉子它归零,误差也归零——替身在钉子上本来就是完美的。

下面的演示是误差公式的实况转播。f 取 sin x,三颗钉子等距。下图红线是真实误差,灰色包络是理论上界 |ω₃(x)|/6:红线从头到尾没出包络,并且和包络在三颗钉子处同时归零。还能看到一个不妙的事——等距钉子的 ω 在两端翘得很凶,这就是后面「切比雪夫节点」要治的病。

误差演示:f(x)=sin x,钉子 0 / 1.5 / 3。上图蓝线是真函数、橙虚线是插值 L₂、红色竖线段是两者差距 R₂(x);下图红线是真实误差,灰色包络是理论上界 ±ω₃(x)/6
x=0.750

本质一句话:插值只在钉子上完美,钉子之间差多少 = 函数有多弯 × 你离钉子阵整体有多远。前者是天命,后者是唯一的自由度。

手算一遍才算数 ​

口说无凭,最后动手算了过 (0,1)、(1,3)、(2,2) 三点的 L₂(0.5)。

完整计算过程

三个开关(分子连乘别人,分母是常数):

text
l₀(x) = (x−1)(x−2) / [(0−1)(0−2)] = (x−1)(x−2)/2
l₁(x) = (x−0)(x−2) / [(1−0)(1−2)] = x(x−2)/(−1)
l₂(x) = (x−0)(x−1) / [(2−0)(2−1)] = x(x−1)/2

代 x=0.5:l₀ = (−0.5)(−1.5)/2 = 0.375,l₁ = 0.5×(−1.5)/(−1) = 0.75,l₂ = 0.5×(−0.5)/2 = −0.125。

加权:L₂(0.5) = 1×0.375 + 3×0.75 + 2×(−0.125) = 0.375 + 2.25 − 0.25 = 2.375。

展开验货:L₂(x) = −1.5x² + 3.5x + 1,代 0、1、2 回去正好是 1、3、2,三颗钉子分毫不差。算完拿上面第一个演示对答案,y 旋钮拧到 1、3、2,手指放到 x=0.5,读数就是 2.375。

这次学习本身,什么起了作用 ​

复盘下来,比知识点更值得记的是学法上的三件事:

  1. 闭环要求倒逼理解深度。「每个符号在哪个式子里干什么都要讲透」这个要求提出来之后,讲解质量完全不一样——第一遍泛泛听懂的部分,恰恰就是符号身份含糊的部分。
  2. 假懂要靠动手戳破。听完觉得全懂,一让手算就卡。四个卡点全是在代数和被追问「为什么」的时候暴露的,不是在听讲的时候。
  3. 比喻必须贯穿到底。钉子、手指、开关、地雷、脚印这套比喻从第一条公式贯穿到最后一条,中途任何一次换比喻都会断线。比值视角(活测量÷死标尺)是全程最值钱的一次升维。

下一站两个候选:插值多项式的唯一性证明,或者切比雪夫节点怎么让 |ω| 最小。等下次课。

用 VitePress 搭的,托管在 GitHub Pages