插值方法介绍

1.插值多项式及存在唯一性

  在科学研究和生产实践活动中所遇到的大量函数,有相当一部分是通过观测或实验得到的,虽然其函数关系\(y=f(x)\)在某个区间\([a,b]\)上是存在的,但是却不知道具体的解析表达式,只能通过观测或实验得到一些离散点的函数值、导数值,因此希望对这样的函数用一个简单的解析表达式近视地给出整体上的描述。还有些函数,虽然有明确的解析表达式,但却由于解析表达式过于复杂而不便对其进行理论分析和数值计算,同时希望给出一个既能反映函数特性又适于数值计算的简单函数,来近似代替原来的函数。
  定义1:已知函数\(y=f(x)\)在区间\([a,b]\)\(n+1\)个不同点\(a\leq x_0 < x_1 < x_2 < \cdots < x_n \leq b\)的函数值\(f(x_0),f(x_1),\cdots,f(x_n)\),若存在一个简单函数\(P(x)\),使其经过\(y=f(x)\)上的\(n+1\)个已知点\((x_0,y_0),(x_1,y_1),\cdots,(x_n,y_n)\)
\[ P(x_i)=y_i=f(x_i),\ i=0,1,2,\cdots,n\ (1) \]

成立,则称\(P(x)\)\(f(x)\)插值函数,点\(x_0,x_1,\cdots,x_n\)称为插值节点,包含插值节点的区间\([a,b]\)称为插值区间,求插值函数\(P(x)\)的方法称为插值方法。若\(P(x)\)是次数不超过\(n\)的多项式,即
\[ P_n(x) = a_0 + a_1 x + a_2 x^2 + \cdots + a_n x^n \ (2) \]

其中\(a_i\)是实数,则称\(P(x)\)插值多项式,相应的插值方法称为多项式插值。若\(P(x)\)为分段多项式,则称为分段插值。若\(P(x)\)为三角多项式,则称为三角插值
  寻找满足(1)的插值函数\(P(x)\)的方法很多。\(P(x)\)既可以是代数多项式、三角多项式等有理函数,也可以是任意光滑或分段光滑函数。不同的插值函数\(P(x)\),逼近\(f(x)\)的效果不同。寻找插值函数\(P(x)\),首先想到的是多项式函数,这是因为多项式函数不仅表达式简单,而且有很多很好的特性,如连续光滑、可微可积,另外由Weierstrass定理知,任意连续函数都可以用代数多项式作任意精度的逼近,同时,代数多项式还是其他各类插值的基础。
  定理1(插值多项式存在唯一性):设节点\(x_0,x_1,\cdots,x_n\)互异,则在次数不超过\(n\)的多项式集合\(H_n\)中,满足条件(1)的插值多项式\(P_n(x)\)存在且唯一。

2. Lagrange插值

2.1 Lagrange插值多项式

  求插值多项式\(P_n(x)\),可以通过求方程组(3)的解\(a_0,a_1,\cdots,a_n\)得到,但这种算法计算量大,不便于实际应用。
\[ \left\{ \begin{aligned} a_0 + a_1 x_0 + \cdots + a_n x_0^n & = y_0, \\ a_0 + a_1 x_1 + \cdots + a_n x_1^n & = y_1, \\ \vdots & \ (3) \\ a_0 + a_1 x_n + \cdots + a_n x_n^n & = y_n, \end{aligned} \right. \]

  设\(\phi(c_1,c_1,\cdots,c_n)\)是次数不超过\(n\)的多项式空间,构造\(\phi(c_1,c_1,\cdots,c_n)\)的一组基函数\(l_0(x),l_1(x),\cdots,l_n(x)\),使求插值多项式
\[ L_n(x)=\sum _{i=0}^{n} a_i l_i(x) \ (4) \]

中的系数\(a_i\)变得更容易。
\(L_n(x)\)可写成
\[ L_n(x) = (l_0(x),l_1(x),\cdots,l_n(x))(a_0,a_1,\cdots,a_n)^T \ (5) \]

\[ L_n(x_i) = f(x_i), \ i=0,1,\cdots,n. (6) \]


\[ \left[ \begin{matrix} l_0(x_0) & l_1(x_0) & \cdots & l_n(x_0) \\ l_0(x_1) & l_1(x_1) & \cdots & l_n(x_1) \\ \vdots & \vdots & & \vdots \\ l_0(x_n) & l_1(x_n) & \cdots & l_n(x_n) \end{matrix} \right] \left[ \begin{matrix} a_0 \\ a_1 \\ \vdots \\ a_n \end{matrix} \right] \left[ \begin{matrix} f(x_0) \\ f(x_1) \\ \vdots \\ f(x_n) \end{matrix} \right] (7) \]

若方程组(7)的系数矩阵为单位矩阵,则立即可得
\[ a_i = f(x_i),\ i = 0,1,\cdots,n. \ (8) \]
要使方程组(7)的系数矩阵为单位矩阵,只需
\[ l_i(x_j) = \delta _{ij} = \left \{ \begin{aligned} 1, & & i = j, \\ 0, & & i \neq j, \end{aligned} \right. \ i,j = 0,1,\cdots,n. \ (9) \]

于是在多项式空间\(\phi(c_1,c_1,\cdots,c_n)\)内,寻求一组基函数\(l_0(x),l_1(x),\cdots,l_n(x)\),使方程组(7)的系数矩阵为单位矩阵,就转化为构造满足条件(9)的基函数\(l_i(x)\),由于\(l_i(x)\)\(x=x_j(j=0,1,\cdots,i-1,i+1,\cdots,n)\)时的值为\(0\),故可令
\[ l_i(x) = A(x-x_0)(x-x_1)\cdots(x-x_{i-1})(x-x_{i+1})\cdots(x-x_n) \ (10) \]

其中\(A\)为待定常数。在式(10)中令\(x=x_i\),则可确定\(A\)
\[ A = \frac 1 {(x_i-x_0)(x_i-x_1)\cdots(x_i-x_{i-1})(x_i-x_{i+1})\cdots(x_i-x_n)} \]

从而
\[ \begin{aligned} l_i(x) & = \frac {(x-x_0)(x-x_1)\cdots(x-x_{i-1})(x-x_{i+1})\cdots(x-x_n)} {(x_i-x_0)(x_i-x_1)\cdots(x_i-x_{i-1})(x_i-x_{i+1})\cdots(x_i-x_n)} \\ & = \prod _{j=0, j\neq i}^{n} \frac {x-x_j}{x_i-x_j} \ (11) \end{aligned} \]


\[ \omega_{n+1}(x) = \prod _{i=0}^n (x-x_i) \ (12) \]


\[ l_i(x) = \frac {\omega_{n+1}(x)}{(x-x_i)w'_{n+1}(x_i)} \ (13) \]

于是可得满足条件(1)的\(n\)次插值多项式
\[ L_n(x) = \sum _{i=0}^n f(x_i)l_i(x) \ (14) \]

\(L_n(x)\)Lagrange插值多项式\(l_i(x)\)Lagrange插值基函数

2.2 线性插值与抛物线插值

  已知函数\(y=f(x)\)在点\(x_0,x_1\)处的函数值分别为\(y_0,y_1\)。在式(14)中令\(n=1\),Lagrange插值多项式为
\[ \begin{aligned} L_1(x) & = f(x_0)l_0(x) + f(x_1)l_1(x) \\ & = y_0 \frac {x-x_1}{x_0-x_1} + y_1 \frac {x-x_0}{x_1-x_0} \\ & = y_0 + \frac {y_1-y_0}{x_1-x_0}(x-x_0) \end{aligned} \ (15) \]

其中
\[ l_0(x) = \frac {x-x_1}{x_0-x_1},\ l_1(x) = \frac {x-x_0}{x_1-x_0} \]

是经过两点\((x_0,y_0),(x_1,y_1)\)的一条直线,因此这种方法通常称为线性插值
  已知函数\(y=f(x)\)在点\(x_0,x_1,x_2\)处的函数值分别为\(y_0,y_1,y_2\)。在式(14)中令\(n=2\),Lagrange插值多项式为
\[ \begin{aligned} L_2(x) & = f(x_0)l_0(x) + f(x_1)l_1(x) + f(x_2)l_2(x) \\ & = y_0 \frac {(x-x_1)(x-x_2)}{(x_0-x_1)(x_0-x_2)} + y_1 \frac {(x-x_0)(x-x_2)}{(x_1-x_0)(x_1-x_2)} + y_2 \frac {(x-x_0)(x-x_1)}{(x_2-x_0)(x_2-x_1)} \\ & = y_0 + \frac {y_1-y_0}{x_1-x_0}(x-x_0) \end{aligned} \ (16) \]

其中
\[ l_0(x) = \frac {(x-x_1)(x-x_2)}{(x_0-x_1)(x_0-x_2)}, \ l_1(x) = \frac {(x-x_0)(x-x_2)}{(x_1-x_0)(x_1-x_2)}, \ l_2(x) = \frac {(x-x_0)(x-x_1)}{(x_2-x_0)(x_2-x_1)} \]

式(16)是二次函数,是经过\((x_0,y_0),(x_1,y_1),(x_2,y_2)\)的抛物线,因此这种方法通常称为抛物线插值

猜你喜欢

转载自www.cnblogs.com/dysjtu1995/p/11114821.html