线性插值法计算公式(插值算法)
线性插值法计算公式(插值算法)使得则存在唯一的多项式:若存在一个简单的函数P(x),使则称P(x)为f(x)的插值函数,点称为插值节点,包含插值节点的区间[a b]称为插值区间,求插值函数P(x)的方法称为插值法。定理:设有n 1个互不相同的节点
数模比赛中,常常需要根据一直的函数点来进行数据、模型的处理和分析,而有的时候现有的数据是极少的,不足以支撑分析的进行,这事就需要使用一i写数学的方法,“模拟产生”一些新的但又比较靠谱的值来满足需求,值就是插值的作用。
1、一维插值问题:问题如下:已经有n 1个节点,其中互不相同,不妨假设,求任意插值点处的插值
思路:构造出一个函数y=f(x),使得f(x)结果所有的点,求即可得到
设函数y= f(x)在区间[a b]上有定义,且已知在点 上的值分别为
若存在一个简单的函数P(x),使
则称P(x)为f(x)的插值函数,点称为插值节点,包含插值节点的区间[a b]称为插值区间,求插值函数P(x)的方法称为插值法。
- 若P(x)是次数不超过n的代数多项式,即,就称为插值多项式
- 若P(x)为分段多项式,就称为分段插值
- 若P(x)为三角多项式,就称为三角插值。
定理:设有n 1个互不相同的节点
则存在唯一的多项式:
使得
证明:构造方程组
令:
方程组的矩阵形式如下:AX=Y(4)
由于所以方程组(4)存在唯一解
从而唯一存在
注1:只要n 1个节点互异,满足上述插值条件的多项式是唯一的
注2:如果不限制多项式的次数,插值多项式并不唯一
4、拉格朗日插值法在数值分析中,拉格朗日插值法是以法国十八世纪数学家约瑟夫·刘易斯·拉格朗日命名的一种多项式插值方法。在若干个不容的地方得到相应的观测值,拉格朗日插值法可以找到一个多项式,其恰好在各个观测的点取到观测到的值。
两个点
我们可以构造出在两点之间的任意的一点对应的插值
三个点
对于四个点甚至更多的点,我们可以依次写出
数学表达:
龙格现象
高次插值会产生龙格现象,即在两端处的波动极大,产生明显的震荡。在不清楚运动趋势的前提下,不要轻易使用高次插值。
5、分段线性插值由于插值多项式的次数越高未必能提高精度,反而可能回增大误差,所以引入分段插值。
最简单的就是分段线性插值,相邻的两点之间连成一条线段来拟合所有的点。
分段线性插值
6、分段二次插值(分段抛物插值)选取跟节点x最近的三个节点进行二次插值,即在每一个区间上,取
这种分段的低次插值称为分段二次插值,在几何上就是用分段抛物线代替y=f(x),所以分段二次插值又称为分段抛物插值。
7、埃尔米特(Hermite)插值不做过多叙述,就是它即满足函数值相等,又满足导数值相等,甚至是高阶导数值还相等的不超过(2n 1)次的多项式。既然是多项式肯定存在龙格现象,因此我们使用分段的方法来降低误差,减少龙格。
8、分段三次埃尔米特插值(常用)直接使用Hermite插值得到的多项式次数较高,也存在龙格现象。因此在实际使用中,往往使用分段三次Hermite插值多项式(PCHIP)。
证明推导太过复杂,掌握怎么使用即可。
matlab有内置函数pchip()
x = -pi:pi; y = sin(x);
new_x = -pi:0.1:pi;
p = pchip(x y new_x);
figure(1);
plot(x y 'o' new_x p 'r-')
% 此处的'o'用来修饰plot(x y)
% plot函数用法:
% plot(x1 y1 x2 y2)
% 线方式: - 实线 :点线 -. 虚点线 -- 波折线
% 点方式: . 圆点 加号 * 星号 x x形 o 小圆
% 颜色: y黄; r红; g绿; b蓝; w白; k黑; m紫; c青
分段三次Hermite插值
9、三次样条插值(常用)三次样条插值需要满足更严苛的条件:
- 函数值相等S(x) =f(x)
- 在每个子区间上S(x)都是三次多项式
- S(x)在[a b]上二阶可微
主要来说应用
matlab有内置的函数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); %三次样条插值
figure(2);
plot(x y 'o' new_x p1 'r-' new_x p2 'b-')
legend('样本点' '三次埃尔米特插值' '三次样条插值' 'Location' 'SouthEast')
% legend(string1 string2 String3 ...)每个String与绘图之间有顺序对应关系
% Location 表示legend的位置,上述语句表示在SouthEast东南方向
Hermite插只与三次样条插值对比
可以看出,三次样条生成的曲线更加光滑。在实际过程中,由于我们不知道数据的生成过程,因此两种插值都可以使用。
10、预测这里我们发现可以使用插值算法来进行数据预测,但是一般我们很少使用插值算法来预测数据,随着深入学习,后面的章节会有更适合预测的算法。
population=[133126 133770 134413 135069 135738 136427 137122 137866 138639 139538];
year = 2009:2018;
p1 = pchip(year population 2019:2021) %分段三次埃尔米特插值预测
p2 = spline(year population 2019:2021) %三次样条插值预测
figure(4);
plot(year population 'o' 2019:2021 p1 'r*-' 2019:2021 p2 'bx-')
legend('样本点' '三次埃尔米特插值预测' '三次样条插值预测' 'Location' 'SouthEast')
代码解读,给出2009年到2018年的人口数量,预测未来三年2019-2021年的人口数量,,因此年份就是x轴,人口就是y,new_x为2019-2021,进行插值然后绘图显示。