拉格朗日插值公式的简单推导

定理(拉格朗日插值公式):对于区间[a,b][a,b]上的某函数f(x)f(x),若已知其在点x0,…,xnx_0,\dots,x_n处的n+1n+1个值f(x0),…,f(xn)f(x_0),\dots,f(x_n),设

lk(x)=(x−x0)⋯(x−xk−1)(x−xk+1)⋯(x−xn)(xk−x0)⋯(xk−xk−1)(xk−xk+1)⋯(xk−xn),k=0,…,nl_k(x)=\frac{(x-x_0)\cdots(x-x_{k-1})(x-x_{k+1})\cdots(x-x_n)}{(x_k-x_0)\cdots(x_k-x_{k-1})(x_k-x_{k+1})\cdots(x_k-x_n)},k=0,\dots,n

则多项式

L(x)=∑k=0nf(xk)lk(x)L(x)=\sum^n_{k=0}f(x_k)l_k(x)

满足条件,其称为拉格朗日插值多项式
特别地,若令ω(x)=(x−x0)⋯(x−xn)\omega(x)=(x-x_0)\cdots(x-x_n),则该公式可紧凑地写为
L(x)=∑k=0nω(x)ω′(xk)(x−xk)⋅f(xk)L(x)=\sum^n_{k=0}\frac{\omega(x)}{\omega'(x_k)(x-x_k)}\cdot f(x_k)

证:
我们已知n+1n+1个点,所以我们不妨设用一个nn次函数进行拟合,即设f(x)=∑i=0naixi\displaystyle f(x)=\sum\limits^n_{i=0}a_ix^i满足题设
分别带入这n+1n+1个点,得到以a0,…,ana_0,\dots,a_n为未知数的线性方程组:

B[a0a1a2⋮an]=[1x01x02⋯x0n1x11x12⋯x1n1x21x22⋯x2n⋮⋮⋮⋮1xn1xn2⋯xnn][a0a1a2⋮an]=[f(x0)f(x1)f(x2)⋮f(xn)] \mathbf{B}\begin{bmatrix} a_0\\a_1\\a_2\\\vdots\\ a_n \end{bmatrix}= \begin{bmatrix} 1&x_0^1&x_0^2&\cdots&x_0^n\\ 1&x_1^1&x_1^2&\cdots&x_1^n\\ 1&x_2^1&x_2^2&\cdots&x_2^n\\ \vdots&\vdots&\vdots&&\vdots\\ 1&x_n^1&x_n^2&\cdots&x_n^n \end{bmatrix} \begin{bmatrix} a_0\\a_1\\a_2\\\vdots\\a_n \end{bmatrix} = \begin{bmatrix} f(x_0)\\f(x_1)\\f(x_2)\\\vdots\\f(x_n) \end{bmatrix}

其解为:

ai=∣Bi∣∣B∣=∣1x01⋯x0i−1f(x0)x0i+1⋯x0n1x11⋯x1i−1f(x1)x1i+1⋯x1n⋮⋮⋮⋮⋮⋮1xn1⋯xni−1f(xn)xni+1⋯xnn∣∣1x01x02⋯x0n1x11x12⋯x1n⋮⋮⋮⋮1xn1xn2⋯xnn∣ a_{i}=\frac{|\mathbf{B}_{i}|}{|\mathbf{B}|}=\frac {\begin{vmatrix} 1&x_0^1&\cdots&x_0^{i-1}&f(x_0)&x_0^{i+1}&\cdots&x_0^n\\ 1&x_1^1&\cdots&x_1^{i-1}&f(x_1)&x_1^{i+1}&\cdots&x_1^n\\ \vdots&\vdots&&\vdots&\vdots&\vdots&&\vdots\\ 1&x_n^1&\cdots&x_n^{i-1}&f(x_n)&x_n^{i+1}&\cdots&x_n^n \end{vmatrix}} {\begin{vmatrix} 1&x_0^1&x_0^2&\cdots&x_0^n\\ 1&x_1^1&x_1^2&\cdots&x_1^n\\ \vdots&\vdots&\vdots&&\vdots\\ 1&x_n^1&x_n^2&\cdots&x_n^n \end{vmatrix}}

我们考虑将∣Bi∣|\mathbf{B}_i|沿第i+1i+1列展开

f(x)=1∣B∣∑i=0n∑j=0n(−1)i+jf(xj)xi∣Bij∣=1∣B∣∑i=0n∑j=0n(−1)i+jf(xj)xi∣1x01⋯x0i−1x0i+1⋯x0n⋮⋮⋮⋮⋮1xj−11⋯xj−1i−1xj−1i+1⋯xj−1n1xj+11⋯xj+1i−1xj+1i+1⋯xj+1n⋮⋮⋮⋮⋮1xn1⋯xni−1xni+1⋯xnn∣ f(x)=\frac{1}{|\mathbf{B}|}\sum^n_{i=0}\sum^n_{j=0}(-1)^{i+j}f(x_j)x^i|\mathbf{B}_{ij}| =\frac{1}{|\mathbf{B}|}\sum^n_{i=0}\sum^n_{j=0}(-1)^{i+j}f(x_j)x^i \begin{vmatrix} 1&x_0^1&\cdots&x_0^{i-1}&x_0^{i+1}&\cdots&x_0^n\\ \vdots&\vdots&&\vdots&\vdots&&\vdots\\ 1&x_{j-1}^1&\cdots&x_{j-1}^{i-1}&x_{j-1}^{i+1}&\cdots&x_{j-1}^n\\ 1&x_{j+1}^1&\cdots&x_{j+1}^{i-1}&x_{j+1}^{i+1}&\cdots&x_{j+1}^n\\ \vdots&\vdots&&\vdots&\vdots&&\vdots\\ 1&x_n^1&\cdots&x_n^{i-1}&x_n^{i+1}&\cdots&x_n^n \end{vmatrix}

我们拆开,先对ii计算,再把(−x)i∣Bij∣(-x)^i|\mathbf{B}_{ij}|单独拆进去:

f(x)=1∣B∣∑j=0n(−1)jf(xj)(∑i=0n(−x)i∣Bij∣)∑i=0n(−x)i∣Bij∣=∣Cj∣=∣1(−x)1(−x)2(−x)3⋯(−x)n1x11x12x13⋯x1n⋮⋮⋮⋮⋮1xj−11xj−12xj−13⋯xj−1n1xj+11xj+12xj+13⋯xj+1n⋮⋮⋮⋮⋮1xn1xn2xn3⋯xnn∣ \begin{aligned} f(x)=\frac{1}{|\mathbf{B}|}\sum^n_{j=0}(-1)^jf(x_j)\left(\sum^n_{i=0}(-x)^i|\mathbf{B}_{ij}|\right)\\ \sum^n_{i=0}(-x)^i|\mathbf{B}_{ij}|=|\mathbf{C_j}| =\begin{vmatrix} 1&(-x)^1&(-x)^2&(-x)^3&\cdots&(-x)^n\\ 1&x_1^1&x_1^2&x_1^3&\cdots&x_1^n\\ \vdots&\vdots&\vdots&\vdots&&\vdots\\ 1&x_{j-1}^1&x_{j-1}^2&x_{j-1}^3&\cdots&x_{j-1}^n\\ 1&x_{j+1}^1&x_{j+1}^2&x_{j+1}^3&\cdots&x_{j+1}^n\\ \vdots&\vdots&\vdots&\vdots&&\vdots\\ 1&x_n^1&x_n^2&x_n^3&\cdots&x_n^n \end{vmatrix} \end{aligned}

故原式化为

f(x)=1∣B∣∑j=0n(−1)jf(xj)Cjf(x)=\frac{1}{|\mathbf{B}|}\sum^n_{j=0}(-1)^jf(x_j)\mathbf{C}_j

其中,B;Cj\mathbf{B};\mathbf{C}_j是我们熟知的Vandermonde行列式
求比之后化简,即可得到原式

评论