数学建模之插值算法

注:本文面向应用,参考了清风大大的资料以及司守奎老师的《数学建模算法与应用》,属作者的个人学习总结。

一.算法应用背景

当已知函数点非常少的时候,我们经常要模拟产生一些新的函数值来支撑后续数据分析。这就是插值算法的应用目的。*插值算法还可以用来实现短期预测,但我们往往使用拟合算法以及时间序列算法来实现预测。

二.插值问题的分类

插值问题一般分为一维插值问题和多维插值问题。

三.插值法

(一)数学定义

设函数f(x)在区间[a,b]上有定义,且已知在点a≤x0<x1<x2<······<xn≤b上的值分别为y0,y1,y2······,yn,若存在一简单函数P(xi)=yi(i=0,1,2···,n),则称P(x)是f(x)的插值函数,点x0,x1,x2···,xn称为插值节点,包含插值节点的区间[a,b]称为插值区间。而求P(x)的方法被称为插值法。*这里我们仅仅介绍简单概念,对推导过程不作说明。感兴趣请参考《数值计算方法》课程。

(二)分类

1分段插值:P(x)为分段多项式的插值方法;

2插值多项式:P(x)是次数不超过n的代数多项式的插值方法,也就是:

3三角插值:需要结合傅里叶变换,因此不常用。*非数学专业想学习傅里叶变换(主要是电子,电气,通信类)可以参考华中科技大学李红老师主讲的《复变函数与积分变换》,文末附有链接。

(三)建模中常用的插值方法

实际上会用到:拉格朗日插值法、牛顿插值法、分段三次埃尔米特插值法以及三次埃尔米特插值法等。前两种都存在龙格现象,而且并不可以全面呈现被插值函数的性态,因此不做介绍。(当然也是因为我功底不够,后期有机会细学的话再来介绍这部分内容)

1.分段三次埃尔米特插值法

2.三次样条插值

(四)基于分段三次埃尔米特插值法和三次样条插值法的matlab实现

1.一维角度

我们通过绘制y = \sin x在[0,+2pi]上的插值来做练习。

% 分段三次埃尔米特插值pchip(x,y,new_x),x是已知的原样本点的横坐标,y是对应的纵坐标。new_x是指所插入的横坐标,p指对应的所插入点的纵坐标。
% 三次样条插值spline(x,y,new_x)
% legend(str1,str2,···),把str1,str2,······标注到图中
clear;clc
x = 0:1:2*pi;
y = sin(x);
new_x = 0:0.01:2*pi;
p1 = pchip(x,y,new_x);
p2 = spline(x,y,new_x);
figure;
plot(x,y,':*m')
figure;
plot(new_x,p1,':*b')

结果:

插值前的sin函数图像
插值后的sin函数图像

放大后的图像

2.多维角度

先来一个简单点的:

% p1 = interpn(x1,x2,...xn,y,new_x1,new_x2...,new_xn,method)
% x1,x2,...xn是指原先样本点的横坐标,y是已知样本点的纵坐标;
% new_x1,new_x2...,new_xn则是指所插入的点的横坐标;
% method是要插值的方法,通常包括:'linear':线性插值
% 'cubic':三次插值
% 'spline':三次样条插值
% 'nearest':最邻近插值算法
clear;clc
x = -5:1:5;
y = x;
new_x = -5:0.5:5
p1 = interpn(x,y,new_x,'pchip'); %三次埃尔米特插值
figure;
plot(x,y,'*:')
figure;
plot(new_x,p1,'*:')

补充说明:1.为什么出现P(x)是次数不超过n的代数多项式?

答:对插值多项式而言,并非n越大误差越小。在高次插值过程中,会发生Runge(龙格现象):两端处波动极大,产生明显震荡。因此在不熟悉曲线运动趋势的前提下,不建议使用高次插值。

2.数学推导在哪里看?

几种插值算法对比_插值方式最优越的是-CSDN博客

线性插值、抛物插值、Lagrange插值 | Lagrange拉格朗日插值法(一)-CSDN博客

我一个学工科的,行行好别太为难我,请参考这两篇文章(反正我这个小趴菜做不出厉害的数学推导哈哈哈哈)

行至文末,感谢看完我这个小水货的文章。

复变函数与积分变换 56集 李红 华中科技大学

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值