插值是指在已知数据点之间估计一个数值。如果你想求的 值位于已有数据范围之内,插值就能帮助你估计对应缺失的 值。
最简单的情况是线性插值,它在两个点之间使用一条直线。多项式插值则使用一个能精确通过多个点的多项式。拉格朗日插值是在已知 值互不相同时,写出这个多项式的一种标准公式。
如果未知的 落在已知范围之外,那么你做的就是外推。这是另一类问题,而且通常没有插值可靠。
线性插值公式
设你已知两点 和 ,其中 。当 位于 与 之间时,线性插值使用
它的原理是:先计算从 到 的水平距离占从 到 的几分之几,再把同样的比例应用到从 到 的竖直变化上。如果真实关系在这个区间内本来就是线性的,那么结果就是精确的;否则它只是一个局部估计。
线性插值例子
假设已知点是 和 ,你想求 时的值。
使用线性插值公式:
现在化简:
所以插值得到的值是 。这很合理,因为 在从 到 的路程中正好走了三分之一,所以输出值也会从 到 前进三分之一。
多项式插值:精确通过多个点
如果你有两个以上且 值互不相同的点,多项式插值会寻找一个能通过所有这些点的多项式。对于 个 值互不相同的点,恰好存在一个次数不超过 的多项式与它们完全匹配。
例如,两个点最多确定一条直线,三个点最多确定一个二次多项式,四个点最多确定一个三次多项式。当你想要一个既平滑又能精确匹配采样值的公式时,这种方法很有用。
但代价是,精确拟合并不总意味着点与点之间的表现也好。当点很多,或者点之间间隔较大时,高次插值多项式可能会出现明显振荡,尤其是在区间两端附近。
拉格朗日插值公式
拉格朗日插值是一种直接写出插值多项式的方法。如果你有点 ,且各个 互不相同,那么拉格朗日形式为
其中
每个基多项式 都被构造为:在 处等于 ,在其他已知的 值处等于 。正因为如此,这个求和式才能在每个数据点上保留正确的 。
当你想根据一小组点得到一个精确的插值多项式时,通常会使用拉格朗日形式。它在概念上很清晰,但在更大的数值计算问题中,人们往往更偏好其他形式,因为它们计算起来更稳定。
插值与外推
插值是在已知 值范围内进行估计。外推则是把估计延伸到这个范围之外。
这个区别很重要,因为插值依托于附近的已知数据。若底层规律在观测区间之外发生变化,外推就可能很快失效。
常见的插值错误
在数据范围之外使用插值
如果 落在已知区间之外,那么这个计算就不再是插值,而变成了外推,而外推通常可靠性更低。
误以为精确拟合就等于真实精确
一个多项式可以精确通过测量得到的数据点,但它在这些点之间仍可能不是现实情况的好模型,尤其是在数据含有噪声时。
忘记 值必须互不相同
对于标准插值公式,已知的 值必须互不相同。如果两个数据点有相同的 ,却对应不同的 ,那么同一个函数不可能同时通过这两个点。
过快选择高次数
把所有数据点都放进一个高次多项式中,可能会导致不稳定的表现。实际中,当点很多时,通常更倾向于使用样条等分段方法。
插值的应用场景
插值出现在数值分析、计算机图形学、查表、信号处理和科学计算中。只要你知道若干选定点上的数值,却需要中间位置的合理估计,插值就会很有用。
在初等数学课程中,它也把斜率、函数、多项式和近似这些概念联系到了一起:利用已知结构去估计中间的未知值。
试做一道类似的插值题
取点 和 ,用线性插值估计 时的值。然后思考:在这个区间上,用一条直线来估计是否合理。
如果你想在自己列式后快速核对,可以在求解器里试试你自己的版本,并把得到的直线方程与你的结果进行比较。