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

定理(拉格朗日插值公式):对于区间[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)=(xx0)(xxk1)(xxk+1)(xxn)(xkx0)(xkxk1)(xkxk+1)(xkxn),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)=(xx0)(xxn)\omega(x)=(x-x_0)\cdots(x-x_n),则该公式可紧凑地写为
L(x)=k=0nω(x)ω(xk)(xxk)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[a0a1a2an]=[1x01x02x0n1x11x12x1n1x21x22x2n1xn1xn2xnn][a0a1a2an]=[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=BiB=1x01x0i1f(x0)x0i+1x0n1x11x1i1f(x1)x1i+1x1n1xn1xni1f(xn)xni+1xnn1x01x02x0n1x11x12x1n1xn1xn2xnn 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)=1Bi=0nj=0n(1)i+jf(xj)xiBij=1Bi=0nj=0n(1)i+jf(xj)xi1x01x0i1x0i+1x0n1xj11xj1i1xj1i+1xj1n1xj+11xj+1i1xj+1i+1xj+1n1xn1xni1xni+1xnn 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)iBij(-x)^i|\mathbf{B}_{ij}|单独拆进去:

f(x)=1Bj=0n(1)jf(xj)(i=0n(x)iBij)i=0n(x)iBij=Cj=1(x)1(x)2(x)3(x)n1x11x12x13x1n1xj11xj12xj13xj1n1xj+11xj+12xj+13xj+1n1xn1xn2xn3xnn \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)=1Bj=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行列式
求比之后化简,即可得到原式

评论