数值分析:插值与拟合

2019-04-17  本文已影响0人  Bocchi

1 插值

定义 设函数y=f(x)在区间[a,b]上的n+1个点,a\leq x_0,x_1,...,x_n\leq b上的函数值为y_0,y_1,...,y_n,若粗在函数P(x),使P(x_i)=y_i,i=0,1,...n成立,则称函数P(x)f(x)插值函数f(x)称为被插值函数,点x_0,x_1,...,x_n称为 插值节点,包含插值节点的区间[a,b]称为 插值区间

在这里我们进讨论 多项式插值分段插值

多项式插值

定理1 在n+1个相异插值节点x_0,x_1,...,x_n处取给定值y_0,y_1,...,y_n的次数不高于n的插值多项式存在且唯一(可以通过非齐次线性方程组的范德蒙德行列式证明)


2 拉格朗日插值

2.1 拉格朗日插值多项式

用类似的推导方式可以证明,n+1个节点的拉格朗日插值多项式应定义为如下形式。
定义y=f(x)在插值节点x_0,x_1,...,x_n上的 拉格朗日插值多项式 L_n(x)L_n(x)=y_0l_0(x)+y_1l_1(x)+...+y_nl_n(x)=\sum\limits_{i=0}^ny_il_i(x)其中l_i(x)=\frac{x-x_0}{x_i-x_0}\frac{x-x_1}{x_i-x_1}...\frac{x-x_n}{x_i-x_n},i=0,1,...n l_i(x)称为 插值基函数


2.2 插值余项

若在[a,b]上使用L_n(x)近似f(x),则其截断误差为R_n(x)=f(x)-L_n(x),也称为 插值多项式的余项。关于插值余项估计有如下定理

定理2 设f^{(n)}(x)在区间[a,b]上连续,f^{(n+1)}(x)在区间(a,b)内存在,L_n(x)是以a\le x_0<x_1<...<x_n\le b为节点的拉格朗日插值多项式,则对任何x\in [a,b] R_n(x)=f(x)-L_n(x)=\frac{f^{(n+1)}(\xi)}{(n+1)!}\omega_{n+1}(x) \omega_{n+1}(x)=(x-x_0)(x-x_1)...(x-x_n)
这里\xi\in(a,b)且依赖于x


2.3 算法步骤

(1) 输入x,x_i,y_i,(i=0,1,...,n)
(2) 对i=0,1,...,n计算l_i=\prod\limits_{j=o,j\neq i}^n\frac{x-x_j}{x_i-x_j}
(3) 计算L=\sum\limits_{i=0}^ny_il_i
(4) 输出L \approx f(x),结束


2.4 注意事项

3 差商与牛顿插值

3.1 差商

定义 设已给插值节点x_0,x_1,...,x_n以及相应的函数值f(x_0),f(x_1),...,f(x_n)f[x_0,x_1]=\frac{f(x_1)-f(x_0)}{x_1-x_0}为函数y=f(x)关于点x_0,x_1一阶差商,称f[x_0,x_1,x_2]=\frac{f[x_1,x_2]-f[x_0,x_1]}{x_2-x_0}为函数y=f(x)关于点x_0,x_1,x_2二阶差商,称f[x_0,x_1,...,x_k]=\frac{f[x_1,x_2,...,x_k]-f[x_0,x_1,...,x_{k-1}]}{x_k-x_0}为函数y=f(x)关于点x_0,x_1,x_2k阶差商


3.2 差商的性质

3.3 牛顿插值多项式

由差商的定义可导出f(x)=N_n(x)+R_n(x)其中\begin{align} N_n(x)=&f(x_0)+(x-x_0)f[x_0,x_1]+(x-x_0)(x-x_1)f[x_0,x_1,x_2]+...\\ &+(x-x_0)(x-x_1)...(x-x_{n-1})f[x_0,x_1,...,x_n]\\ \end{align}称为牛顿插值多项式R_n(x)=f[x,x_0,x_1,...,x_n]\omega_{n+1}(x)称为牛顿插值多项式的余项


3.4 算法步骤

(1) 输入x,x_i,y_i(i=0,1,...,n)
(2) 对i=0,1,...,n计算f_i=y_i
(3)对i=1,2,...,n计算f_k=\frac{f_{k-1}-f_k}{x_{k-1}-x_k}(k=n,n-1,...,i)
(3) 计算p=f_0+\sum\limits_{k=0}^n{f_k(\prod\limits_{j=0}^{k-1}(x-x_j))}
(4) 输出p \approx f(x),结束


4 Hermite插值

4.1 Hermite插值多项式及其余项

Hermite插值多项式:H_{2n+1}(x)=\sum\limits_{j=0}^n[y_j\alpha_j(x)+y_j'\beta_j(x)]其中\alpha_j(x)=\left[1-2(x-x_j)\sum\limits_{k=0,k\neq j}^n\frac{1}{x_j-x_k}\right]l^2_j(x) \beta_j(x)=(x-x_j)l_j^2(x)余项:R_{2n+1}(x)=\frac{f^{(2n+2)}}{2n+2}\omega^2_{n+1}(x)其中\omega_{n+1}(x)=\prod\limits_{i=0}^n(x-x_i),\xi\in [a,b]


4.2 两点三次Hermite插值多项式

已知y=f(x)[a,b]上的节点x_0,x_1上的函数值y_0,y_1及一阶导数值y_0',y_1',则三次Hermite插值多项式\begin{align} H_3(x)=&y_0\alpha_0(x)+y_1\alpha_1(x)+y_0'\beta_0(x)+y_1'\beta_1(x)\\ =&y_0\left(1-2\frac{x-x_0}{x_0-x_1}\right)\left(\frac{x-x_1}{x_0-x_1}\right)^2+y_1\left(1-2\frac{x-x_1}{x_1-x_0}\right)\left(\frac{x-x_1}{x_0-x_1}\right)^2\\ &+y_0'(x-x_0)\left(\frac{x-x_1}{x_0-x_1}\right)^2+y_1'(x-x_1)\left(\frac{x-x_0}{x_1-x_0}\right)^2\\ \end{align}余项R_3(x)=\frac{f^{(4)}(\xi)}{4!}(x-x_0)^2(x-x_i)^2,\xi\in[a,b]


5 分段低次插值

5.1 龙格现象

随着插值多项式次数的增大,插值函数L_n(x)在两端会发生激烈的震荡,这就是龙格现象

5.2 分段线性插值

对给定区间[a,b]做分割:a=x_0<x_1<...<x_n=b,在每个小区间[x_i,x_{i+1}]上以x_i,x_{i+1}为节点作f(x)的线性插值:S_i(x)=\frac{x-x_{i+1}}{x_i-x_{i+1}}f(x_i)+\frac{x-x_i}{x_{i+1}-x_i}f(x_{i+1}),x\in[x_i,x_{i+1}]把每个小区间上的线性插值函数连起来,就得到了分段线性插值函数S(x)
误差公式为|f(x)-S(x)|\leq\frac{M_2}{8}(x_i-x_{i+1})^2,M_2=\max\limits_{a\leq x\leq b}|f''(x)|

5.3 分段三次Hermite插值

对给定区间[a,b]做分割:a=x_0<x_1<...<x_n=b,在每个小区间[x_i,x_{i+1}]上以x_i,x_{i+1}为节点作分段三次Hermite插值:\begin{align} S_i(x)=&f(x_i)\left(1-2\frac{x-x_i}{x_i-x_{i+1}}\right)\left(\frac{x-x_{i+1}}{x_i-x_{i+1}}\right)^2\\ &+f(x_{i+1})\left(1-2\frac{x-x_{i+1}}{x_i-x_{i+1}}\right)\left(\frac{x-x_i}{x_{i+1}-x_{i}}\right)^2\\ &+f'(x_i) (x-x_i)\left(\frac{x-x_{i+1}}{x_i-x_{i+1}}\right)^2\\ &+f'(x_{i+1}) (x-x_{i+1})\left(\frac{x-x_i}{x_{i+1}-x_{i}}\right)^2\\ \end{align}误差公式为|f(x)-S(x)|\leq\frac{h^4}{384}\max\limits_{x_i\leq x \leq x_{i-1}}|f^{(4)}(x)|,h=\max\limits_{0\leq i \leq n-1}|x_{i+1}-x_i|


5 最小二乘拟合

定义 确定a_k(k=0,1,...,m使得R(a_0,a_1,...,a_m)=\sum\limits_{k=1}^n(\varphi(x_k)-y_k)^2最小问题称为观测数据的最小二乘拟合问题。若函数系\{b_k(x)\}为幂函数系\{x^k\},此时的到的\varphi(x)称为回归曲线


5.1 最小二乘法

由于R({{a}_{0}},{{a}_{1}},...,{{a}_{m}})\ge 0,且为连续函数,故一定存在一组{{a}_{k}}(k=0,1,...,m)使其达到极小值,这时我们只需要求出驻点即可。
因此我们假设y=f(x)的观测数据为({{x}_{k}},{{y}_{k}})(k=1,2,...,n),对于\varphi(x)m次回归曲线,通过求解正规方程组可以求出{{a}_{k}}(k=0,1,...,m)的值,可求得近似函数f(x)\left( \begin{matrix} n & \sum\limits_{k=1}^n x_k & \sum\limits_{k=1}^n x^2_k & \cdots & \sum\limits_{k=1}^n x^m_k\\ \sum\limits_{k=1}^n x_k & \sum\limits_{k=1}^n x^2_k & \sum\limits_{k=1}^n x^3_k & \cdots & \sum\limits_{k=1}^n x^{m+1}_k\\ \vdots & \vdots & \vdots & \ddots & \vdots\\ \sum\limits_{k=1}^n x^m_k & \sum\limits_{k=1}^n x^{m+1}_k & \sum\limits_{k=1}^n x^{m+2}_k& \cdots & \sum\limits_{k=1}^n x^{2m}_k\\ \end{matrix} \right) \left( \begin{matrix} a_0 \\ a_1 \\ \vdots \\ a_m \\ \end{matrix} \right)= \left( \begin{matrix} \sum\limits_{k=1}^n y_k \\ \sum\limits_{k=1}^n x_ky_k \\ \vdots \\ \sum\limits_{k=1}^n x_k^my_k \\ \end{matrix} \right)

解题时,先写出正规方程组所需数据的数据表,再求解即可得到参数


5.2 最小二乘法的病态现象

衡量一个线性方程组是否“病态”及其病态程度,可通过矩阵的条件数理论来完成。若线性方程组系 数矩阵A的条件数 Cond(A)\gg 1,则该方程组“病态”,并且系数矩阵的条件数越大,方程组的“病态”程度就越严重,其解随系数矩阵或自由项的变化(灵敏度)就越大。

上一篇下一篇

猜你喜欢

热点阅读