插值算法
-
作用(目的):在数学建模中,发现现有的数据是极少的,不足以支撑分析时,需要使用一些数学的方法,“模拟产生“一些新的但又比较靠谱的值来满足需求。
-
相关概念:插值函数,插值,插值法
-
插值法的分类:分段插值(最经常使用),插值多项式,三角插值
插值法原理
一般插值多项式原理
插值法
- 拉格朗日插值法(一种多项式插值方法)
在若干个不同的地方得到相应的观测值,拉格朗日插值法可以找到一个多项式,其恰好在各个观测的点取到观测到的值。
- 分段线性插值
(1)分段低次插值
采用分段低次插值可以提高插值的精度,因为当插值多项式次数高时其精度未必显著提高,且易产生龙格现象,插值多项式的次数越高摄入误差可能显著增大。 - 分段二次插值(分段抛物插值)
- 牛顿插值法
- 埃尔米特(Hermite)插值
(1)基本思路:函数值对应,导数值对应
(2)埃尔米特(Hermite)插值原理
- 分段三次埃尔米特插值
直接使用Hermite插值得到的多项式次数较高,但也存在龙格现象,因此在实际应用中,往往使用分段三次Hermite插值多项式(PCHIP)
%在matalab中有内置函数
p = pchip(x,y,new_x)
%x是已知的样本点的横坐标
%y是已知的样本点的纵坐标
%new_x是要插入处对应的横坐标
%matlab中的plot()函数
plot(x1,y1,x2,y2)
%线方式:-实线:点线-.虚点线--波折线
%点方式: .圆线 +加号 *星号 x x型 o 小圆
%颜色: y黄色 r红色 g绿 b蓝 w白 k黑 m紫 c q青
%给每一张图片进行标号
figure(1)
- 三次样条插值
(1)基本思路: 函数值相等,三次多项式,二阶连续可微
(2)构造方法
%在matalab中有内置函数
p = spline(x,y,new_x)
%x是已知的样本点的横坐标
%y是已知的样本点的纵坐标
%new_x是要插入处对应的横坐标
legend(string1,string2,string3,……,'Location','SouthEast')
%分别表示将字符串1、字符串2、字符串3……标注到图中,每个字符串对应的图标为画图时的图标。
%Location 用来指定标注显示的位置
- n维数据的插值
%在matalab中有内置函数
p = interpn(x1,x2,x3,……,xn,y,new_x1,new_x2,……,new_xn,method)
%x1,x2,……,xn是已知的样本点的横坐标
%y是已知的样本点的纵坐标
%new_x1,new_x2,……,new_xn是要插入处对应的横坐标
%method是插值的方法
'linear':线性插值(默认算法)
'cubic':三次插值;
'spline':三次样条插值法(最为精准)
'nearest':最邻近插值算法
总结:上面学的这些插值算法可用于短期预测,但在实际的建模中一般采用拟合算法来进行预测
牛顿插值法vs拉格朗日插值法
与拉格朗日插值法相比,牛顿插值法的计算过程更具继承性,但是这两种方法都易产生龙格现象。且这两种插值方法仅仅只要求插值多项式在插值点处于被插函数有相等的函数值,而不能全面反映被插值函数的性态(导数值)。
龙格现象
高次插值会产生龙格现象,即在两端处波动极大,产生明显的震荡。因此在不熟悉曲线运动趋势的前提下,不要轻易使用高次插值。