0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Python插值算法基本的概念

云深之无迹 ? 来源:云深之无迹 ? 作者:云深之无迹 ? 2022-07-12 10:03 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

Python实现所有算法-二分法

Python实现所有算法-力系统是否静态平衡

Python实现所有算法-力系统是否静态平衡(补篇)

Python实现所有算法-高斯消除法

Python实现所有算法-牛顿-拉夫逊(拉弗森)方法

Python实现所有算法-雅可比方法(Jacobian)

Python实现所有算法-矩阵的LU分解

今天的算法是插值,细分是牛顿插值。关于插值可能大家听到最多的就是图像插值,比如100元的摄像头有4K的分辨率???其实这里就是使用的插值算法,通过已经有的数据再生成一些,相当于提升了数据的量。如果我们想放大图像,我们需要使用过采样算法来扩展矩阵。

6d7cf9d8-0130-11ed-ba43-dac502259ad0.png

左边是原有的信息,右边是通过算法生成的新数据

6d9a4556-0130-11ed-ba43-dac502259ad0.png

就像这样

在上图中,出现的算法是最近邻算法,也称为近端插值,是一维或多维空中多元插值的一种简单方法。插值是通过已知的离散数据点在一定范围内寻找新数据点的过程或方法。最近邻插值算法选择最接近数据点的值,完全不考虑其他相邻点的值,从而生成一个分段常数插值值作为数据点的值。线性的插值算法是双线插值是二维坐标系下线性插值的扩展,用于插值二元函数。它的核心思想是在两个方向上执行一次线性插值。

关于这里的图像算法我不想说什么,等之后我会补上。简单来说在数据给的少的情况下我们都可以考虑使用插值算法来生成新数据或者是改善。

注意我们处理的是离散数据:离散数据是指其数值只能用自然数或整数单位计算的数据。

离散函数:定义域是离散集合的函数称为离散函数。其函数图像为一系列离散的点。

在离散数据的基础上补插连续函数,使得这条连续曲线通过全部给定的离散数据点。 插值是离散函数逼近的重要方法,利用它可通过函数在有限个点处的取值状况,估算出函数在其他点处的近似值。

理论就这么多了(其实也没有理论就是说下基本的概念)

牛逼的插值算法来自:

6dab61d8-0130-11ed-ba43-dac502259ad0.jpg

《自然哲学的数学原理》的第三卷的引理五

对牛顿插值来说,它最大的特点是引入了差商这个概念。差商即均差,一阶差商是一阶导数的近似值。对等步长(h)的离散函数f(x),其n阶差商就是它的n阶差分与其步长的n次幂的比值。例如n=1时,若差分取向前的或向后的,所得一阶差商就是函数的导数的一阶近似;若差分取中心的,则所得一阶差商是导数的二阶近似。

6de97360-0130-11ed-ba43-dac502259ad0.png

对一个f(x)可以构造差商表来递推的给出差商

6e15525a-0130-11ed-ba43-dac502259ad0.png

计算的公式就是这样,因为是重复同一种范式,所以程序实现可以使用递归

6e35f3d4-0130-11ed-ba43-dac502259ad0.png

事实上我们应该给出一点更加规范的论证(不就是个导数)

有了上面的定义,作用是给出每一项的系数。具体推导是这样的:

6e6bef5c-0130-11ed-ba43-dac502259ad0.png

最后的就是我们的插值公式

6e9139ba-0130-11ed-ba43-dac502259ad0.png

为了看起来平易近人,可以写成这样

6e9fd8f8-0130-11ed-ba43-dac502259ad0.png

6ec6e0e2-0130-11ed-ba43-dac502259ad0.png

还有一种是等间距的插值计算,在下面的计算中间距设置为h(方向为前向差分)

6ee646bc-0130-11ed-ba43-dac502259ad0.png

6f0436d6-0130-11ed-ba43-dac502259ad0.png

这个图就完美了!!!

6f25a1c2-0130-11ed-ba43-dac502259ad0.png

二阶的前向差分后和后向差分都在这里了

牛顿插值作为一种常用的数值拟合方法,因其计算简单,方便进行大量插值点的计算。在实验中经常出现只能测量得到离散数据点的情况,或者只能用数值解表示某对应关系之时,可以使用牛顿插值公式,对离散点进行拟合,得到较为准确的函数解析值。

牛顿真厉害啊,几百年前他万万没有想到,一个小辈大晚上的还得研究人家随手写的东西。

牛顿插值算法的优点是,每一个新项的生成都不需要庞大的算力,对前一项进行计算就行,拉格朗日的算法是每一个新项都需要对基函数完全计算,耗费算力。最后我们的泰勒公式其实就是对牛顿的插值算法进行了改进:

6f8294f4-0130-11ed-ba43-dac502259ad0.png

就记几项就行

对了,插值是针对自变量的任何中间值估计函数值的技术,而计算给定范围之外的函数值的过程称为外插。

6f98f6cc-0130-11ed-ba43-dac502259ad0.png

u是啥?别着急

6fb521a8-0130-11ed-ba43-dac502259ad0.png

这个公式对于在给定值集的开头附近插值 f(x) 的值特别有用。h 称为差值区间,u = ( x – a ) / h,这里 a 是第一项。

函数就是算这个的。

6fd1e7f2-0130-11ed-ba43-dac502259ad0.png

测试

6fe93f38-0130-11ed-ba43-dac502259ad0.png

下面的分母,需要求阶乘,这里也准备一个小函数

70029456-0130-11ed-ba43-dac502259ad0.png

将输入的值转为整型,准备一个list,将输入的值输入到空白的二维数值表。

701da2e6-0130-11ed-ba43-dac502259ad0.png

就像这样

7049295c-0130-11ed-ba43-dac502259ad0.png

这个没有什么好说的,就是将输入的值解到该有的位置,而且计算差分值。

706e09ac-0130-11ed-ba43-dac502259ad0.png

最后输入插值表

潘老师的数值分析讲义是我见过相当不错的

7093a5ae-0130-11ed-ba43-dac502259ad0.png

如图

?

70b7a72e-0130-11ed-ba43-dac502259ad0.png

嘻嘻,以前还问过老师的参考资料

https://math.ecnu.edu.cn/~jypan/Teaching/NA/index.html

70dbfe80-0130-11ed-ba43-dac502259ad0.png

讲义一览

https://www.zhihu.com/question/26692289

https://www.geeksforgeeks.org/newton-forward-backward-interpolation/

7106fb30-0130-11ed-ba43-dac502259ad0.png

非常多的数值算法的实现

原文标题:Python实现所有算法-牛顿前向插值

文章出处:【微信公众号:云深之无迹】欢迎添加关注!文章转载请注明出处。

审核编辑:彭静
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据
    +关注

    关注

    8

    文章

    7264

    浏览量

    92376
  • 函数
    +关注

    关注

    3

    文章

    4388

    浏览量

    65289
  • python
    +关注

    关注

    56

    文章

    4832

    浏览量

    87753

原文标题:Python实现所有算法-牛顿前向插值

文章出处:【微信号:TT1827652464,微信公众号:云深之无迹】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    python入门圣经-高清电子书(建议下载)

    此资料内容是一本针对所有层次的Python 读者而作的Python 入门电子书。 全书分两部分:第一部分介绍用Python 编程所必须了解的基本概念,包括matplotlib、NumP
    发表于 04-10 16:53

    基于事件相机的统一帧与自适应去模糊框架(REFID)

    )的解决方案。团队提出了一种基于事件相机的统一帧与自适应去模糊框架(REFID)。该框架基于双向递归网络,结合事件流和图像信息,自适应地融合来自不同时间点的信息,从而能够在模糊的输入帧情况下同步实现
    的头像 发表于 03-14 11:48 ?933次阅读
    基于事件相机的统一帧<b class='flag-5'>插</b><b class='flag-5'>值</b>与自适应去模糊框架(REFID)

    什么是BP神经网络的反向传播算法

    BP神经网络的反向传播算法(Backpropagation Algorithm)是一种用于训练神经网络的有效方法。以下是关于BP神经网络的反向传播算法的介绍: 一、基本概念 反向传播算法
    的头像 发表于 02-12 15:18 ?890次阅读

    ZMC600E运动控制器直线和圆弧算法详解

    导读想深入了解ZMC600E运动控制器的算法吗?空间直线插补适用于精确定位,圆弧补提供平滑曲线过渡。合理应用这些算法,能提升多轴协同能力,保障工作精度与可靠性,让工业自动化更高效
    的头像 发表于 01-20 11:39 ?672次阅读
    ZMC600E运动控制器直线和圆弧<b class='flag-5'>插</b>补<b class='flag-5'>算法</b>详解

    算法加速的概念、意义、流程和应用

    本文介绍算法加速的概念、意义、流程和应用 一、什么是算法加速 面向“最耗时”的部分做专用化处理: 在软件运行时,总有一些特定算法会消耗大量 CPU 资源,比如加密解密、图像处理或神经网
    的头像 发表于 01-15 09:34 ?677次阅读

    请问DAC39J84内部方式是0吗?

    请问DAC39J84内部方式是0吗? 请问2x 4x 8x 16x 过程分别是怎样
    发表于 01-03 06:41

    Teledyne Lecroy示波器算法

    示波器是通过内部硬件ADC对模拟信号采样来获取离散的数据点,然而这些离散的数据点有时难以完整呈现出原始模拟信号的全貌。软件算法的意义就在于,它能够依据特定的数学算法,在已采集的数据
    的头像 发表于 12-24 16:11 ?1405次阅读

    DAC3482在字输入模式下,FIFO的输出时钟速率为什么是DACCLK/2/因子?

    下图是DAC3482中描述FIFO模块的附图,想问下这里在字输入模式下,FIFO的输出时钟速率为什么是DACCLK/2/因子?
    发表于 12-20 16:31

    一个月速成python+OpenCV图像处理

    适用于哪些场景,然后通过Python编写代码来实现这些算法,并应用于实际项目中,实现图像的检测、识别、分类、定位、测量等目标。本文将介绍一个高效学习Python+O
    的头像 发表于 11-29 18:27 ?505次阅读
    一个月速成<b class='flag-5'>python</b>+OpenCV图像处理

    sma板公头针的装配方法

    德索工程师说道在进行SMA板公头针的装配之前,需要进行一系列的准备工作,以确保装配过程的顺利进行和装配质量的可靠性。
    的头像 发表于 11-15 15:44 ?834次阅读
    sma<b class='flag-5'>插</b>板公头<b class='flag-5'>插</b>针的装配方法

    如何使用Python实现PID控制

    PID控制(比例-积分-微分控制)是一种常见的反馈控制算法,广泛应用于工业控制系统中。在Python中实现PID控制,我们可以遵循以下步骤: 1. 理解PID控制原理 PID控制器有三个主要参数
    的头像 发表于 11-14 09:09 ?1719次阅读

    如何在Python中使用socket

    1. 基本概念 在开始使用socket之前,我们需要了解一些基本的网络通信概念: IP地址 :用于标识网络上的设备。 端口 :用于标识设备上的特定服务。 协议 :用于规定数据传输的规则,如TCP
    的头像 发表于 11-01 16:10 ?837次阅读

    Python中多线程和多进程的区别

    Python作为一种高级编程语言,提供了多种并发编程的方式,其中多线程与多进程是最常见的两种方式之一。在本文中,我们将探讨Python中多线程与多进程的概念、区别以及如何使用线程池与进程池来提高并发执行效率。
    的头像 发表于 10-23 11:48 ?1108次阅读
    <b class='flag-5'>Python</b>中多线程和多进程的区别

    详解寄存器模型镜像

    DUT的配置寄存器的是实际,reg_model有镜像、期望概念
    的头像 发表于 10-23 09:43 ?1152次阅读
    详解寄存器模型镜像<b class='flag-5'>值</b>

    【「时间序列与机器学习」阅读体验】时间序列的信息提取

    模型效果与性能的过程。 时间序列的缺失填充方法有:法;回归填充;均值/中位数/众数填充;可以借助 Python 的 Pandas库,通过前向填充、后向填充、线性
    发表于 08-17 21:12