建模学习笔记(三)插值算法

插值法的定义

建模学习笔记(三)插值算法_第1张图片

插值法的分类

  • 插值多项式:P(x)是次数不超过n的代数多项式,即P(x)= a 0 + a 1 x + a 2 x + … + a n x n a_0+a_1 x+a_2x+…+a_nx^n a0+a1x+a2x++anxn,
  • 分段插值:P(x)为分段多项式
  • 三角插值:P(x)为三角多项式

注:在建模比赛中前两种插值方式用的较多 三角插值一般要用到傅里叶变换等复杂的数学工具

一般多项式:

  • 拉格朗日插值法
    建模学习笔记(三)插值算法_第2张图片

  • 牛顿插值法
    建模学习笔记(三)插值算法_第3张图片
    与拉格朗日插值法相比,牛顿插值法的计算过程具有继承性。(牛顿插值法每次插值只和前n项的值有关,这样每次只要在原来的函数上添加新的项,就能够产生新的函数)
    但是两者均存在龙格现象的问题,且不能全面反映被插值函数的形态。
    在许多实际问题中,不仅要求插值函数与被插值函数在所有节点处有相同的函数值,它也需要在一个或全部节点上插值多项式与被插函数有相同的低阶甚至高阶的导数值。
    对于这些情况,拉格朗日插值和牛顿插值都不能满足。

  • 龙格现象:
    建模学习笔记(三)插值算法_第4张图片
    高次插值会产生龙格现象,即在两端处波动极大,产生明显的震荡。在不熟悉曲线运动趋势的前提下,不要轻易使用高次插值。

埃尔米特(Hermite)插值

  • 条件:
    不但要求在节点上的函数值相等,而且还要求对应的导数值也相等,甚至要求高阶导数也相等,满足这种要求的插值多项式就是埃尔米特插值多项式。
  • 原理:
    建模学习笔记(三)插值算法_第5张图片

建模比赛中常用的两种插值方法

  • 分段三次埃尔米特插值

    直接使用Hermite插值得到的多项式次数较高,也存在着龙格现象,因此在实际应用中,往往使用分段三次 Hermite 插值多项式(PCHIP)。

    Matlab实现:
    Matlab有内置的函数(实现过程已经帮我们封装好了,会调用就行了):
    p = pchip(x,y, new_x)

  • 三次样条插值
    Matlab有内置的函数:
    p = spline (x,y, new_x)

相比较而言,三次样条生成的曲线更加光滑。在实际建模中,由于我们不知道数据的生成过程,因此这两种插值都可以使用。

一个小技巧:插值算法可用于短期预测,如:
建模学习笔记(三)插值算法_第6张图片

注意:实际建模过程中,尽量不要用插值算法来预测,如果要预测,可以选择拟合算法等。

你可能感兴趣的:(数学建模及Matlab,算法,数学建模,matlab)