【数模】插值算法

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(使用前将#替换为@)

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

  • 没有名为 crypto.cipher 的模块

    我现在正在尝试加密一段时间 我最近得到了这个基于 python 的密码器 名为PythonCrypter https github com jbertman PythonCrypter 我对 Python 相当陌生 当我尝试通过终端打开 C
  • Django 管理员在模型编辑时间歇性返回 404

    我们使用 Django Admin 来维护导出到我们的一些站点的一些数据 有时 当单击标准更改列表视图来获取模型编辑表单而不是路由到正确的页面时 我们会得到 Django 404 页面 模板 它是偶尔发生的 我们可以通过重新加载三次来重现它
  • 使 django 服务器可以在 LAN 中访问

    我已经安装了Django服务器 可以如下访问 http localhost 8000 get sms http 127 0 0 1 8000 get sms 假设我的IP是x x x x 当我这样做时 从同一网络下的另一台电脑 my ip
  • 如何在flask中使用g.user全局

    据我了解 Flask 中的 g 变量 它应该为我提供一个全局位置来存储数据 例如登录后保存当前用户 它是否正确 我希望我的导航在登录后在整个网站上显示我的用户名 我的观点包含 from Flask import g among other
  • Django:按钮链接

    我是一名 Django 新手用户 尝试创建一个按钮 单击该按钮会链接到我网站中的另一个页面 我尝试了一些不同的例子 但似乎没有一个对我有用 举个例子 为什么这不起作用
  • 从字符串中删除识别的日期

    作为输入 我有几个包含不同格式日期的字符串 例如 彼得在16 45 我的生日是1990年7月8日 On 7 月 11 日星期六我会回家 I use dateutil parser parse识别字符串中的日期 在下一步中 我想从字符串中删除
  • PyUSB 1.0:NotImplementedError:此平台不支持或未实现操作

    我刚刚开始使用 pyusb 基本上我正在玩示例代码here https github com walac pyusb blob master docs tutorial rst 我使用的是 Windows 7 64 位 并从以下地址下载 z
  • 使用 on_bad_lines 将 pandas.read_csv 中的无效行写入文件

    我有一个 CSV 文件 我正在使用 Python 来解析该文件 我发现文件中的某些行具有不同的列数 001 Snow Jon 19801201 002 Crom Jake 19920103 003 Wise Frank 19880303 l
  • python 相当于 R 中的 get() (= 使用字符串检索符号的值)

    在 R 中 get s 函数检索名称存储在字符变量 向量 中的符号的值s e g X lt 10 r lt XVI s lt substr r 1 1 X get s 10 取罗马数字的第一个符号r并将其转换为其等效整数 尽管花了一些时间翻
  • 根据列值突出显示数据框中的行?

    假设我有这样的数据框 col1 col2 col3 col4 0 A A 1 pass 2 1 A A 2 pass 4 2 A A 1 fail 4 3 A A 1 fail 5 4 A A 1 pass 3 5 A A 2 fail 2
  • 如何使用 OpencV 从 Firebase 读取图像?

    有没有使用 OpenCV 从 Firebase 读取图像的想法 或者我必须先下载图片 然后从本地文件夹执行 cv imread 功能 有什么办法我可以使用cv imread link of picture from firebase 您可以
  • 从 Flask 访问 Heroku 变量

    我已经使用以下命令在 Heroku 配置中设置了数据库变量 heroku config add server xxx xxx xxx xxx heroku config add user userName heroku config add
  • 添加不同形状的 numpy 数组

    我想添加两个不同形状的 numpy 数组 但不进行广播 而是将 缺失 值视为零 可能最简单的例子是 1 2 3 2 gt 3 2 3 or 1 2 3 2 1 gt 3 2 3 1 0 0 我事先不知道形状 我正在弄乱每个 np shape
  • 如何在ipywidget按钮中显示全文?

    我正在创建一个ipywidget带有一些文本的按钮 但按钮中未显示全文 我使用的代码如下 import ipywidgets as widgets from IPython display import display button wid
  • 在Python中获取文件描述符的位置

    比如说 我有一个原始数字文件描述符 我需要根据它获取文件中的当前位置 import os psutil some code that works with file lp lib open path to file p psutil Pro
  • Pandas:merge_asof() 对多行求和/不重复

    我正在处理两个数据集 每个数据集具有不同的关联日期 我想合并它们 但因为日期不完全匹配 我相信merge asof 是最好的方法 然而 有两件事发生merge asof 不理想的 数字重复 数字丢失 以下代码是一个示例 df a pd Da
  • 使用 Python 绘制 2D 核密度估计

    I would like to plot a 2D kernel density estimation I find the seaborn package very useful here However after searching
  • Python:如何将列表列表的元素转换为无向图?

    我有一个程序 可以检索 PubMed 出版物列表 并希望构建一个共同作者图 这意味着对于每篇文章 我想将每个作者 如果尚未存在 添加为顶点 并添加无向边 或增加每个合著者之间的权重 我设法编写了第一个程序 该程序检索每个出版物的作者列表 并
  • 使用其构造函数初始化 OrderedDict 以便保留初始数据的顺序的正确方法?

    初始化有序字典 OD 以使其保留初始数据的顺序的正确方法是什么 from collections import OrderedDict Obviously wrong because regular dict loses order d O
  • 从列表指向字典变量

    假设你有一个清单 a 3 4 1 我想用这些信息来指向字典 b 3 4 1 现在 我需要的是一个常规 看到该值后 在 b 的位置内读写一个值 我不喜欢复制变量 我想直接改变变量b的内容 假设b是一个嵌套字典 你可以这样做 reduce di

随机推荐

  • 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的代数多项式 即 数模中也常见 但不