插值介绍
信号插值,就是用已知点的测量值估计未知点的近似值。信号插值算法的应用范围有:
- 提高显示效果;
- 节省硬件成本,以软代硬;
- 减少远距离、大量数据通信的需要;
- 进行数据、图像解压缩
- 求解微分方程、积分方程;
- 计算函数值、零点、极值点、导数以及积分。
插值与拟合的异同点:
- 相同点:插值已知一些离散点,在一定约束下,求取定义在连续集合上的未知连续函数。
- 在图像上面不同:插值在图像上是一定得通过这些点,而拟合是拟合在图像上是逼近这些点。
- 在几何含义上不同:插值是找到一个(或几个分片光滑的)连续曲面来穿过这些点,拟合是给定了空间中的一些点,找到一个已知形式 未知参数的连续曲面来最大限度地逼近这些点。
多项式插值
对于n+1个点,我们可以找到一个次数不超过n的插值多项式:,可以通过求解n+1个方程组(如方程组\ref{多项式拟合方程组}),得到
若方程组的解唯一,则对应的插值多项式具有唯一性。多项式拟合一般具有原理简单、计算复杂、难以得到简单的多项式等特点。
三次样条插值
函数定义在区间上,给定n+1个节点和一组与之对应的函数值,且函数满足:1,每个节点上满足;2,在上有连续的二阶导数;3.在每个小区间上是一个三次多项式,则称为三次样条插值函数。
三次样条插值函数是一个分段三次多项式,要求出,在每个小区间上要确定4个待定参数,若用表示它在第i个子区间上的表达式,则:
举个例子
已知函数y=f(x)的一组数据如表表格:
x | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
y | 12.34 | 13.02 | 13.98 | 13.52 | 12.81 | 11.08 | 9.96 | 9.51 | 10.23 | 11.14 | 12.25 |
对这些数据进行多项式插值和三次样条插值,并求:x= 3.5, 4.1, 6.2, 4.5时,y相应的多项式插值和三次样条插值函数值。
绘制函数y=f(x)在区间[0, 10]上的多项式插值函数图形,并将已知点用“”标出。
绘制函数y=f(x)在区间[0, 10]上的三次样条插值函数图形,并将已知点用“”标出。
分析
本题要求依据所给数据计算多项式插值和三次样条插值,并求出特定自变量下插值的函数值,以及绘制函数图像。使用matlab的多项式插值函数和三次样条插值函数进行计算。其中的和为原始数据点,为拟合阶数,返回值为多项式的系数;的和为原始数据点。
求指定的y值
多项式插值
将给定的x和y数据导入matlab,并计算多项式系数。一共11个点,故选取10次多项式进行插值,使用polyfit命令。求得的插值系数用poly2str指令组装成插值多项式,多项式的函数表达式为:.将x=(3.5,4.1,6.2,4.5)带入,解得y的值为:13.3404,12.6595,9.8347,11.9664.将结果制表、绘图,如下表、下图:
x | 3.5 | 4.1 | 6.2 | 4.5 |
y | 13.3404 | 12.6595 | 9.8347 | 11.9664 |
样条插值
样条插值所用命令为spline,官方介绍spline函数的输入输出为yy = spline(x,y,xx);其中x和y为已知点,xx为待求点x轴坐标,yy即为输出对应待求点的y轴坐标。
故运行命令y3=spline(x,y,x1);即可得到待求点的样条插值。y3的值为: 13.2476, 12.6730, 9.8032, 11.9877.将结果制表、绘图,如下表、下图:
x | 3.5 | 4.1 | 6.2 | 4.5 |
y | 13.2476 | 12.6730 | 9.8032 | 11.9877 |
插值求函数图形
多项式插值
将x在0-10上间隔采样,得到的值带入上述求值函数中,可以得到对应的y值,再将(x,y)坐标用绘图命令绘制,即得插值函数图形。函数t=f(x)在区间[0,10]上的多项式插值函数图形如图所示:
样条插值
x在0-10上间隔采样,得到的值带入yy=spline(x,y,xx)的xx里面,返回值为与xx拥有相同维度的yy,yy为样条插值的输出结果。绘图,函数t=f(x)在区间[0,10]上的样条插值函数图形如图所示:
总结
- 多项式插值先设插值多项式函数,再将各节点的函数值代入多项式里,便得到个等式,得到一个关于多项式里系数的线性方程组,解此线性方程组,便得到所要求的插值多项式。
- 样条插值是对每一个小区间进行插值,使得端点处满足某种条件的光滑(本文所用的三次样条插值则要满足二阶导数连续),根据这个要求,在未知导数的情况下推导出样条函数。
- 本次作业练习了多种插值的求解方法,一定的数据求解让我对插值的含义和运用场景有了更多的认识。在插值求解函数图像时,似乎多项式插值比样条插值更光滑,但是多项式插值的求解涉及大型矩阵求逆,且过分强调每一个数据,在预测未知量时泛化能力可能有所欠缺。
程序
matlab的.m程序下载链接: 用matlab对一组数据求解多项式插值和三次样条插值.