第2章 数学基础回顾:多项式插值、拉格朗日插值、牛顿插值、高次插值的龙格现象

各位同学,欢迎来到《样条插补算法原理与实战》的第二讲。

做数控插补,说白了就是在离散的点之间“猜”出一条连续的路径。怎么猜得准?这就得靠插值。今天咱们把数学基础打牢,聊聊多项式插值、拉格朗日插值、牛顿插值,还有那个让人头疼的龙格现象。

我个人习惯,讲理论之前先问个问题:给你几个点,你能画出一条光滑曲线吗?能,但画法有很多种。哪种最靠谱?嗯,这就是我们今天要解决的。

2.1 多项式插值:用一条曲线穿过所有点

多项式插值的想法很朴素:给定 n+1 个点,找一个 n 次多项式,让它刚好穿过这些点。

比如,两个点确定一条直线(1次多项式),三个点确定一条抛物线(2次多项式)。

数学上,我们想求一个多项式 P(x) = a₀ + a₁x + a₂x² + ... + aₙxⁿ,使得 P(xᵢ) = yᵢ 对所有 i 成立。

这其实是个线性方程组求解问题。把每个点代入,得到 n+1 个方程,解出 n+1 个系数 a₀, a₁, ..., aₙ。

我在项目中遇到过这种情况:用矩阵直接求解,当点数多了,矩阵会变得非常病态。说白了,就是稍微改一点点数据,结果就天翻地覆。所以实际工程中,我们很少直接用这种方法。

核心要点:多项式插值存在且唯一。只要点不重复,n+1个点就能唯一确定一个n次多项式。

2.2 拉格朗日插值:构造法,简单直观

拉格朗日插值换了个思路。它不直接解方程组,而是构造一组基函数。

公式长这样:

L(x) = Σ yᵢ · lᵢ(x)

其中 lᵢ(x) = Π (x - xⱼ) / (xᵢ - xⱼ),j ≠ i

你看,每个 lᵢ(x) 在 xᵢ 处等于1,在其他点处等于0。这样一组合,L(x) 自然就穿过了所有点。

拉格朗日的好处是公式对称、好理解。但缺点也很明显:每增加一个点,所有基函数都得重新算一遍。你想想看,如果现场调试时频繁加测试点,这计算量就上去了。

我记得有一次做轨迹规划,临时加了两个测量点,拉格朗日插值整个重算,CPU占用率直接飙到90%。后来我就换方案了。

实用技巧:拉格朗日插值适合点数固定、不需要频繁增删点的场景。比如离线生成刀具轨迹,一次算完不再改动。

2.3 牛顿插值:增量更新,工程更友好

牛顿插值解决了拉格朗日的痛点。它用差商(divided difference)来构造多项式。

公式是:

N(x) = f[x₀] + f[x₀,x₁](x-x₀) + f[x₀,x₁,x₂](x-x₀)(x-x₁) + ...

这里的 f[x₀,x₁] 就是一阶差商,f[x₀,x₁,x₂] 是二阶差商,以此类推。

牛顿插值最大的好处是:增加一个新点,只需要在多项式末尾加一项,前面的项完全不用动。这在工程里太实用了。

我曾经在数控系统里做实时插补,传感器会不断返回新的位置点。用牛顿插值,每次只需要算一个新差商,然后加到多项式末尾。计算量几乎不变,实时性杠杠的。

方法 优点 缺点 工程适用性
直接求解 理论清晰 矩阵病态,计算量大 低(点数少时可用)
拉格朗日 公式对称,易理解 增删点需全量重算 中(适合固定点集)
牛顿 增量更新,计算高效 差商表需维护 高(适合实时系统)

2.4 高次插值的龙格现象:一个深刻的教训

讲到这里,你可能会想:既然多项式次数越高,能穿过的点越多,那是不是次数越高越好?

嗯,这里有个大坑。

德国数学家龙格(Runge)发现了一个现象:用高次多项式插值等距节点时,在区间两端会出现剧烈的振荡。次数越高,振荡越严重。

经典的例子是函数 f(x) = 1/(1+25x²),在 [-1,1] 区间上取等距点做插值。当次数超过10次,两端就开始“跳舞”,误差大得离谱。

避坑指南:我曾经在数控加工中,试图用15次多项式拟合一段复杂曲面轮廓。结果加工出来的零件边缘全是波纹,直接报废。后来查资料才意识到,这就是龙格现象在作怪。

为什么会这样?说白了,高次多项式太“灵活”了。为了穿过所有点,它会在端点处剧烈弯曲。你想想看,一根细长的铁丝,你硬要它穿过十几个点,它肯定会在两端扭来扭去。

所以,工程上我们很少用超过7次的多项式做插值。那怎么办?用分段低次插值,也就是后面要讲的样条插值。这是后话,先记住这个教训。

核心结论:高次多项式插值在端点处不稳定。工程实践中,推荐使用分段低次插值(如三次样条)来避免龙格现象。

2.5 本章知识体系:一张图看懂

下面我用一张SVG图,把今天讲的核心逻辑串起来。你看完应该能明白:为什么我们要从多项式插值,一步步走到样条插值。

第2章 数学基础回顾:知识体系 插值问题 多项式插值 直接求解线性方程组 拉格朗日插值 构造基函数,公式对称 牛顿插值 差商构造,增量更新 ⚠ 高次插值的龙格现象:端点振荡,误差发散 工程中避免使用超过7次的多项式插值 → 解决方案:分段低次插值(样条插值)

从这张图可以看得很清楚:多项式插值、拉格朗日、牛顿,它们本质上都是用一个高次多项式去拟合所有点。但高次带来的龙格现象,逼着我们寻找新路——分段低次插值,也就是样条插值。

好了,数学基础就讲到这里。下一章我们正式进入样条插值的世界,看看它是怎么解决龙格现象的。


公众号:蓝海资料掘金营,微信deep3321