数学建模学习笔记(一):插值法

这篇具有很好参考价值的文章主要介绍了数学建模学习笔记(一):插值法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

本文主要内容是分享博主在学习MATLAB插值与拟合过程中的一些笔记与见解,并记录使用代码实现的过程


一、一维插值问题的描述

一维插值问题可描述为:已知函数在 x 0 , x 1 , … , x n x_0,x_1,…,x_n x0,x1,,xn处的值 y 0 , y 1 , … , y n y_0,y_1,…,y_n y0,y1,,yn,求简单函数 p ( x ) p(x) p(x),使 p ( x i ) = y i . p(x_i)=y_i. p(xi)=yi.
通俗来说,即已知函数在某区间内若干点处的值,求函数在该区间内其他点处的值。
PS:这里可以用范德蒙行列式和克莱姆法则证明,在 x 0 , x 1 , … , x n x_0,x_1,…,x_n x0,x1,,xn处取值为 y 0 , y 1 , … , y n y_0,y_1,…,y_n y0,y1,,yn的多项式存在且唯一,即插值问题的解唯一存在。(相关内容见线性代数)


二、常用插值方法

1.Lagrange插值法

Lagrange(拉格朗日)插值公式,指的是在节点上给出节点基函数,然后做基函数的线性拟合,组合系数为节点函数值的一种插值多项式。
假设,我们已知函数 f ( x ) f(x) f(x)在平面坐标系上有3个点,坐标分别为 ( x 1 , y 1 ) (x_1,y_1) (x1,y1), ( x 2 , y 2 ) (x_2,y_2) (x2,y2), ( x 3 , y 3 ) (x_3,y_3) (x3,y3),可以分别根据这三个点找出节点基函数。例如,首先作出基函数 f 1 f_1 f1的图像,经过 ( x 1 , 1 ) (x_1,1) (x1,1), ( x 2 , 0 ) (x_2,0) (x2,0), ( x 3 , 0 ) (x_3,0) (x3,0)这三个点,同理可作出 f 2 f_2 f2分别经过点 ( x 1 , 0 ) (x_1,0) (x1,0), ( x 2 , 1 ) (x_2,1) (x2,1), ( x 3 , 0 ) (x_3,0) (x3,0)以及 f 3 f_3 f3。通过寻找这三组基函数的线性组合,我们不难发现原函数可以写出如下形式:
f ( x ) = y 1 f 1 ( x ) + y 2 f 2 ( x ) + y 3 f 3 ( x ) f(x)=y_1f_1(x)+y_2f_2(x)+y_3f_3(x) f(x)=y1f1(x)+y2f2(x)+y3f3(x)上式可推广为: f ( x ) = ∑ i = 0 k y i ∏ j ≠ 1 x − x j x i − x j f(x)=\sum_{i=0}^{k}{y_i\prod_{j\ne1}\frac {x-x_j} {x_i-x_j}} f(x)=i=0kyij=1xixjxxjLagrange插值多项式结构紧凑,在理论分析中甚为方便,但是其缺点在于当插值节点增减时,全部插值基函数均要随之变化,整个公式也将发生变化,在实际计算中很不方便。

2.Newton插值法

Newton(牛顿)插值法相对于拉格朗日插值法具有承袭性的优势,即在增加额外的插值点时,可以利用之前的运算结果以降低运算量。
假设已知n+1个点相对多项式函数 f f ff ff的值为: ( x 0 , f ( x 0 ) ) , ( x 1 , f ( x 1 ) ) , ( x 2 , f ( x 2 ) ) , ⋯ , ( x n , f ( x n ) ) (x_0,f(x_0)),(x_1,f(x_1)),(x_2,f(x_2)),⋯,(x_n,f(x_n)) (x0,f(x0)),(x1,f(x1)),(x2,f(x2)),,(xn,f(xn)),求此多项式函数 f f f.
先从求满足两个点 ( x 0 , f ( x 0 ) ) , ( x 1 , f ( x 1 ) ) (x_0,f(x_0)),(x_1,f(x_1)) (x0,f(x0)),(x1,f(x1))的函数 f 1 ( x ) f_1(x) f1(x)说起:
假设 f 1 ( x ) = f ( x 0 ) + b 1 ( x − x 0 ) f_1(x)=f(x_0)+b_1(x−x_0) f1(x)=f(x0)+b1(xx0)
我们增加一个点, ( x 0 , f ( x 0 ) ) , ( x 1 , f ( x 1 ) ) , ( x 2 , f ( x 2 ) ) (x_0,f(x_0)),(x_1,f(x_1)),(x_2,f(x_2)) (x0,f(x0)),(x1,f(x1)),(x2,f(x2)),求满足这三个点的函数 f 2 ( x ) f_2(x) f2(x):
假设 f 2 ( x ) = f 1 ( x ) + b 2 ( x − x 0 ) ( x − x 1 f_2(x)=f_1(x)+b_2(x−x_0)(x−x_1 f2(x)=f1(x)+b2(xx0)(xx1),
以此类推,我们得到Newton插值法的函数为:
百度百科
其优点在于:每增加一个点,不会导致之前的重新计算,只需要算和新增点有关的就可以了。


三、高次插值的Runge现象

在研究插值问题的初期,所有人都想当然地认为插值多项式的次数越高,插值精度越高。
Runge通过研究发现有的情况下,并非插值多项式阶数越高结果就越精确。当插值多项式的次数较高时,结果会出现严重的振荡现象,称之为Runge现象。
例如,我们在均匀节点上对Runge函数
f ( x ) = 1 1 + 25 x 2 , x ∈ [ − 1 , 1 ] f(x)=\frac{1}{1+25x^2},x\in[-1,1] f(x)=1+25x21,x[1,1]进行插值,(如图)数学建模学习笔记(一):插值法红色曲线代表插值多项式的阶数为10时呈现的效果,可以看出,插值区间的边缘产生了严重的振荡现象,误差很大。因此,在实际中应避免使用高次的插值。通常为避免Runge现象,我们可以将插值区间分成若干小区间,在小区间内用低次插值,即分段低次插值,如样条函数插值。


四、Matlab插值

1、一维插值

当一组数据可以表示成平面坐标系上的点时,我们可以使用Matlab的一维插值命令:

yi=inter1(x,y,xi,'method')
%x,y为插值点,xi,yi为被插值点和结果,x,y和xi,yi通常为向量
%'method'表示插值方法:常用方法有'nearest''linear''spline''cubic'

‘nearest’——最邻近插值:插入与其距离最近的值
‘linear’——线性插值:构造线性函数进行插值
‘spline’——三次样条插值:将定义域分成若干个区间,在每个区间内构造三次多项式进行插值
‘cubic’——立方插值:构造立方函数进行插值
ps:'method’缺省时默认为线性插值

2、二维插值

当一组数据可以表示成空间坐标系上的点时,我们可以使用Matlab的二维插值命令:

yi=inter2(x,y,z,xi,yi,'method')
%x,y,z为插值点,xi,yi为被插值点,zi为输出的插值结果,即插值函数在(xi,yi)处的值;x,y为向量,xi,yi为向量或矩阵,而z和zi则为矩阵
%'method'表示插值方法:常用方法有'nearest''linear''spline''cubic'

‘nearest’——最邻近插值:插入与其距离最近的值
‘linear’——双线性插值:构造两组线性函数进行插值
‘spline’——双三次样条插值:将定义域分成若干个区间,在每个区间内构造三次多项式进行插值
‘cubic’——双立方插值:构造立方函数进行插值
默认为双线性插值

3、散乱点插值

当插值点(x,y)为散乱点,不再是网格上的点时,可以使用griddata命令进行二维插值:

griddata(x,y,z,xi,yi,'method')%'method'用法同上

总结

本文主要展示了数学建模中的一些插值方法及原理,并且基于Matlab进行实现的过程。由于作者也是在学习阶段,此篇文章仅供参考,欢迎大家指正!


参考资料

[1]【【零基础教程】老哥:数学建模算法、编程、写作和获奖指南全流程培训!】 https://www.bilibili.com/video/BV1kC4y1a7Ee?p=24&share_source=copy_web&vd_source=c62a50333f8ab9149f6acfdf0a7c31e7

[2]https://baike.baidu.com/item/%E7%89%9B%E9%A1%BF%E6%8F%92%E5%80%BC%E6%B3%95/7085983

[3]https://zhuanlan.zhihu.com/p/138747068文章来源地址https://www.toymoban.com/news/detail-461354.html


到了这里,关于数学建模学习笔记(一):插值法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 牛顿插值法、拉格朗日插值法、三次插值、牛顿插值多项式、拉格朗日插值多项式

    两点式线性插值 调用Matlab库函数 拉格朗日二次插值: 牛顿二次插值 结果分析:通过对比不同插值方法,可以看到在一定范围内(高次会出现龙格现象),插值次数越高,截断误差越小(插值结果越接近于真实函数值);同时,对于相同次数的插值,由于不同的插值方法它们

    2024年02月11日
    浏览(16)
  • 【数值分析】拉格朗日插值法与牛顿插值法的C++实现

    设函数 y = f ( x ) displaystylecolor{red}y=f(x) y = f ( x ) 在区间 [ a , b ] displaystylecolor{red}[a,b] [ a , b ] 上有定义,且 a ≤ x 0 x 1 ⋯ x n ≤ b displaystylecolor{red}a ≤x_0x_1dotsx_n ≤b a ≤ x 0 ​ x 1 ​ ⋯ x n ​ ≤ b ,已知在 x 0 … x n displaystylecolor{red}x_0dots x_n x 0 ​ … x n ​ 点处的值分别为

    2024年02月06日
    浏览(16)
  • <2>【深度学习 × PyTorch】pandas | 数据预处理 | 处理缺失值:插值法 | networkx模块绘制知识图谱 | 线性代数初步

      你永远不可能真正的去了解一个人,除非你穿过ta的鞋子,走过ta走过的路,站在ta的角度思考问题,可当你真正走过ta走过的路时,你连路过都会觉得难过。有时候你所看到的,并非事实真相,你了解的,不过是浮在水面上的冰山一角。—————《杀死一只知更鸟》   🎯

    2024年02月01日
    浏览(19)
  • 算法--插值法

    插值法是一种数学方法,主要用于通过已知的离散数据来估算未知值。常见的插值法有线性插值、最近邻插值、双线性插值和双三次插值。以下是其基本原理和应用: 线性插值:假设在两个已知数据点之间,数据的变化是线性的,因此可以通过已知的两点的坐标来计算经过这

    2024年01月18日
    浏览(14)
  • 基于Matlab的插值问题(Lagrange插值法、三次插值多项式)

    要求 1、 利用Lagrange插值公式 L n ( x ) = ∑ k = 0 n ( ∏ i = 0 , i ≠ k n x − x i x k − x i ) y k {L_n}(x) = sumlimits_{k = 0}^n {left( {prodlimits_{i = 0,i ne k}^n {frac{{x - {x_i}}}{{{x_k} - {x_i}}}} } right)} {y_k} L n ​ ( x ) = k = 0 ∑ n ​ ( i = 0 , i  = k ∏ n ​ x k ​ − x i ​ x − x i ​ ​ ) y k ​ 编写出

    2024年02月07日
    浏览(17)
  • 浅谈拉格朗日插值法

    好像FFT要用到,所以就学习一手 版题 其意义在于: 理解一下: 就是把一个足球踢出去,假设球始终在一个平面上飞行,它的轨迹就可以抽象为 (f(x)) (假设这个函数至于时间有关) 现在你有一些照片,所以你可以得到某几个时间点球的位置,想要还原出这个函数 (f(x)) 的

    2023年04月25日
    浏览(12)
  • 上采样(最近邻插值、双线性插值法、反池化、转置卷积)

    一般图像分割的时候,需要对图像进行像素级别的分类,因此在卷积提取到抽象特征后需要通过上采样将feature map还原到原图大小,在FCN和U-net等网络中都提到了上采样的操作,这里会一些上采样的方法进行总结。 最简单的图像缩放算法就是最近邻插值,也称作零阶插值,就

    2024年02月05日
    浏览(36)
  • Matlab图像处理-灰度插值法

    最近邻法 最近邻法是一种最简单的插值算法,输出像素的值为输入图像中与其最邻近的采样点的像素值。是将 ( u 0 , v 0 ) (u_0,v_0) 点最近的整数坐标 u , v (u,v) 点的灰度值取为 ( u 0 , v 0 ) (u_0,v_0) 点的灰度值。 在 ( u 0 , v 0 ) (u_0,v_0) 点各相邻像素间灰度变化较小时,这种方法是一

    2024年02月10日
    浏览(18)
  • 自动驾驶路径规划——轨迹规划(详解插值法)

    目录 前言 1. 轨迹规划 1.1 轨迹规划包括以下几个问题: 2. 三次多项式插值 ​​​​​​3.  过路径点的三次多项式插值 4. 用抛物线过渡的线性插值 过路径点的用抛物线过渡的线性插值 5. 高阶多项式插值 声明        这个学期学校开设了相应的课程,同时也在学习古月居

    2024年01月22日
    浏览(17)
  • 【数值分析实验】(一)插值法(含matlab代码)

            实际问题中许多变量的关系可以用数学函数概念进行刻画,但是在大多数情况下,这些函数的表达式是未知的,或者已知但十分复杂,需要我们将这个函数的未知解析式近似地构造出来,或者用一个简单的函数表达式来代替复杂的函数表达式。基于上述过程,我们

    2024年02月12日
    浏览(16)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包