多项式插值是什么?用一条多项式曲线穿过已知的点
多项式插值(Polynomial Interpolation)是一种用多项式函数来近似估算未知数值的方法。插值法又称“内插法”:已知一个函数在某个区间内若干个点上的取值,构造一个适当的特定函数,使它经过这些已知的点,然后用这个特定函数在区间内其他点上的值,作为原函数在这些点上的近似值。如果这个特定的函数是多项式,就叫多项式插值。
一个直观的例子
假设你在一天中的几个时刻测量了温度:早上 6 点是 15 度,中午 12 点是 25 度,下午 6 点是 20 度。现在想估计上午 9 点的温度是多少。多项式插值的做法是:找一个多项式函数,让它的曲线恰好穿过这三个已知的点,然后计算这条曲线在 9 点时的值。经过两个点可以画一条直线(一次多项式),经过三个点可以确定一条抛物线(二次多项式)。一般地,n 加 1 个不同的点,可以唯一确定一个次数不超过 n 的多项式。
常用的方法
拉格朗日插值:为每个已知点构造一个“基函数”,这个基函数在自己对应的点上取值为 1,在其他已知点上取值为 0,再把这些基函数按照各点的函数值加权组合起来,就得到了插值多项式。它的公式形式简洁优美。牛顿插值:用一种叫“差商”的方法逐步构造插值多项式。它的好处是,当新增一个已知点时,不需要从头重新计算,只需要在原来的多项式基础上再添加一项,计算更加方便。这两种方法得到的是同一个多项式,只是表达和计算的方式不同。
龙格现象:点越多不一定越好
直觉上,已知的点越多,插值多项式应该越准确。但德国数学家卡尔·龙格在 1901 年发现了一个反直觉的现象:当用等间距分布的大量点进行高次多项式插值时,插值曲线在区间的中间部分拟合得很好,但在区间的两端会出现剧烈的振荡,偏离真实的函数越来越远,点越多,振荡反而越严重。这被称为龙格现象。为了避免它,常用的办法是:不使用一个很高次的多项式,而是把区间分成许多小段,在每一段上分别用低次的多项式插值,并让各段在连接处平滑地衔接,这就是样条插值,三次样条插值是最常用的一种;或者选择特殊分布的插值点,比如切比雪夫节点,在区间两端分布得更密一些。
应用
多项式插值是数值分析中最基础的方法之一,被广泛用于:根据有限的测量数据估算中间的值;计算机图形学中绘制平滑的曲线和曲面;数值积分和数值微分;数据补全;以及图像缩放时估算新像素的值等。