【数学建模算法】(25)插值与拟合:分段线性插值

1.插值多项式的震荡

用 Lagrange 插值多项式近似,虽然随着节点个数的增加,的次数变大,多数情况下误差会变小。但是增大时,的光滑性变坏,有时会出现很大的振荡。理论上,当,在内并不能保证处处收敛于。Runge给出了一个有名的例子:

对于较大的,随着的增大,震荡越来越大,事实上可以证明,仅当时,才有,而在此区间外,是发散的。

高次插值多项式的这些缺陷,促使人们转而寻求简单的低次多项式插值

2.分段线性插值

简单地说,将每两个相邻的节点用直线连起来,如此形成的一条折线就是分段线性插值函数,记做,它满足,且在每个小区间是线性函数。

可表示为

l_{i}(x)=\left\{\begin{array}{l}{\frac{x-x_{i-1}}{x_{i}-x_{i-1}}},x \in\left[x_{i-1}, x_{i}\right](i=0时舍去) \\ {\frac{x-x_{i+1}}{x_{i}-x_{i+1}}} ,x \in\left[x_{i}, x_{i+1}\right](i=n时舍去)\\ {0},其他\end{array}\right.

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'。

你可能感兴趣的:(【数学建模算法】(25)插值与拟合:分段线性插值)