1.插值多项式的震荡
用 Lagrange 插值多项式近似,虽然随着节点个数的增加,的次数变大,多数情况下误差会变小。但是增大时,的光滑性变坏,有时会出现很大的振荡。理论上,当,在内并不能保证处处收敛于。Runge给出了一个有名的例子:
对于较大的,随着的增大,震荡越来越大,事实上可以证明,仅当时,才有,而在此区间外,是发散的。
高次插值多项式的这些缺陷,促使人们转而寻求简单的低次多项式插值。
2.分段线性插值
简单地说,将每两个相邻的节点用直线连起来,如此形成的一条折线就是分段线性插值函数,记做,它满足,且在每个小区间是线性函数。
可表示为
I_{n}(x)有良好的收敛性,即对于x \in[a, b]有,
有计算点的插值时,只用到左右的两个节点,计算量与节点个数 无关。但越大,分段越多,插值误差越小。实际上用函数表作插值计算时,分段线性插值就足够了,如数学、物理中用的特殊函数表,数理统计中用的概率分布表等。
3.用Matlab实现分段线性插值
用 Matlab 实现分段线性插值不需要编制函数程序,Matlab 中有现成的一维插值函数 interp1。
y=interp1(x0,y0,x,'method')
method 指定插值的方法,默认为线性插值。其值可为:
method值 | 功能 |
---|---|
'nearest' | 最近项插值 |
'linear' | 线性插值 |
'spline' | 逐段3次样条插值 |
'cubic' | 保凹凸性3次插值 |
所有的插值方法要求 x0 是单调的。
当 x0 为等距时可以用快速插值法,使用快速插值法的格为'*nearest'、'*linear'、
'*spline'、'*cubic'。