数学建模——插值(上)

简介: 数学建模——插值(上)

本文是面向数学建模准备的,是介绍性文章,没有过多关于原理的说明!!!


插值方法简介

插值问题

已知区间[a,b]上有系列观测值(xi,yi),i=0,1,2,…,n,求一条曲线把这些点依次连接起来,称为插值,这条曲线的表达式f(x)称为插值函数。一般f(x)解析式也是未知的。

1、分段线性插值

最简单、最直观的做法就是把两个相邻点连接起来,如此形成的一条折线就是分段线性插值函数,记作In(x),它满足且在每个区间[xi-1,xi]上都是线性函数,如图1所示。当待插值x(已知)在[xi-1,xi]时,根据线段比例的加权平均,有

插值示例:

2、拉格朗日插值多项式

拉格朗日插值基函数为:

是n次多项式,且满足

拉格朗日插值函数为:

3、样条(Spline)插值

许多工程技术要求插值函数足够光滑,即具有连续的曲率,这就导致了样条插值。样条本来是工程制图中的一个工具,它是富有弹性的细木条或金属条,绘图人员用它把已知点连接成一条光滑曲线(称为样条曲线),并使得连接点具有连续的曲率,常用的是三次样条插值。

已知函数y=f(x)在[a,b]上的n+1个节点上的值yi=f(xi),i=0,1,…,n。求插值函数S(x),满足:

  1. S(xi)=yi,i=0,1,2,…,n
  2. 在每个小区间[xi,xi+1]上,S(x)是三次多项式,记为Si(x)
  3. S(x)在[a,b]上二阶连续可微

满足以上条件的函数S(x)为f(x)的三次样条插值函数根据上面的2有:

其中ai,bi,ci,di为4n个待定系数,根据(3)满足

再加上条件1,共(n+1)+3(n—1)=(4n-2)个方程


二、Matlab插值工具箱

1、一维插值函数

调用格式:

y=interp1(x0,y0,x,'method')

  • x0:原始数据点的x坐标。这应该是一个向量。
  • y0:原始数据点的y坐标。这应该是一个向量,与x0具有相同的长度。
  • x:要进行插值的点的x坐标。可以是一个数值或一维向量。
  • ‘method’:指定插值方法的字符串参数,如 ‘linear’、‘nearest’、'spline’和 'pchip’等。

根据指定的方法和提供的数据,interp1函数将计算出在插值点x处估计的y值。

下面介绍这几种方法:

  1. 线性插值(linear):
    线性插值是最简单的插值方法之一,它假设数据在两个相邻点之间的变化是线性的。在两个已知点之间插值的时候,会找到目标点处的线性函数,然后根据函数估计目标点的值。
  2. 最近邻插值(nearest):
    最近邻插值选择离插值点最近的已知点的值作为估计值。简单地说,它将目标点的值设定为离它最近的已知点的值,而不考虑其他已知点之间的距离。
  3. 三次样条插值(spline):
    三次样条插值使用三次多项式来逼近数据点之间的曲线。它通过该曲线上的已知点来构造一个平滑的函数。三次样条插值的优点是可以提供较光滑的估计结果,但可能在数据点之间产生震荡。
  4. 分段立方插值(pchip):
    分段立方插值使用一段一段的分段函数进行插值。它根据已知点之间的曲线形状来构造具有更大灵活性的插值函数。分段立方插值也可能产生震荡,但在某些情况下比三次样条插值更准确。

2、三次样条插值函数

调用格式 :

y=interp1(x0,y0,x,'spline')
或y=spline(x0,y0,x)
或pp=csape(x0,y0,conds) ,                        (推荐)
y=fnval(pp,x)

csape 函数可以根据给定的数据点 (x0, y0) 来生成一个样条插值结构 pp。这个结构 pp 可以用于后续的插值计算。

其中,conds为边界条件,取值为: ‘complete’、‘clamped’、‘not-a-knot’ 和 ‘periodic’。

下面介绍这几种条件:

  1. complete:这是默认形状选项,也是最常用的选项。它生成一个光滑的样条曲线,满足自然边界条件。自然边界条件要求在首尾两个节点处的二阶导数为零,即曲线在两个端点处平滑衔接。
  2. clamped:该选项生成的样条曲线在首尾节点处设置了手动指定的边界值或导数值。用户可以通过提供额外的参数来指定这些边界值或导数值,从而控制曲线的形状。
  3. not-a-knot:这个选项生成的样条曲线在首尾节点处不强制满足自然边界条件,而是允许出现非连续的 “不是结” 条件。这种条件意味着首尾节点处的插值函数的三阶导数值是相等的。
  4. periodic:这个选项生成的样条曲线是周期性的,即首尾节点处插值函数的值和指定的导数值相等。这种形状适用于以周期方式变化的数据。


相关文章
|
机器学习/深度学习 存储
卡方分箱、KS分箱、最优IV分箱、树结构分箱、自定义分箱
卡方分箱、KS分箱、最优IV分箱、树结构分箱、自定义分箱
3534 0
卡方分箱、KS分箱、最优IV分箱、树结构分箱、自定义分箱
|
前端开发 JavaScript 安全
深入解析 http 协议
HTTP(超文本传输协议)不仅用于传输文本,还支持图片、音频和视频等多种类型的数据。当前广泛使用的版本为 HTTP/1.1。HTTPS 可视为 HTTP 的安全增强版,主要区别在于添加了加密层。HTTP 请求和响应均遵循固定格式,包括请求行/状态行、请求/响应头、空行及消息主体。URL(统一资源定位符)用于标识网络上的资源,其格式包含协议、域名、路径等信息。此外,HTTP 报头提供了附加信息,帮助客户端和服务端更好地处理请求与响应。状态码则用于指示请求结果,如 200 表示成功,404 表示未找到,500 表示服务器内部错误等。
382 0
深入解析 http 协议
vscode配置eslint保存自动修复
vscode配置eslint保存自动修复
582 1
|
Unix Linux 开发工具
Linux 命令 `ctags`:代码导航的利器
`ctags` 是一款Unix工具,用于生成代码标签,方便在Vim、Emacs等编辑器中快速跳转到函数、变量定义。在Linux上,可通过包管理器安装。使用`ctags -R`生成`tags`文件,然后在Vim中用`Ctrl+]`跳转,`Ctrl+T`返回。Emacs则使用`M-.`和`M-,`。`ctags`可自定义语言映射和排除规则,是提升编程效率的利器。
|
数据采集
IQR法(四分位距法)
IQR法(四分位距法)
|
存储 安全 Linux
网络请求的高效处理:C++ libmicrohttpd库详解
网络请求的高效处理:C++ libmicrohttpd库详解
|
SQL XML JSON
Hive函数全解——思维导图 + 七种函数类型
Hive函数全解——思维导图 + 七种函数类型
503 2
Hive函数全解——思维导图 + 七种函数类型
|
安全 C++ Windows
VSCode安装教程(超详细)
VSCode安装教程(超详细)
|
算法 数据挖掘 开发工具
以阿里云OpenSearch为例谈向量检索技术选型
本文从向量检索应用场景、常见的向量检索方法、向量检索性能优化、功能性能对比介绍了向量检索的业务应用场景和技术选型方式。
4319 3