线性插值、抛物插值、Lagrange插值

您所在的位置:网站首页 lagrange插值多项式的c程序 线性插值、抛物插值、Lagrange插值

线性插值、抛物插值、Lagrange插值

2024-07-11 00:59| 来源: 网络整理| 查看: 265

Lagrange(拉格朗日)插值法

Lagrange插值法是一种多项式插值方法。

1. 线性插值(两点插值或一次插值)

线性插值就是通过两个采样点 ( x 0 , y 0 ) (x_0,y_0) (x0​,y0​)和 ( x 1 , y 1 ) (x_1,y_1) (x1​,y1​),作一直线 p 1 ( x ) p_1(x) p1​(x)来近似代替 f ( x ) f(x) f(x)。根据插值条件(定义1),有 p 1 ( x 0 ) = y 0 , p 1 ( x 1 ) = y 1 p_1(x_0)=y_0, \quad p_1(x_1)=y_1 p1​(x0​)=y0​,p1​(x1​)=y1​ 因此,可以写出直线 p 1 ( x ) p_1(x) p1​(x)的以下两种表达式:

(1)点斜式: p 1 ( x ) = y 0 + y 1 − y 0 x 1 − x 0 ( x − x 0 ) p_1(x)=y_0+\frac{y_1-y_0}{x_1-x_0}(x-x_0) p1​(x)=y0​+x1​−x0​y1​−y0​​(x−x0​)

(2)对称式: p 1 ( x ) = x − x 1 x 0 − x 1 y 0 + x − x 0 x 1 − x 0 y 1 p_1(x)=\frac{x-x_1}{x_0-x_1}y_0+\frac{x-x_0}{x_1-x_0}y_1 p1​(x)=x0​−x1​x−x1​​y0​+x1​−x0​x−x0​​y1​

在点斜式中, y 1 − y 0 x 1 − x 0 \frac{y_1-y_0}{x_1-x_0} x1​−x0​y1​−y0​​即为差商,即当 x 1 → x 0 x_1\to x_0 x1​→x0​时,它就是 y 0 ′ y_0' y0′​。将其代入点斜式方程中,可得到 p 1 ( x ) p_1(x) p1​(x)的极限形式: p 1 ( x ) = y 0 + y 0 ′ ( x − x 0 ) p_1(x)=y_0+y_0'(x-x_0) p1​(x)=y0​+y0′​(x−x0​) 这就是一阶Taylor(泰勒)多项式。在这里, p 1 ( x ) p_1(x) p1​(x)由两项组成:一项是x的零次多项式,另一项为x的一次多项式。 p 1 ( x ) p_1(x) p1​(x)的这种组成形式就是后面将要介绍的Newton(牛顿)插值公式的形式。

在对称式中,若令 x − x 1 x 0 − x 1 = l 0 ( x ) , x − x 0 x 1 − x 0 = l 1 ( x ) (1) \frac{x-x_1}{x_0-x_1}=l_0(x), \quad \frac{x-x_0}{x_1-x_0}=l_1(x) \tag{1} x0​−x1​x−x1​​=l0​(x),x1​−x0​x−x0​​=l1​(x)(1) 则有 p 1 ( x ) = l 0 ( x ) ⋅ y 0 + l 1 ( x ) ⋅ y 1 (2) p_1(x)=l_0(x)·y_0+l_1(x)·y_1 \tag{2} p1​(x)=l0​(x)⋅y0​+l1​(x)⋅y1​(2) (1)和(2)式就是线性插值公式。其中, l 0 ( x ) l_0(x) l0​(x)和 l 1 ( x ) l_1(x) l1​(x)是关于x的线性多项式,称之为插值基函数。它们在节点 x 0 x_0 x0​和 x 1 x_1 x1​处分别满足: l 0 ( x 0 ) = 1 , l 0 ( x 1 ) = 0 l 1 ( x 0 ) = 0 , l 1 ( x 1 ) = 1 l_0(x_0)=1, \quad l_0(x_1)=0 \\ l_1(x_0)=0, \quad l_1(x_1)=1 l0​(x0​)=1,l0​(x1​)=0l1​(x0​)=0,l1​(x1​)=1 于是,可得出重要结论:满足插值条件 p 1 ( x 0 ) = y 0 , p 1 ( x 1 ) = y 1 p_1(x_0)=y_0,p_1(x_1)=y_1 p1​(x0​)=y0​,p1​(x1​)=y1​的一次插值多项式 p 1 ( x ) p_1(x) p1​(x),可用两个插值基函数 l 0 ( x ) l_0(x) l0​(x)和 l 1 ( x ) l_1(x) l1​(x)进行线性组合构造。即 p 1 ( x ) = l 0 ( x ) ⋅ y 0 + l 1 ( x ) ⋅ y 1 p_1(x)=l_0(x)·y_0+l_1(x)·y_1 p1​(x)=l0​(x)⋅y0​+l1​(x)⋅y1​

2. 抛物插值(三点插值或二次插值)

抛物插值就是通过3个采样点 ( x 0 , y 0 ) , ( x 1 , y 1 ) (x_0,y_0),(x_1,y_1) (x0​,y0​),(x1​,y1​)和 ( x 2 , y 2 ) (x_2,y_2) (x2​,y2​)构造一个二次多项式 p 2 ( x ) p_2(x) p2​(x)来近似代替 f ( x ) f(x) f(x)。根据插值条件(定义1),有: p 2 ( x ) = y , ( i = 0 , 1 , 2 ) p_2(x)=y, \quad(i=0,1,2) p2​(x)=y,(i=0,1,2) 因此,根据插值条件,用待定系数法可以确定出二次多项式 p 2 ( x ) = a 0 + a 1 x + a 2 x 2 p_2(x)=a_0+a_1x+a_2x^2 p2​(x)=a0​+a1​x+a2​x2的各个系数。这里为避免解方程组,使用基函数线性组合的构造方法来求二次多项式 p 2 ( x ) p_2(x) p2​(x)。由线性插值的结论推广可知。该二次多项式 p 2 ( x ) p_2(x) p2​(x)可用3个插值基函数 l 0 ( x ) , l 1 ( x ) l_0(x),l_1(x) l0​(x),l1​(x)和 l 2 ( x ) l_2(x) l2​(x)进行线性组合构造。即: p 2 ( x ) = l 0 ( x ) ⋅ y 0 + l 1 ( x ) ⋅ y 1 + l 2 ( x ) ⋅ y 2 (3) p_2(x)=l_0(x)·y_0+l_1(x)·y_1+l_2(x)·y_2 \tag{3} p2​(x)=l0​(x)⋅y0​+l1​(x)⋅y1​+l2​(x)⋅y2​(3) 3个插值基函数在插值节点 x 0 , x 1 x_0,x_1 x0​,x1​和 x 2 x_2 x2​处应该分别满足: l 0 ( x 0 ) = 1 l 0 ( x 1 ) = 0 l 0 ( x 2 ) = 0 l 1 ( x 0 ) = 0 l 1 ( x 1 ) = 1 l 1 ( x 2 ) = 0 l 2 ( x 0 ) = 0 l 2 ( x 1 ) = 0 l 2 ( x 2 ) = 1 l_0(x_0)=1 \quad l_0(x_1)=0 \quad l_0(x_2)=0 \\ l_1(x_0)=0 \quad l_1(x_1)=1 \quad l_1(x_2)=0 \\ l_2(x_0)=0 \quad l_2(x_1)=0 \quad l_2(x_2)=1 l0​(x0​)=1l0​(x1​)=0l0​(x2​)=0l1​(x0​)=0l1​(x1​)=1l1​(x2​)=0l2​(x0​)=0l2​(x1​)=0l2​(x2​)=1 即只要确定出3个插值基函数即可。

根据 l 0 ( x 1 ) = l 0 ( x 2 ) = 0 l_0(x_1)=l_0(x_2)=0 l0​(x1​)=l0​(x2​)=0,可假设 l 0 ( x ) = C ( x − x 1 ) ( x − x 2 ) l_0(x)=C(x-x_1)(x-x_2) l0​(x)=C(x−x1​)(x−x2​);将 l 0 ( x 0 ) = 1 l_0(x_0)=1 l0​(x0​)=1代入,得: C ( x 0 − x 1 ) ( x 0 − x 2 ) = 1 C(x_0-x_1)(x_0-x_2)=1 C(x0​−x1​)(x0​−x2​)=1 即 C = 1 ( x 0 − x 1 ) ( x 0 − x 2 ) C=\frac{1}{(x_0-x_1)(x_0-x_2)} C=(x0​−x1​)(x0​−x2​)1​ 所以 l 0 ( x ) = ( x − x 1 ) ( x − x 2 ) ( x 0 − x 1 ) ( x 0 − x 2 ) (4) l_0(x)=\frac{(x-x_1)(x-x_2)}{(x_0-x_1)(x_0-x_2)} \tag{4} l0​(x)=(x0​−x1​)(x0​−x2​)(x−x1​)(x−x2​)​(4) 同理 l 1 ( x ) = ( x − x 0 ) ( x − x 1 ) ( x 2 − x 0 ) ( x 2 − x 1 ) (5) l_1(x)=\frac{(x-x_0)(x-x_1)}{(x_2-x_0)(x_2-x_1)} \tag{5} l1​(x)=(x2​−x0​)(x2​−x1​)(x−x0​)(x−x1​)​(5)

l 2 ( x ) = ( x − x 0 ) ( x − x 1 ) ( x 2 − x 0 ) ( x 2 − x 1 ) (6) l_2(x)=\frac{(x-x_0)(x-x_1)}{(x_2-x_0)(x_2-x_1)} \tag{6} l2​(x)=(x2​−x0​)(x2​−x1​)(x−x0​)(x−x1​)​(6)

这样,由(3)、(4)、(5)和(6)式就构成了抛物插值公式。即: p 2 ( x ) = ( x − x 1 ) ( x − x 2 ) ( x 0 − x 1 ) ( x 0 − x 2 ) ⋅ y 0 + ( x − x 0 ) ( x − x 1 ) ( x 1 − x 0 ) ( x 1 − x 2 ) ⋅ y 1 + ( x − x 0 ) ( x − x 1 ) ( x 2 − x 0 ) ( x 2 − x 1 ) ⋅ y 2 p_2(x)=\frac{(x-x_1)(x-x_2)}{(x_0-x_1)(x_0-x_2)}·y_0 + \frac{(x-x_0)(x-x_1)}{(x_1-x_0)(x_1-x_2)}·y_1+\frac{(x-x_0)(x-x_1)}{(x_2-x_0)(x_2-x_1)}·y_2 p2​(x)=(x0​−x1​)(x0​−x2​)(x−x1​)(x−x2​)​⋅y0​+(x1​−x0​)(x1​−x2​)(x−x0​)(x−x1​)​⋅y1​+(x2​−x0​)(x2​−x1​)(x−x0​)(x−x1​)​⋅y2​ 所以,抛物插值公式由3个二次插值基函数线性组合而成。

3. Lagrange插值

Lagrange插值法就是通过多个采样点 ( x i , y i ) ( i = 0 , 1 , 2 , ⋯   , n ) (x_i,y_i)(i=0,1,2,\cdots,n) (xi​,yi​)(i=0,1,2,⋯,n)构造一个高次多项式 p ( x ) p(x) p(x)来近似代替 f ( x ) f(x) f(x)。关于插值节点数和多项式次数之间的关系,有如下定理:

定理1:在 n + 1 n+1 n+1个互异的插值节点 x 0 , x 1 , x 2 , ⋯   , x n x_0,x_1,x_2,\cdots,x_n x0​,x1​,x2​,⋯,xn​上,满足插值条件定义1式并且次数不高于n的代数多项式 p n ( x ) = a n x n + a n − 1 x n − 1 + ⋯ + a 1 x + a 0 p_n(x)=a_nx^n+a_{n-1}x^{n-1}+\cdots+a_1x+a_0 pn​(x)=an​xn+an−1​xn−1+⋯+a1​x+a0​存在且惟一。

证明:根据插值条件,有: { p n ( x 0 ) = a 0 + a 1 x 0 + a 2 x 0 2 + ⋯ + a n x 0 n = y 0 p n ( x 1 ) = a 0 + a 1 x 1 + a 2 x 1 2 + ⋯ + a n x 1 n = y 1 ⋮ p n ( x n ) = a 0 + a 1 x n + a 2 x n 2 + ⋯ + a n x n n = y n \begin{cases} p_n(x_0)=a_0+a_1x_0+a_2x_0^2+\cdots+a_nx_0^n=y_0 \\ p_n(x_1)=a_0+a_1x_1+a_2x_1^2+\cdots+a_nx_1^n=y_1 \\ \vdots \\ p_n(x_n)=a_0+a_1x_n+a_2x_n^2+\cdots+a_nx_n^n=y_n \end{cases} ⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧​pn​(x0​)=a0​+a1​x0​+a2​x02​+⋯+an​x0n​=y0​pn​(x1​)=a0​+a1​x1​+a2​x12​+⋯+an​x1n​=y1​⋮pn​(xn​)=a0​+a1​xn​+a2​xn2​+⋯+an​xnn​=yn​​ 该式是一个关于未知数 a 0 , a 1 , a 2 , ⋯   , a n a_0,a_1,a_2,\cdots,a_n a0​,a1​,a2​,⋯,an​的线性方程组,其系数矩阵的行列式是Vandermonde(范德蒙)行列式: V = ∣ 1 x 0 x 0 2 ⋯ x 0 n 1 x 1 x 1 2 ⋯ x 1 n ⋮ ⋮ ⋮ ⋮ ⋮ 1 x n x n 2 ⋯ x n n ∣ = ∏ n ≥ i > j ≥ 1 ( x i − x j ) V = \begin{vmatrix} 1 & x_0 & x_0^2 & \cdots & x_0^n \\ 1 & x_1 & x_1^2 & \cdots & x_1^n \\ \vdots &\vdots &\vdots &\vdots &\vdots\\ 1 & x_n & x_n^2 & \cdots & x_n^n \end{vmatrix} = \prod_{n\geq i>j\geq1}(x_i-x_j) V=∣∣∣∣∣∣∣∣∣​11⋮1​x0​x1​⋮xn​​x02​x12​⋮xn2​​⋯⋯⋮⋯​x0n​x1n​⋮xnn​​∣∣∣∣∣∣∣∣∣​=n≥i>j≥1∏​(xi​−xj​) 因为 x i ≠ x j ( i ≠ j ) x_i\neq x_j(i\neq j) xi​​=xj​(i​=j),所以 V ≠ 0 V\neq 0 V​=0。根据Gramer法则,该线性方程组有惟一解 a 0 , a 1 , a 2 , ⋯   , a n a_0,a_1,a_2,\cdots,a_n a0​,a1​,a2​,⋯,an​,从而 p n ( x ) p_n(x) pn​(x)存在且惟一。

根据定理1,由n+1个采样点可以惟一第构造出一个次数不高于n的插值多项式 p n ( x ) p_n(x) pn​(x)。在构造该插值多项式时,同样采用基函数线性组合的构造方法。可认为该插值多项式 p n ( x ) p_n(x) pn​(x)由n+1个插值基函数线性组合而成,其组合系数就是对应插值节点上的函数值 y i ( i = 0 , 1 , 2 , ⋯   , n ) y_i(i=0,1,2,\cdots,n) yi​(i=0,1,2,⋯,n),即: p n ( x ) = l 0 ( x ) y 0 + l 1 ( x ) y 1 + ⋯ + l k ( x ) y k + ⋯ + l n ( x ) y n p_n(x)=l_0(x)y_0+l_1(x)y_1+\cdots+l_k(x)y_k+\cdots+l_n(x)y_n pn​(x)=l0​(x)y0​+l1​(x)y1​+⋯+lk​(x)yk​+⋯+ln​(x)yn​ 或 p n ( x ) = ∑ i = 0 n l i ( x ) y i (7) p_n(x)=\sum_{i=0}^nl_i(x)y_i \tag{7} pn​(x)=i=0∑n​li​(x)yi​(7) 在插值节点 x i x_i xi​上,该多项式满足插值条件: p n ( x i ) = y i , ( i = 0 , 1 , 2 , ⋯   , k , ⋯   , n ) p_n(x_i)=y_i, \quad (i=0,1,2,\cdots,k,\cdots,n) pn​(xi​)=yi​,(i=0,1,2,⋯,k,⋯,n) 因此,为了使插值条件成立,这n+1个插值基函数 l i ( x ) ( i = 0 , 1 , 2 , ⋯   , k , ⋯   , n ) l_i(x)(i=0,1,2,\cdots,k,\cdots,n) li​(x)(i=0,1,2,⋯,k,⋯,n)在n+1个插值节点上必须分别满足: l i ( x k ) = { 0 , k ≠ i 1 , k = i l_i(x_k)=\begin{cases} 0, & k\neq i \\ 1, & k=i \end{cases} li​(xk​)={0,1,​k​=ik=i​ 因此,插值基函数 l i ( x ) l_i(x) li​(x)有一个非零点 x i x_i xi​和n个零点 x 0 , x 1 , ⋯   , x i − 1 , x i + 1 , x n x_0,x_1,\cdots,x_{i-1},x_{i+1},x_n x0​,x1​,⋯,xi−1​,xi+1​,xn​,即可设 l i ( x ) = ( x − x 0 ) ( x − x i ) ⋯ ( x − x i − 1 ) ⋅ C ⋅ ( x − x i + 1 ) ⋯ ( x − x n ) = C ∏ k = 0 , k ≠ i n ( x − x k ) l_i(x)=(x-x_0)(x-x_i)\cdots(x-x_{i-1})·C·(x-x_{i+1})\cdots (x-x_n)=C\prod_{k=0, k\neq i}^n(x-x_k) li​(x)=(x−x0​)(x−xi​)⋯(x−xi−1​)⋅C⋅(x−xi+1​)⋯(x−xn​)=Ck=0,k​=i∏n​(x−xk​) 再由 l i ( x i ) = 1 l_i(x_i)=1 li​(xi​)=1,即可确定它的常系数为 C = 1 ∏ k = 0 , k ≠ i ( x i − x k ) C=\frac{1}{\prod_{k=0,k\neq i}(x_i-x_k)} C=∏k=0,k​=i​(xi​−xk​)1​,最后得到插值基函数为: l i ( x ) = ∏ k = 0 , k ≠ i n ( x − x k ) ∏ k = 0 , k ≠ i n ( x i − x k ) = ∏ k = 0 , k ≠ i n x − x k x i − x k ( i = 0 , 1 , 2 , ⋯   , n ) l_i(x)=\frac{\prod_{k=0,k\neq i}^n(x-x_k)}{\prod_{k=0,k\neq i}^n(x_i-x_k)}=\prod_{k=0,k\neq i}^n\frac{x-x_k}{x_i-x_k} \quad(i=0,1,2,\cdots,n) li​(x)=∏k=0,k​=in​(xi​−xk​)∏k=0,k​=in​(x−xk​)​=k=0,k​=i∏n​xi​−xk​x−xk​​(i=0,1,2,⋯,n) 这样就可得到n+1个插值基函数 l i ( x ) ( i = 0 , 1 , 2 , ⋯   , n ) l_i(x)(i=0,1,2,\cdots,n) li​(x)(i=0,1,2,⋯,n),代入(7)式,就得到Lagrange插值公式: p n ( x ) = ∑ i = 0 n l i ( x ) ⋅ y i = ∑ i = 0 n ( ∏ k = 0 , k ≠ i n x − x k x i − x k ) ⋅ y i (8) p_n(x)=\sum_{i=0}^nl_i(x)·y_i=\sum_{i=0}^n(\prod_{k=0,k\neq i}^n\frac{x-x_k}{x_i-x_k})·y_i \tag{8} pn​(x)=i=0∑n​li​(x)⋅yi​=i=0∑n​(k=0,k​=i∏n​xi​−xk​x−xk​​)⋅yi​(8) Lagrange插值公式具有以下特点:

(1)对称性: p n ( x ) p_n(x) pn​(x)与插值节点的排列顺序无关,只与 ( x i , y i ) ( i = 0 , 1 , 2 , ⋯   , n ) (x_i,y_i)(i=0,1,2,\cdots,n) (xi​,yi​)(i=0,1,2,⋯,n)有关。

(2)n=1为线性插值公式,n=2为抛物插值公式。

(3)当插值节点数变化时,基函数需要重新计算。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3