插值介绍
信号插值,就是用已知点的测量值估计未知点的近似值。信号插值算法的应用范围有:
- 提高显示效果;
- 节省硬件成本,以软代硬;
- 减少远距离、大量数据通信的需要;
- 进行数据、图像解压缩
- 求解微分方程、积分方程;
- 计算函数值、零点、极值点、导数以及积分。
插值与拟合的异同点:
- 相同点:插值已知一些离散点,在一定约束下,求取定义在连续集合上的未知连续函数。
- 在图像上面不同:插值在图像上是一定得通过这些点,而拟合是拟合在图像上是逼近这些点。
- 在几何含义上不同:插值是找到一个(或几个分片光滑的)连续曲面来穿过这些点,拟合是给定了空间中的一些点,找到一个已知形式 未知参数的连续曲面来最大限度地逼近这些点。
多项式插值
对于n+1个点,我们可以找到一个次数不超过n的插值多项式:
f
=
a
n
∗
X
n
+
a
(
n
−
1
)
∗
X
n
−
1
+
⋯
+
a
1
∗
X
+
a
0
f=an*X^{n}+a(n-1) * X^{n-1}+\dots+a1*X+a0
f=an∗Xn+a(n−1)∗Xn−1+⋯+a1∗X+a0,可以通过求解n+1个方程组(如方程组\ref{多项式拟合方程组}),得到
a
0
,
a
1
,
a
2
,
…
a_0,a_1,a_2,\dots
a0,a1,a2,…
{
y
1
=
a
0
+
a
1
x
1
+
⋯
+
a
n
+
1
x
1
n
y
2
=
a
0
+
a
1
x
2
+
⋯
+
a
n
+
1
x
2
n
…
y
n
+
1
=
a
0
+
a
1
x
n
+
1
+
⋯
+
a
n
+
1
x
n
+
1
n
\left\{\begin{aligned} y_1&=a_0+a_1x_1+\dots+a_{n+1}x_1^{n}\\ y_2&=a_0+a_1x_2+\dots+a_{n+1}x_2^{n}\\ &\dots\\ y_{n+1}&=a_0+a_1x_{n+1}+\dots+a_{n+1}x_{n+1}^{n}\\ \end{aligned}\right.
⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧y1y2yn+1=a0+a1x1+⋯+an+1x1n=a0+a1x2+⋯+an+1x2n…=a0+a1xn+1+⋯+an+1xn+1n
若方程组的解唯一,则对应的插值多项式具有唯一性。多项式拟合一般具有原理简单、计算复杂、难以得到简单的多项式等特点。
三次样条插值
函数定义在区间 [ a , b ] [a,b] [a,b]上,给定n+1个节点和一组与之对应的函数值,且函数满足:1,每个节点上满足 S ( x i ) = f ( x i ) ( i = 0 , 1 , … , n − 1 ) S(x_i)=f(x_i) (i=0,1,\dots,n-1) S(xi)=f(xi)(i=0,1,…,n−1);2,在 [ a , b ] [a,b] [a,b]上有连续的二阶导数;3.在每个小区间 [ x i , x i + 1 ] ( i = 0 , 1 , … , n − 1 ) [x_i,x_{i+1}] (i=0,1,\dots,n-1) [xi,xi+1](i=0,1,…,n−1)上是一个三次多项式,则称 S ( x i ) S(x_i) S(xi)为三次样条插值函数。
三次样条插值函数
S
(
x
)
S(x)
S(x)是一个分段三次多项式,要求出
S
(
x
)
S(x)
S(x),在每个小区间
[
x
i
,
x
i
+
1
]
[x_i,x_{i+1}]
[xi,xi+1]上要确定4个待定参数,若用
S
i
(
x
)
S_i(x)
Si(x)表示它在第i个子区间
[
x
i
,
x
i
+
1
]
[x_i,x_{i+1}]
[xi,xi+1]上的表达式,则:
S
i
(
x
)
=
a
i
0
+
a
i
1
x
+
a
i
2
x
2
+
a
i
3
x
3
(
i
=
0
,
1
,
⋯
,
n
−
1
)
S_{i}(x)=a_{i 0}+a_{i 1} x+a_{i 2} x^{2}+a_{i 3} x^{3} \quad(i=0,1, \cdots, n-1)
Si(x)=ai0+ai1x+ai2x2+ai3x3(i=0,1,⋯,n−1)
举个例子
已知函数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]上的多项式插值函数图形,并将已知点用“
∘
\circ
∘”标出。
绘制函数y=f(x)在区间[0, 10]上的三次样条插值函数图形,并将已知点用“
×
\times
×”标出。
分析
本题要求依据所给数据计算多项式插值和三次样条插值,并求出特定自变量下插值的函数值,以及绘制函数图像。使用matlab的多项式插值函数 p o l y f i t ( x , y , n ) polyfit(x,y,n) polyfit(x,y,n)和三次样条插值函数 s p l i n e ( x , y , x q ) spline(x,y,xq) spline(x,y,xq)进行计算。其中 p o l y f i t ( x , y ) polyfit(x,y) polyfit(x,y)的 x x x和 y y y为原始数据点, n n n为拟合阶数,返回值为多项式的系数; s p l i n e ( x , y ) spline(x,y) spline(x,y)的 x x x和 y y y为原始数据点。
求指定的y值
多项式插值
将给定的x和y数据导入matlab,并计算多项式系数。一共11个点,故选取10次多项式进行插值,使用polyfit命令。求得的插值系数用poly2str指令组装成插值多项式,多项式的函数表达式为: y = 2.7111 e − 05 x 10 − 0.0013742 x 9 + 0.029925 x 8 − 0.36589 x 7 + 2.7538 x 6 − 13.1433 x 5 + 39.4708 x 4 − 71.2356 x 3 + 68.9205 x 2 − 25.7489 x + 12.34 y=2.7111e-05 x^{10} - 0.0013742 x^9 + 0.029925 x^8 - 0.36589 x^7 + 2.7538 x^6- 13.1433 x^5 + 39.4708x^4 - 71.2356 x^3 + 68.9205 x^2 - 25.7489 x+ 12.34 y=2.7111e−05x10−0.0013742x9+0.029925x8−0.36589x7+2.7538x6−13.1433x5+39.4708x4−71.2356x3+68.9205x2−25.7489x+12.34.将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对一组数据求解多项式插值和三次样条插值.