拉格朗日插值法
导入
考虑这样一类问题,目前有一未知的函数y=f(x),但给出了其上的n+1个点对: ( x 0 , y 0 ) , ( x 1 , y 1 ) , . . . ( x n , y n ) (x_0,y_0), (x_1,y_1),...(x_n,y_n) (x0,y0),(x1,y1),...(xn,yn)的具体值,求解:再给出个x,求它对应函数值y为多少?
换一种说法,给出了n+1个点,要求出与这n+1个点拟合度最好的一条曲线 的函数方程。那么,此时我们可以考虑计算出一种使得这n+1个点全部在其上的曲线表达式,那么这一表达式必然为拟合度最好的,也就可以用它来近似求解上一问题了,它被称为拉格朗日插值式。
再换一种更简单的说法,给点值表达式,求系数表达式。
(想使用高斯消元?高斯消元的时间复杂度在 O ( n 3 ) O(n^3) O(n3),但拉格朗日插值可以将该问题简化到 O ( n 2 ) O(n^2) O(n2)甚至O(n)
1、线性插值
首先 ,我们假设f(x)为一个线性函数,则已知其两点,即可拟合出它的图形y=kx+b。
即可认为: f ( x ) = P 1 ( x ) = L 0 ( x ) × y 0 + L 1 ( x ) × y 1 f(x)=P_1(x)=L_0(x)\times y_0+L_1(x)\times y_1 f(x)=P1(x)=L0(x)×y0+L1(x)×y1。其中 L 0 ( x ) = { 1 x = x 0 0 x = x 1 L_0(x)=\left\{\begin{aligned} 1\quad x=x_0 \\0 \quad x=x_1\end{aligned}\right. L0(x)={
1x=x00x=x1 L 1 ( x ) = { 0 x = x 0 1 x = x 1 L_1(x)=\left\{\begin{aligned} 0 \quad x=x_0 \\1 \quad x=x_1\end{aligned}\right. L1(x)={
0x=x01x=x1
我们将 P 1 ( x ) P_1(x) P1(x)称为线性插值式,此时 f ( x ) = P 1 ( x ) f(x)=P_1(x) f(x)=P1(x),但若f(x)并非线性函数,二者就不一定相等了。
观察一元一次方程: y − y 0 = ( y 1 − y 0 x 1 − x 0 ) ⋅ ( x − x 0 ) y-y_0=(\frac{y_1-y_0}{x_1-x_0})\cdot (x-x_0) y−y0=(x1−x0y1−y0)⋅(x−x0),易得 y = x − x 1 x 0 − x 1 y 0 + x − x 0 x 1 − x 0 y 1 ⇒ { L 0 ( x ) = x − x 1 x 0 − x 1 L 1 ( x ) = x − x 0 x 1 − x 0 y=\frac{x-x_1}{x_0-x_1}y_0+\frac{x-x_0}{x_1-x_0}y_1 \Rightarrow \left\{\begin{aligned} L_0(x)=\frac{x-x_1}{x_0-x_1} \\L_1(x)=\frac{x-x_0}{x_1-x_0} \end{aligned}\right. y=x0−x1x−x1y0+x1−x0