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

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

3天内不再提示

Python实现所有算法之牛顿前向插值介绍

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

扫码添加小助手

加入工程师交流群

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

pYYBAGLM05eAY2MjAABSXYv1LA4273.jpg

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

poYBAGLM07GAJrhsAAA6-21HT14198.jpg

就像这样

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

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

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

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

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

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

牛逼的插值算法来自:

pYYBAGLM09OAZknNAAD6MBEqCls456.jpg

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

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

poYBAGLM0-2AZ1ifAAAr20LICPg988.jpg

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

poYBAGLM1AuAXX1jAABEQbNlCaI204.jpg

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

poYBAGLM1CeAZIogAAB-MbMOFT4171.jpg

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

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

poYBAGLM1FeAXT7gAABhV2RhS40520.jpg

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

poYBAGLM1GiADQ0yAAArcyIHX5o549.jpg

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

pYYBAGLM1HyABJjiAABlTQWKzPU147.jpg

poYBAGLM1JaAZutKAACqgUCg7kc242.jpg

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

pYYBAGLM1LOAAr3KAAA7QwPpUJA856.jpg

pYYBAGLM1M2AMHhPAAB_DZIy0_4197.jpg

这个图就完美了!!!

poYBAGLM1OSAGD-YAABi5TFUN74249.jpg

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

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

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

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

poYBAGLM1P2AH3lYAABR6nRwpEg615.jpg

就记几项就行

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

pYYBAGLM1RuACxZaAABXD7Z-QxA343.jpg

u是啥?别着急

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

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

函数就是算这个的。

poYBAGLM1TWAFJagAADMkRcDMQU489.jpg

测试

pYYBAGLM1U2ARMvSAACn-ZKwtzc850.jpg

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

pYYBAGLM1WKAEClrAAB6xe5bwVI571.jpg

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

pYYBAGLM1YOAVzamAAB5fTLPMHg431.jpg

就像这样

pYYBAGLM1ZyAQKvHAAB3rg42HVY531.jpg

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

pYYBAGLM1b6ARk22AABN-NtS8B0728.jpg


审核编辑:刘清

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

    关注

    23

    文章

    4800

    浏览量

    98500
  • 矩阵
    +关注

    关注

    1

    文章

    450

    浏览量

    36235
  • python
    +关注

    关注

    58

    文章

    4882

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    FEC纠错技术:让无线传输“自我修复”的通信卫士

    纠错技术默默守护着数据的完整抵达,成为高可靠传输系统中不可或缺的“纠错卫士”。 五、结语 成都泽耀科技无线模块从空中信号到存储介质,从实时流媒体到远程传感,纠错以冗余换可靠,以算法保完整,在看不见的数据通道中,确保每一比特都
    发表于 04-09 10:10

    [VirtualLab] 使用Python运行VirtualLab Fusion光学仿真

    摘要 VirtualLab Fusion允许Python外部访问其建模技术、求解器和结果。这个用例介绍了一种使用路径变量和Visual Studio代码将Python连接到VirtualLab
    发表于 03-31 09:39

    FEC纠错技术:让无线传输“自我修复”的通信卫士

    一、什么是纠错(FEC)?纠错(Forward Error Correction,FEC)是一种通过在数据传输中增加冗余校验信息,使接收端能够自行检测并纠正错误的通信技术。它特
    发表于 03-27 15:51

    算法工程师需要具备哪些技能?

    算法工程师需要掌握一系列跨学科的技能,涵盖数学基础、编程能力、算法理论、工程实践以及业务理解等多个方面。 以下是具体技能及学习建议: 线性代数核心内容:矩阵运算、特征分解、向量空间等。应用场
    发表于 02-27 10:53

    Python运行本地Web服务并实现远程访问

    本文介绍使用Python搭建本地Web服务并结合 ZeroNews 实现公网访问。
    的头像 发表于 02-06 11:39 310次阅读
    <b class='flag-5'>Python</b>运行本地Web服务并<b class='flag-5'>实现</b>远程访问

    PID控制的算法

    PID及其衍生算法是应用最广泛的算法之一,是当之无愧的万能算法,如果能够熟练掌握PID算法的设计与实现过程,对于一般的研发人员来讲,应该是足
    发表于 01-23 08:18

    FEC纠错技术:让无线传输“自我修复”的通信卫士

    一、什么是纠错(FEC)?纠错(Forward Error Correction,FEC)是一种通过在数据传输中增加冗余校验信息,使接收端能够自行检测并纠正错误的通信技术。它特
    发表于 01-09 14:12

    没有专利的opencv-python 版本

    所有 官方发布的 opencv-python 核心版本(无 contrib 扩展)都无专利风险——专利问题仅存在于 opencv-contrib-python 扩展模块中的少数算法(如
    发表于 12-13 12:37

    SM4算法实现分享(一)算法原理

    ,Xi、Yi、rki为字,i=0,1,2,…,31。则本算法的加密实现为: 本算法的解密实现与加密实现结构是相同的,不同的只是提供的轮
    发表于 10-30 08:10

    AES加解密算法逻辑实现及其在蜂鸟E203SoC上的应用介绍

    这次分享我们会简要介绍AES加解密算法的逻辑实现,以及如何将AES算法做成硬件协处理器集成在蜂鸟E203 SoC上。 AES算法
    发表于 10-29 07:29

    Newton-Raphson算法实现浮点除法(七)

    牛顿迭代算法,一直逼近于f(x) = 0的点,则有xi+1 = xi (2 - xi b),这样我们能够用下述步骤实现a/b: 1)把b移位,使其满足0.5≤b&lt;1; 2
    发表于 10-24 07:53

    基于FPGA实现FOC算法PWM模块设计

    哈喽,大家好,从今天开始正式带领大家从零到一,在FPGA平台上实现FOC算法,整个算法的框架如下图所示,如果大家对算法的原理不是特别清楚的话,可以先去百度上学习一下,本教程着重
    的头像 发表于 07-17 15:21 3681次阅读
    基于FPGA<b class='flag-5'>实现</b>FOC<b class='flag-5'>算法</b><b class='flag-5'>之</b>PWM模块设计

    基于FPGA的压缩算法加速实现

    本设计中,计划实现对文件的压缩及解压,同时优化压缩中所涉及的信号处理和计算密集型功能,实现对其的加速处理。本设计的最终目标是证明在充分并行化的硬件体系结构 FPGA 上实现算法时,可
    的头像 发表于 07-10 11:09 2565次阅读
    基于FPGA的压缩<b class='flag-5'>算法</b>加速<b class='flag-5'>实现</b>

    跟老齐学Python:从入门到精通

    本帖最后由 yuu_cool 于 2025-6-3 16:52 编辑 本资料是面向编程零基础读者的Python 入门教程,内容涵盖了Python 的基础知识和初步应用。以比较轻快的风格,零基
    发表于 06-03 16:10

    黑芝麻智能视觉与4D毫米波雷达融合算法介绍

    本文介绍了黑芝麻智能视觉与4D毫米波雷达融合算法,通过多模态特征对齐和时序建模,显著提升逆光、遮挡等复杂场景下的目标检测精度,增强辅助驾驶安全性。
    的头像 发表于 05-08 09:27 2792次阅读
    黑芝麻智能视觉与4D毫米波雷达<b class='flag-5'>前</b>融合<b class='flag-5'>算法</b><b class='flag-5'>介绍</b>