一、数学基础
理解拉格朗日插值,首先需要明确多项式函数的基本性质。在小学二年级我们学过,对于一个 m 次多项式 f(x),其一般形式一定可以表示为 f(x)=a0+a1x+a2x2+⋯+amxm。其中 ai 称作多项式的 i 次项系数,x 称作自变量。该函数共有 m+1 个未知的系数,进行因式分解后,不难得出:给定平面上 m+1 个横坐标互不相同的点 (x0,y0),(x1,y1),⋯,(xm,ym),我们可以唯一确定一个次数不超过 m 的多项式函数 f(x),使其图像恰好经过这 m+1 个点。这正是拉格朗日插值法的核心理论基础。
二、基本原理
拉格朗日插值的核心思想是构造基函数并组合,类似于分治算法:我们可以将待求的插值函数 P(x) 拆解为多个简单的基函数的加权和。我们为每个已知点 (xi,yi) 构造一个对应的基函数 li(x),要求这个基函数满足:在 x=xi 处取值为 1,而在其余所有已知点 xj 处取值为 0。
这样一来,我们就可以把插值函数 P(x) 表示为这些基函数的和:P(x)=y0l0(x)+y1l1(x)+y2l2(x)+⋯+ymlm(x),此时,求插值函数的问题就转化为了求解这一系列拉格朗日基函数的问题。
三、拉格朗日基函数
接下来我们来具体构造满足要求的基函数 li(x)。根据多项式因式分解的性质:若一个 m 次多项式在 m 个互不相同的点处取值为0,那么它一定可以写成 f(x)=a∏j=0m(x−bj) 的形式,其中 a 为非零常数,b0,b1,...,bm 就是该多项式的根。
基于这个性质,我们可以先构造一个初步的多项式:li′(x)=(x−x0)(x−x1)⋯(x−xi−1)(x−xi+1)⋯(x−xm)。这个多项式的特点是:对于所有 j=i,都有 li′(xj)=0,正好满足基函数在其余点处取0的要求。但我们很快会发现,这个多项式在 xi 处的取值并不一定是1,因此,我们需要对它进行归一化处理。
我们可以通过代入计算确定这个归一化常数:将 x=xi 代入上述初步多项式,可得 li′(xi)=(xi−x0)(xi−x1)⋯(xi−xi−1)(xi−xi+1)⋯(xi−xm)。为了让基函数在 xi 处的取值为1,我们只需要将初步多项式除以这个值即可。因此,最终的拉格朗日基函数可以表示为:li(x)=li′(xi)li′(x)=∏j=0,j=imxi−xjx−xj
得到基函数后,我们将其代入插值函数的表达式,就可以得到完整的拉格朗日插值公式了:P(x)=∑i=0myi⋅li(x)=∑i=0m(yi∏j=0,j=imxi−xjx−xj)。
四、示例验证
那这个公式对不对呢?我们可以通过一个具体示例来验证它的正确性:假设我们需要构造一个多项式,使其穿过点 (0,1),(1,2),(2,1)。根据基本理论,3 个横坐标互不相同的点可以唯一确定一个次数不超过 2 的多项式,也就是说,可以用一个二次函数解决这个问题。
首先,我们分别计算每个点对应的基函数:
- 对于点 (0,1),基函数为 l0(x)=(0−1)(0−2)(x−1)(x−2)=21x2−23x+1;
- 对于点 (1,2),基函数为 l1(x)=(1−0)(1−2)(x−0)(x−2)=−x2+2x;
- 对于点 (2,1),基函数为 l2(x)=(2−0)(2−1)(x−0)(x−1)=21x2−21x。
接下来我们将基函数与对应的函数值加权求和,得到多项式 P(x)=1⋅l0(x)+2⋅l1(x)+1⋅l2(x)=(21x2−23x+1)+2(−x2+2x)+(21x2−21x)=−x2+2x+1。
最后,我们代入原有点进行验证:
- P(0)=−02+2×0+1=1,与点 (0,1) 吻合;
- P(1)=−12+2×1+1=2,与点 (1,2) 吻合;
- P(2)=−22+2×2+1=1,与点 (2,1) 吻合。
这说明我们构造出的插值函数 P(x) 是正确的。
五、实战演练
最后,我来给大家布置一个小作业,可以在评论区留言解答:请利用上述公式构造一个 n 次函数,使其函数图像穿过点 (0,1),(1,0),(2,−1),(3,0),要求写出 n 的最小值和构造出的函数。
截至 2026/7/29,无人做出。提示:第一个基函数 l0=(0−1)(0−2)(0−3)(x−1)(x−2)(x−3)=6−x3+3x2+2x2−6x+x2−3x−2x+6=6−x3+6x2−11x+6=−61x3+x2−611x+1。
2026/8/3,大佬 Lin.Zikang 利用程序成功做出。
有帮助,赞一个