数学建模之插值算法

模比赛中,常常需要根据已知的函数点进行数据、模型的处理和分析,而有时候现有的数据是极少的,不足以支撑分析的进行,这时就需要使用一些数学的方法,“模拟产生”一些新的但又比较靠谱的值来满足需求,这就是插值的作用。

插值的定义

插值的分类

一般插值多项式的原理

在这里插入图片描述
在这里插入图片描述

拉格朗日插值法

在这里插入图片描述

龙格现象

在这里插入图片描述
在这里插入图片描述



高次插值会产生龙格现象 ,即在两端处波动极大,产生明显的震荡。在不熟悉曲线运动趋势的前提下,不要轻易使用高次插值。

分段线性插值

因为插值多项式次数越高摄入误差可能显著增大,且插值多项式次数高精度未必显著提高
因此采用分段低次插值是一种办法

分段二次插值

在这里插入图片描述

牛顿插值法

在这里插入图片描述

与拉格朗日插值法相比,牛顿插值法具有继承性。(牛顿插值法每次插值只有和前n项的值有关,这样每次只要在原来的函数上添加新的项,就能过产生新的函数)

但是牛顿插值法也存在龙格现象的问题

两种插值法的另一个却点

上面讲的两种插值仅仅要求插值多项式在插值节点处与被插函数有相等的函数值,而这种插值多项式却**不能全面反映被插值函数的性态。**然而在许多实际问题中,不仅要求插值函数与被插值函数在所有节点处有相同的函数值,它也需要在一个或全部节点上插值多项式与被插函数有相同的低阶甚至高阶的导数值。
对于这些情况,拉格朗日插值和牛顿插值都不能满足。

Hermite插值法

在这里插入图片描述

不但要求在节点上的函数值相等,而且还要求对应的导数值也相等,甚至要求高阶导数也相等,满足这种要求的插值多项式就是Hermite 插值多项式

原理

在这里插入图片描述

分段三次Hermite插值

直接使用Hermite插值得到的多项式次数较高,也存在着龙格现象,因此在实际使用中,往往分段三次Hermite插值多项式(PCHIP)。
而这个在matlab中有内置的函数,直接调用就可以了

p=pchip(x,y,new_x)
%x是已知的样本点的横坐标;y是一只样本点的纵坐标;new_x是要插入处对应的横坐标

x=-pi:pi;y=sin(x);
new_x=-pi:0.1:pi;
p=pchip(x,y,new_x);

三次样条插值

在这里插入图片描述
在这里插入图片描述


原理不用太深究,会用就好。。。。。
同样的matlab中有内置的函数

p=spline(x,y,new_x)

x=-pi:pi;y=sin(x);
new_x=-pi:0.1:pi;
p1=pchip(x,y,new_x);
p2=spline(x,y,new_x);
plot(x,y,'o',new_x,p1,'r-',new_x,p2,'b-')

插值对比图

在这里插入图片描述


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

n维数据插值(了解)

在这里插入图片描述

发表评论

邮箱地址不会被公开。 必填项已用*标注