【数模】插值算法

2023-11-13

插值算法的介绍

  • 插值的作用:当现有的数据是极少的,不足以支撑分析的进行时,用于**“模拟产生”**一些新的但又比较靠谱的值来满足需求。
  • 插值函数、插值、插值法的概念:
    在这里插入图片描述
  • 插值法的分类:
    • 插值多项式:P(x)为次数不超过n的代数多项式,即在这里插入图片描述
      • 数模中也常见(但不如分段插值常见)。
    • 分段插值:P(x)为分段多项式
      • 数模中最常见,大都是分段插值。
    • 三角插值:P(x)为三角多项式
      • 三角插值一般要用到傅里叶变换等复杂数学工具,不作介绍 。

插值多项式

一般插值多项式原理

在这里插入图片描述

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

拉格朗日插值法

  • 一种多项式插值方法,作为了解即可,因为其存在问题较大(龙格现象),解题中并不使用。
    在这里插入图片描述

牛顿插值法

  • 仅作了解在这里插入图片描述
拉格朗日插值和牛顿插值的对比
  • 与拉格朗日插值法相比,牛顿插值法的计算过程具有继承性。
    • (牛顿插值法每次插值只和前n项的值有关,如此每次只要在原来的函数上添加新的项,就能够产生新的函数)
  • 两者共有的缺陷
    • ① 都未能解决龙格现象
    • ② 仅要求插值多项式在插值节点处与被插函数有相等的函数值 ⇒ 不能全面反映被插值函数的性态
      • 实际问题中,不仅要求插值函数与被插值函数在所有节点处有相同的函数值,也需要在一个或全部节点上插值多项式与被插函数有相同的低阶甚至高阶的导数值
      • 相同导数值的意义:保持插值曲线在节点处有切线(光滑),使插值函数和被插函数的密和程度更好。

埃尔米特(Hermite)插值

  • 满足以下俩点要求的插值多项式就是埃尔米特插值多项式
    • ①在节点上的函数值相等;
    • ②要求对应的导数值也相等,甚至要求高阶导数也相等
  • 直接使用Hermite插值得到的多项式次数较高,也存在着龙格现象 ⇒ 因此在实际应用中,往往使用分段三次 Hermite 插值多项式 (PCHIP)。

高次多项式插值的缺陷:龙格现象

  • 高次插值会产生龙格现象,即在两端处波动极大,产生明显的震荡。
  • 总结插值多项式问题:
    • ① 插值多项式次数高精度未必显著提高
    • ②插值多项式次数越高摄入误差可能显著增大
    • 故:在不熟悉曲线运动趋势的前提下,不要轻易使用高次插值。⇒ 选用分段插值 在这里插入图片描述

分段线性插值

  • 分段低次插值:选相邻两个点,用线段相连而成。

    • 错误率较高 ⇒ 故会进而采用分段二次插值
      在这里插入图片描述
  • 分段二次插值(分段抛物插值)

    • 二次插值在几何上就是用分段抛物线代替直线y=f(x),故分段二次插值又称为分段抛物插值。
      在这里插入图片描述

建模中两种常用的插值

  • 以下两种均可使用,取决个人喜好。
  • 介绍说辞:分段三次埃尔米特插值/三次样条插值 可很好地保持数据光滑性和连续性,减少信息量的损失。

分段三次埃尔米特插值(PCHIP)

  • Matlab有内置的函数:p = pchip(x,y, new_x)
    • x是已知的样本点的横坐标;
    • y是已知的样本点的纵坐标;
    • new_x是要插入处对应的横坐标
  • 举例:
    • 线方式: ‘‐’ 实线; ':'点线; ‘‐.’ 虚点线; ‘‐ ‐’ 波折线
    • 点方式: ‘.’ 圆点; '+'加号; ‘*’ 星号; ‘x’ x形; ‘o’ 小圆
    • 颜色: y黄; r红; g绿; b蓝; w白; k黑; m紫; c青
x = ‐pi:pi; y = sin(x);
new_x = ‐pi:0.1:pi;
p = pchip(x,y,new_x);
plot(x, y, 'o', new_x, p, 'r‐')
% plot函数用法:
plot(x1,y1,x2,y2)

三次样条插值

  • 定义:在这里插入图片描述
  • 构造方法:在这里插入图片描述
  • 三次样条插值的使用
    • Matlab内置函数:p = spline (x,y, new_x)
      • x是已知的样本点的横坐标;
      • y是已知的样本点的纵坐标;
      • new_x是要插入处对应的横坐标
    • 举例:
      • 说明:legend(string1,string2,string3, …)分别将字符串1、字符串2、字符串3…标注到图中,每个字符串对应的图标为画图时的图标。
      • ‘Location’用来指定标注显示的位置
      • 下列函数的效果图:在这里插入图片描述
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(1);%用于命名每个图,防止画下一个图的时候把该图覆盖
plot(x,y,'o',new_x,p1,'r‐',new_x,p2,'b‐')
legend('样本点','三次埃尔米特插值','三次样条插值',‘Location’,‘SouthEast’) %标注显示在东南方向

处理n维数据的插值(仅了解)

  • 了解即可,n维数据的插值题很少见
  • 函数:p = 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’:最邻近插值算法。
x = ‐pi:pi; y = sin(x);
new_x = ‐pi:0.1:pi;
p = spline(x, y, new_x); %等价于 p = interpn (x, y, new_x, ’spline’);
plot(x, y, 'o', new_x, p, 'r‐')

小技巧

  • 可灵活运用以上插值算法于短期预测

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【数模】插值算法 的相关文章

  • Python - 将宽字符字符串从二进制文件转换为 Python unicode 字符串

    这是漫长的一天 我有点困惑 我正在读取一个包含大量宽字符字符串的二进制文件 我想将它们转储为 Python unicode 字符串 为了解压非字符串数据 我使用 struct 模块 但我不知道如何对字符串执行相同的操作 例如 阅读 系列 一
  • 使用 python 进行串行数据记录

    Intro 我需要编写一个小程序来实时读取串行数据并将其写入文本文件 我在读取数据方面取得了一些进展 但尚未成功地将这些信息存储在新文件中 这是我的代码 from future import print function import se
  • 我怎样才能更多地了解Python的内部原理? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我使用Python编程已经有半年多了 我对Python内部更感兴趣 而不是使用Python开发应用程序
  • python 中的代表

    我实现了这个简短的示例来尝试演示一个简单的委托模式 我的问题是 这看起来我已经理解了委托吗 class Handler def init self parent None self parent parent def Handle self
  • pydev 调试器:严重警告:此版本的 python 似乎编译不正确(内部生成的文件名不是绝对的)[重复]

    这个问题在这里已经有答案了 通过运行 from sklearn datasets import fetch california housing import pandas as pd pd set option precision 4 m
  • 如何迭代按值排序的 Python 字典?

    我有一本字典 比如 a 6 b 1 c 2 我想迭代一下by value 不是通过键 换句话说 b 1 c 2 a 6 最直接的方法是什么 sorted dictionary items key lambda x x 1 对于那些讨厌 la
  • python 模拟第三方模块

    我正在尝试测试一些处理推文的类 我使用 Sixohsix twitter 来处理 Twitter API 我有一个类充当 Twitter 类的外观 我的想法是模拟实际的 Sixohsix 类 通过随机生成新推文或从数据库检索它们来模拟推文的
  • Python逻辑运算符优先级[重复]

    这个问题在这里已经有答案了 哪个运算符优先4 gt 5 or 3 lt 4 and 9 gt 8 这会被评估为真还是假 我知道该声明3 gt 4 or 2 lt 3 and 9 gt 10 显然应该评估为 false 但我不太确定 pyth
  • 使用 OLS 回归预测未来值(Python、StatsModels、Pandas)

    我目前正在尝试在 Python 中实现 MLR 但不确定如何将我找到的系数应用于未来值 import pandas as pd import statsmodels formula api as sm import statsmodels
  • 从 python 发起 SSH 隧道时出现问题

    目标是在卫星服务器和集中式注册数据库之间建立 n 个 ssh 隧道 我已经在我的服务器之间设置了公钥身份验证 因此它们只需直接登录而无需密码提示 怎么办 我试过帕拉米科 它看起来不错 但仅仅建立一个基本的隧道就变得相当复杂 尽管代码示例将受
  • Pandas 根据 diff 列形成簇

    我正在尝试使用 Pandas 根据表示时间 以秒为单位 的列中的差异来消除数据框中的一些接近重复项 例如 import pandas as pd numpy as np df pd DataFrame 1200 1201 1233 1555
  • Python 将日志滚动到变量

    我有一个使用多线程并在服务器后台运行的应用程序 为了无需登录服务器即可监控应用程序 我决定包括Bottle http bottlepy org为了响应一些HTTP端点并报告状态 执行远程关闭等 我还想添加一种查阅日志文件的方法 我可以使用以
  • 使用 Firefox 绕过弹出窗口下载文件:Selenium Python

    我正在使用 selenium 和 python 来从中下载某些文件web page http www oceanenergyireland com testfacility corkharbour observations 我之前一直使用设
  • 使用yield 进行字典理解

    作为一个人为的例子 myset set a b c d mydict item yield join item s for item in myset and list mydict gives as cs bs ds a None b N
  • 如何在 OSX 上安装 numpy 和 scipy?

    我是 Mac 新手 请耐心等待 我现在使用的是雪豹 10 6 4 我想安装numpy和scipy 所以我从他们的官方网站下载了python2 6 numpy和scipy dmg文件 但是 我在导入 numpy 时遇到问题 Library F
  • Tkinter - 浮动窗口 - 调整大小

    灵感来自this https stackoverflow com a 22424245 13629335问题 我想为我的根窗口编写自己的调整大小函数 但我刚刚注意到我的代码显示了一些性能问题 如果你快速调整它的大小 你会发现窗口没有像我希望
  • 无法在前端使用 JavaScript Fetch API 将文件上传到 FastAPI 后端

    我正在尝试弄清楚如何将图像发送到我的 API 并验证生成的token那是在header的请求 到目前为止 这就是我所处的位置 app post endreProfilbilde async def endreProfilbilde requ
  • 在Python中按属性获取对象列表中的索引

    我有具有属性 id 的对象列表 我想找到具有特定 id 的对象的索引 我写了这样的东西 index 1 for i in range len my list if my list i id specific id index i break
  • 如何读取Python字节码?

    我很难理解 Python 的字节码及其dis module import dis def func x 1 dis dis func 上述代码在解释器中输入时会产生以下输出 0 LOAD CONST 1 1 3 STORE FAST 0 x
  • 您可以使用关键字参数而不提供默认值吗?

    我习惯于在 Python 中使用这样的函数 方法定义 def my function arg1 None arg2 default do stuff here 如果我不供应arg1 or arg2 那么默认值None or default

随机推荐

  • c语言中c的文件操作,C语言中的文件操作方法

    int open char pathname int access int permiss 为读或写打开一个文件 按后按access来确定是读文件还是写文件 access值见下表 access值 意义 O RDONLY 读文件 O WRON
  • Mybatis与Spring集成配置

    目录 具体操作 1 1 添加依赖 1 2创建spring的配置文件 1 3 注解式开发 Aop整合pagehelper插件 1 创建一个AOP切面 2 Around execution xxx xxx 表达式解析 前言 上篇我们讲解了关于M
  • TCL语法

    tcl是一种很通用的脚本语言 它几乎在所有的平台上都可以解释运行 其强大的功能和简单精妙的语法会使你感到由衷的喜悦 这片文章对 tcl有很好的描述和说明 极具可读性 我并不是原封不动的翻译而是加上了一些自己的体会和例子 如有错误请指正 如果
  • 同步总线和异步总线

    同步总线 指互联的部件或设备均通过统一的时钟进行同步 即所有的互联的部件或设备都必须使用同一个时钟 同步时钟 在规定的时钟节拍内进行规定的总线操作 来完成部件或设备之间的信息交换 异步总线 指没有统一的时钟而依靠各部件或设备内部定时操作 所
  • 启动tomcat的startup.bat文件报C:\Program Files\Tomcat 7.0\logs\host-manager.2017-04-30.log(拒绝访问)

    看到拒绝访问 立马就应该想到是权限问题 右键tomcat安装目录 点击属性 gt 安全 gt 点击 编辑 gt 选择Users gt 在Users的权限 p 下面把没打勾的都打上 确定关闭后重新打开startup bat 就没有异常和警告信
  • 熟练计算机数字键盘,总结:计算机键盘的盲打和快速输入技巧[1]

    在新闻发布会之类的信息发布场景中 您会注意到许同时关注场地的声音和移动 而不必看着笔记本电脑的键盘 他们可以快速触摸键盘 双手键入击键 以实时录制会议内容 十个手指在键盘上顺畅地飞行 可以及时将会议报告给世界各个角落 只有掌握了触摸键入技能
  • ssr的pac中加入学校图书馆数据库访问pac

    在家的时候 需要使用代理 同时要使用图书馆的数据库 两个代理有点冲突 自己研究了一下 ssr 的规则 发现比较简单 可以页面后贴出的代码进行研究 pac txt pac 的内部完全就是 js 的语法逻辑 不是十分熟悉 写的有点硬 可以自己考
  • hadoop面试题

    hadoop面试题 1 单选题 1 1 下面哪个程序负责 HDFS数据存储 a NameNode b Jobtracker c Datanode d secondaryNameNode e tasktracker 答案 C datanode
  • Tensorflow学习笔记(一)

    这里写自定义目录标题 Tensorflow 基本分类 对服装图像进行分类 电影评论文本分类 Basic regression Predict fuel efficiency 过拟合和欠拟合 过拟合 Tensorflow Tensorflow
  • American Sign Language手语识别(机器学习第二个小练习)

    American Sign Language手语识别 1 需要的数据集 链接 https pan baidu com s 1bf98hHYZbKuY 8hdfe8NRQ 提取码 uvzj 2 实验代码如下 import pandas as
  • winform 如何获取某个子控件的子控件并操作它

    一 panel1 Controls button1 或 panel1 Controls 0 二 比如某窗体的子控件为UserControl 且UserControl上有n多个n种控件 那么可以再UserControl里写属性获取
  • 【综合类型第 34 篇】喜讯!喜讯!!喜讯!!!,我在 CSDN 的第一个实体铭牌

    这是 综合类型第 34 篇 如果觉得有用的话 欢迎关注专栏 2022年7月19日 14 25 CSDN 官方博客给我发了一条私信 内容如下 为了表彰在 CSDN 社区发展中 做出 突出贡献 取得 优秀成绩 的用户 我们特地准备了实体铭牌 恭
  • EA12版本怎么恢复Project Browser

    其实是个小问题 不知道怎么就关闭Project Browser 了 找了好久才找到
  • springboot2.0从apollo读取配置

    参考 https github com nobodyiam apollo build scripts 本篇文章包括两点 Windows环境下apollo单机搭建 springboot2 0从apollo读取配置 一 windows环境下ao
  • kubectl查看容器日志

    kubectl get pod n 命名空间 kubectl logs 容器名称 n 命名空间
  • 青龙脚本 小黄鸟配合虚拟机抓变量 软件集

    鉴于很多青龙脚本变量 真机很难抓到 需要小黄鸟配合虚拟机抓变量 为方便网友 把相关3个软件分享 以单个文件形式 1 小黄鸟 https wwm lanzouy com i5vWT01qi6na 2 虚拟机 https wwm lanzouy
  • nvcc使用指定gcc版本(不改变全局gcc版本)

    在nvcc后面加上 compiler bindir usr bin gcc x即可 x为指定的gcc版本号
  • MSP430F5529学习笔记(6)——导入MSP430Ware,查看例程

    MSP430WARE下载 目录 在线版本 下载MSP430Ware 查看例程 导入例程 离线版本 下载MSP430Ware 查看例程 导入例程 MSP430Ware里面有很多例程和库函数使用手册 我们可以查看学习 非常重要 在线版本 下载M
  • 使用计算机结束时断开终端的连接属于什么,计算机结束时断开终端的连接属于什么...

    计算机结束时断开终端的连接属于外部终端的物理安全 终端安全管理 endpoint security management 是一种保护网络安全的策略式方法 它需要终端设备在得到访问网络资源的许可之前遵从特定的标准 推荐学习 web前端视频教程
  • 【数模】插值算法

    插值算法的介绍 插值的作用 当现有的数据是极少的 不足以支撑分析的进行时 用于 模拟产生 一些新的但又比较靠谱的值来满足需求 插值函数 插值 插值法的概念 插值法的分类 插值多项式 P x 为次数不超过n的代数多项式 即 数模中也常见 但不