插值与拟合模型-插值算法

该博客为个人学习清风建模的学习笔记,部分课程可以在B站:【强烈推荐】清风:数学建模算法、编程和写作培训的视频课程以及Matlab等软件教学_哔哩哔哩_bilibili

目录

1模型介绍

1.1一维插值问题引入

1.2插值法概念

 1.3插值法分类

1.4插值法原理

2插值算法

2.1拉格朗日插值法

2.2分段插值法

2.3牛顿插值法

2.4拉格朗日与牛顿算法比较

2.5埃尔米特(Hermite)插值 

 2.6分段三次埃尔米特插值

 2.7三次样条插值

2.8n维数据的插值(了解)

3短期预测

4总结


名称重要性难度
插值算法★★★★★★★★

1模型介绍

1.1一维插值问题引入

1.2插值法概念

参考资料:刘春凤: 中国大学 MOOC 数值计算方法,下同

 1.3插值法分类

注:三角插值一般要用到傅里叶变换等复杂的数学工具。
分段插值使用最多!!!

1.4插值法原理

【注1】只要n+1个节点互异,满足上述插值条件的多项式是唯一存在的。
【注2】如果不限制多项式的次数,插值多项式并不唯一。

2插值算法

2.1拉格朗日插值法

在数值分析中,拉格朗日插值法是以法国十八世纪数学家约瑟夫 路易斯 拉格朗日命名的一种多项式插值方法。在若干个不同的地方得到相应的观测值,拉格朗日插值法可以找到一个多项式,其恰好在各个观测的点取到观测到的值。

 

由上述可以推到n个点:

但是容易产生龙格现象!!!

例如:

高次插值会产生 龙格现象 ,即在两端处波动极大 , 产生明显的震荡。在不熟悉曲线运动趋势的前提下,不要轻易使用高次插值。
次数越高精度未必显著提高;次数越高摄入误差可能显著提高
因此一般情况之下不使用拉格朗日插值法,而是引用下面的分段插值法。

2.2分段插值法

2.3牛顿插值法

2.4拉格朗日与牛顿算法比较

拉格朗日插值法:

牛顿插值法:

对比:

与拉格朗日插值法相比,牛顿插值法的计算过程具有继承性。(牛顿插值法每次插值只和前n 项的值有关,这样每次只要在原来的函数上添加新的项,就能够产生新的函数)
但是牛顿插值也存在龙格现象的问题。

缺陷:

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

2.5埃尔米特(Hermite)插值 

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

 2.6分段三次埃尔米特插值

直接使用 Hermite 插值得到的多项式次数较高,也存在着龙格现象,
因此在实际应用中,往往使用分段三次 Hermite 插值多项式 (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-')

% plot函数用法:
% plot(x1,y1,x2,y2) 
% 线方式: - 实线 :点线 -. 虚点线 - - 波折线 
% 点方式: . 圆点  +加号  * 星号  x x形  o 小圆
% 颜色: y黄; r红; g绿; b蓝; w白; k黑; m紫; c青

 2.7三次样条插值

三次样条多项式满足的条件:

代码:

Matlab 有内置的函数:
p = spline (x,y, new_x) 
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, …)
% 分别将字符串1、字符串2、字符串3……标注到图中,每个字符串对应的图标为画图时的图标。
% ‘Location’用来指定标注显示的位置

2.8n维数据的插值(了解)

% n维数据的插值
x = -pi:pi; y = sin(x); 
new_x = -pi:0.1:pi;
p = interpn (x, y, new_x, 'spline');
% 等价于 p = spline(x, y, new_x);
figure(3);
plot(x, y, 'o', new_x, p, 'r-')

3短期预测

注意:实际建模过程中,大家尽量不要用插值算法来预测,下面只是给大家举的一个小例子;
如果要预测,可以选择拟合算法,也可以使用之后要学的专门用于预测的算法。

% 人口预测(注意:一般我们很少使用插值算法来预测数据,随着课程的深入,后面的章节会有更适合预测的算法供大家选择,例如灰色预测、拟合预测等)
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')

4总结

插值法的方法很多,该章节介绍了拉格朗日插值法、分段插值法、牛顿插值法、埃尔米特插值法、分段三次埃尔米特插值法、三次样条插值、n维数据插值法,其中拉格朗日插值法会出现龙格现象,牛顿插值法不能全面反映被插值函数的性态,所以推荐使用分段插值法。最推荐使用的是分段三次埃尔米特插值法与三次样条插值。

插值法还可以用于短期预测,当然,大量数据的预测还是需要专门的预测算法或拟合算法。

  • 16
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值