插值算法
在工程和数学应用中,经常有这样一类数据处理问题,在平面上给定一组离散点列,要求一条曲线,把这些点按次序连接起来,称为插值。
一维数据插值方法
已知 n+1 个点 (xi ,yi)(i = 0, 1, … , n) 下面求各种插值函数。
分段线性插值
简单地说,就是将每两个相邻的节点用直线连接起来,如此形成一条折线就是分段线性插值函数,记作 I(x),它满足I(xi) = yi,且 I(x) 在每个小区间 [xi, xi+1] 上是线性函数 (i = 0,1,…,n-1)。
具有良好的收敛性。
计算 x 点差值时,只用到 x 左右两个节点,计算量与节点个数 n 无关。但 n 越大,分段越多,插值误差越小。
分段二次插值(分段抛物插值)
拉格朗日插值法
百度百科定义如下图:
龙格现象
插值多项式次数越高误差越小吗?不是的
高次插值会产生龙格现象,即在两端波动大,产生明显的震荡。
在不熟悉曲线运动趋势得前提下,不要轻易使用高次插值。
牛顿插值法
牛顿插值法的计算过程具有继承性。
拉格朗日、牛顿插值法 不能全面反映被插函数性态。
埃尔米特插值法
不仅要求节点函数值相等,也要求对应导数值相等,甚至高阶导数。
分段减轻龙格现象
分段三次埃尔米特插值PCHIP
Matlab有内置函数:
p = pchip(x , y , new_x);
样条插值
数学上将具有一定光滑性的分段多项式成为样条函数。
三次样条插值
条件:二阶连续可微
Matlab有内置函数:
p = spline(x , y , new_x);
n维数据插值
应用
可以用来做预测,补全数据。一般建模中常用分段三次埃尔米特插值和三次样条插值。