插值与拟合

一、插值

1、插值:求过已知有限个数据点的近似函数

      基本问题:已知实验数据如下,求x与y的函数关系f(x)

                  插值与拟合_第1张图片

2、插值多项式

求已知函数f(x)在区间 [a,b] 上的n+1个不同点 x_{0},x_{1},\cdots,x_{n} 处的函数值 y_{i}=f(x_{i})\: \: (i=0,1,\cdots,n) 

求一个至多n次的多项式

             \varphi _{n}(x)=a_{0}+a_{1}x+\cdots +a_{n}x^{n}                                (1)

使其满足在给定点处于f(x)同值,即满足插值条件

              \varphi _{n}(x_{i})=f(x_{i})=y_{l}\: \: \: (i=0,1,\cdots,n)                      (2)

n次多项式(1)有n+1个待定系数,由插值条件(2)给出n+1个方程

              \left\{\begin{matrix} a_{0}+a_{1}x_{0}+a_{2}x_{0}^{2}+\cdots+a_{n}x_{0}^{n}=y_{0}\\ a_{0}+a_{1}x_{1}+a_{2}x_{1}^{2}+\cdots+a_{n}x_{1}^{n}=y_{1}\\ \cdots\cdots\cdots\cdots\cdots\cdots\\ a_{0}+a_{1}x_{n}+a_{2}x_{n}^{2}+\cdots+a_{n}x_{n}^{n}=y_{n} \end{matrix}\right. \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \:(3 )               

即此方程组的系数矩阵为A,则

             det(A)=\begin{vmatrix} 1 &x_{0} &x_{0}^{2} &\cdots &x_{0}^{n} \\ 1 & x_{1} & x_{1}^{2} & \cdots &x_{1}^{n} \\ && \cdots \\ 1 & x_{n} & x_{n}^{2} & \cdots & x_{n}^{n} \end{vmatrix}

是范德蒙特行列式,因为x_{0},x_{1},\cdots,x_{n}互不相同,此行列式值不为零,有唯一解

             a_{i}=\frac{|A^{*}_{i}|}{|A|}

3、拉格朗日插值多项式

(1)先构造一组基函数 l_{i}(x)\: \: \: (i=1,2,\cdots,n),使得

            P_{n}(x_{i})=\sum_{j=0}^{n}y_{j}l_{j}(x_{i})=y_{i} 

展开上式即:

            

l_{i}(x)\: \: \: (i=1,2,\cdots,n) 是满足

            l_{i}(x_{i})=\left\{\begin{matrix} 0,j\neq i\\ 1,j= i \end{matrix}\right.

           I_{n+1}=\begin{pmatrix} l_{0}(x_{0}) & l_{0}(x_{1}) &\cdots &l_{0}(x_{i-1}) & l_{0}(x_{i}) &l_{0}(x_{i+1}) & \cdots&l_{0}(x_{n}) \\ l_{1}(x_{0}) & l_{1}(x_{1}) &\cdots &l_{1}(x_{i-1}) & l_{1}(x_{i}) &l_{1}(x_{i+1}) & \cdots&l_{1}(x_{n}) \\ & & \cdots \cdots\cdots\cdots \\ l_{i-1}(x_{0}) & l_{i-1}(x_{1}) &\cdots &l_{i-1}(x_{i-1}) & l_{i-1}(x_{i}) &l_{i-1}(x_{i+1}) & \cdots&l_{i-1}(x_{n}) \\ l_{i}(x_{0}) & l_{i}(x_{1}) &\cdots &l_{i}(x_{i-1}) & l_{i}(x_{i}) &l_{i}(x_{i+1}) & \cdots&l_{i}(x_{n}) \\ & & \cdots \cdots\cdots\cdots \\ l_{n}(x_{0}) & l_{n}(x_{1}) &\cdots &l_{n}(x_{i-1}) & l_{n}(x_{i}) &l_{n}(x_{i+1}) & \cdots&l_{n}(x_{n}) \end{pmatrix}

      l_{0}=\alpha (x-x_{1})\cdots(x-x_{n})\: \: \: \: \:      ( \alpha为参数) 

可知

      l_{0}(x_{0})=1\: \: \: \: \: \: l_{i}x(x_{i})=0,i=1,2,\cdots,n

      \alpha =\frac{1}{(x_{0}-x_{1})\cdots(x_{0}-x_{n})}                l_{0}(x)=\frac{(x-x_{1})\cdots(x-x_{n})}{(x_{0}-x_{1})\cdots(x_{0}-x_{n})}

P_{n}(x) 通式为

        P_{n}(x)=\sum ^{n}_{i=0}y_{i}l_{i}(x)=\sum ^{n}_{i=0}y_{i}\begin{pmatrix} \prod_{j=0,j\neq i}^{n}\: \: \frac{x-x_{j}}{x_{i}-x_{j}} \end{pmatrix}   

4、注意事项

(1)上述拟合方法不适合高阶函数,当阶数大于10时,可以采用分段拟合.

二、拟合

1、拟合:已知有限个函数点,求近似函数,不要求过已知数据点,只要求在某种意义下它在这些点上的总偏差最小.

2、多项式拟合方法

      如果取 \begin{Bmatrix} r_{1}(x),\cdots,r_{m+1}(x)} \end{Bmatrix}= \begin{Bmatrix} 1,x,\cdots,x^{m} \end{Bmatrix} ,,即用 m 次多项式拟合给定数据,Matlab中有现成的函数

                a=polyfit(x0,y0,m)

其中输入参数 x0,y0 为要拟合的数据,m 为拟合多项式的次数,输出参数 a 为拟合多项式

y=a_{m}x^{m}+\cdots+a_{1}x+a_{0},系数 a=[a_{m},\cdots,a_{1},a_{0}] ,多项式在 x 处的值 y 可用下面的函数计算 y=polyval(a,x).

 

你可能感兴趣的:(插值与拟合)