0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Python實現(xiàn)所有算法之牛頓前向插值介紹

云深之無跡 ? 來源:云深之無跡 ? 作者:云深之無跡 ? 2022-07-12 09:50 ? 次閱讀

今天的算法是插值,細分是牛頓插值。關(guān)于插值可能大家聽到最多的就是圖像插值,比如100元的攝像頭有4K的分辨率???其實這里就是使用的插值算法,通過已經(jīng)有的數(shù)據(jù)再生成一些,相當(dāng)于提升了數(shù)據(jù)的量。如果我們想放大圖像,我們需要使用過采樣算法來擴展矩陣。

pYYBAGLM05eAY2MjAABSXYv1LA4273.jpg

左邊是原有的信息,右邊是通過算法生成的新數(shù)據(jù)

poYBAGLM07GAJrhsAAA6-21HT14198.jpg

就像這樣

在上圖中,出現(xiàn)的算法是最近鄰算法,也稱為近端插值,是一維或多維空中多元插值的一種簡單方法。插值是通過已知的離散數(shù)據(jù)點在一定范圍內(nèi)尋找新數(shù)據(jù)點的過程或方法。最近鄰插值算法選擇最接近數(shù)據(jù)點的值,完全不考慮其他相鄰點的值,從而生成一個分段常數(shù)插值值作為數(shù)據(jù)點的值。線性的插值算法是雙線插值是二維坐標(biāo)系下線性插值的擴展,用于插值二元函數(shù)。它的核心思想是在兩個方向上執(zhí)行一次線性插值。

關(guān)于這里的圖像算法我不想說什么,等之后我會補上。簡單來說在數(shù)據(jù)給的少的情況下我們都可以考慮使用插值算法來生成新數(shù)據(jù)或者是改善。

注意我們處理的是離散數(shù)據(jù):離散數(shù)據(jù)是指其數(shù)值只能用自然數(shù)或整數(shù)單位計算的數(shù)據(jù)。

離散函數(shù):定義域是離散集合的函數(shù)稱為離散函數(shù)。其函數(shù)圖像為一系列離散的點。

在離散數(shù)據(jù)的基礎(chǔ)上補插連續(xù)函數(shù),使得這條連續(xù)曲線通過全部給定的離散數(shù)據(jù)點。插值是離散函數(shù)逼近的重要方法,利用它可通過函數(shù)在有限個點處的取值狀況,估算出函數(shù)在其他點處的近似值。

理論就這么多了(其實也沒有理論就是說下基本的概念)

牛逼的插值算法來自:

pYYBAGLM09OAZknNAAD6MBEqCls456.jpg

《自然哲學(xué)的數(shù)學(xué)原理》的第三卷的引理五

對牛頓插值來說,它最大的特點是引入了差商這個概念。差商即均差,一階差商是一階導(dǎo)數(shù)的近似值。對等步長(h)的離散函數(shù)f(x),其n階差商就是它的n階差分與其步長的n次冪的比值。例如n=1時,若差分取向前的或向后的,所得一階差商就是函數(shù)的導(dǎo)數(shù)的一階近似;若差分取中心的,則所得一階差商是導(dǎo)數(shù)的二階近似。

poYBAGLM0-2AZ1ifAAAr20LICPg988.jpg

對一個f(x)可以構(gòu)造差商表來遞推的給出差商

poYBAGLM1AuAXX1jAABEQbNlCaI204.jpg

計算的公式就是這樣,因為是重復(fù)同一種范式,所以程序?qū)崿F(xiàn)可以使用遞歸

poYBAGLM1CeAZIogAAB-MbMOFT4171.jpg

事實上我們應(yīng)該給出一點更加規(guī)范的論證(不就是個導(dǎo)數(shù))

有了上面的定義,作用是給出每一項的系數(shù)。具體推導(dǎo)是這樣的:

poYBAGLM1FeAXT7gAABhV2RhS40520.jpg

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

poYBAGLM1GiADQ0yAAArcyIHX5o549.jpg

為了看起來平易近人,可以寫成這樣

pYYBAGLM1HyABJjiAABlTQWKzPU147.jpg

poYBAGLM1JaAZutKAACqgUCg7kc242.jpg

還有一種是等間距的插值計算,在下面的計算中間距設(shè)置為h(方向為前向差分)

pYYBAGLM1LOAAr3KAAA7QwPpUJA856.jpg

pYYBAGLM1M2AMHhPAAB_DZIy0_4197.jpg

這個圖就完美了?。。?/p>

poYBAGLM1OSAGD-YAABi5TFUN74249.jpg

二階的前向差分后和后向差分都在這里了

牛頓插值作為一種常用的數(shù)值擬合方法,因其計算簡單,方便進行大量插值點的計算。在實驗中經(jīng)常出現(xiàn)只能測量得到離散數(shù)據(jù)點的情況,或者只能用數(shù)值解表示某對應(yīng)關(guān)系之時,可以使用牛頓插值公式,對離散點進行擬合,得到較為準(zhǔn)確的函數(shù)解析值。

牛頓真厲害啊,幾百年前他萬萬沒有想到,一個小輩大晚上的還得研究人家隨手寫的東西。

牛頓插值算法的優(yōu)點是,每一個新項的生成都不需要龐大的算力,對前一項進行計算就行,拉格朗日的算法是每一個新項都需要對基函數(shù)完全計算,耗費算力。最后我們的泰勒公式其實就是對牛頓的插值算法進行了改進:

poYBAGLM1P2AH3lYAABR6nRwpEg615.jpg

就記幾項就行

對了,插值是針對自變量的任何中間值估計函數(shù)值的技術(shù),而計算給定范圍之外的函數(shù)值的過程稱為外插。

pYYBAGLM1RuACxZaAABXD7Z-QxA343.jpg

u是啥?別著急

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

這個公式對于在給定值集的開頭附近插值 f(x) 的值特別有用。h 稱為差值區(qū)間,u = ( x – a ) / h,這里 a 是第一項。

函數(shù)就是算這個的。

poYBAGLM1TWAFJagAADMkRcDMQU489.jpg

測試

pYYBAGLM1U2ARMvSAACn-ZKwtzc850.jpg

下面的分母,需要求階乘,這里也準(zhǔn)備一個小函數(shù)

pYYBAGLM1WKAEClrAAB6xe5bwVI571.jpg

將輸入的值轉(zhuǎn)為整型,準(zhǔn)備一個list,將輸入的值輸入到空白的二維數(shù)值表。

pYYBAGLM1YOAVzamAAB5fTLPMHg431.jpg

就像這樣

pYYBAGLM1ZyAQKvHAAB3rg42HVY531.jpg

這個沒有什么好說的,就是將輸入的值解到該有的位置,而且計算差分值。

pYYBAGLM1b6ARk22AABN-NtS8B0728.jpg


審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4624

    瀏覽量

    93119
  • 矩陣
    +關(guān)注

    關(guān)注

    0

    文章

    423

    瀏覽量

    34596
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4801

    瀏覽量

    84878
收藏 人收藏

    評論

    相關(guān)推薦

    請問DAC39J84內(nèi)部方式是0嗎?

    請問DAC39J84內(nèi)部方式是0嗎? 請問2x 4x 8x 16x 過程分別是怎樣
    發(fā)表于 01-03 06:41

    Teledyne Lecroy示波器算法

    示波器是通過內(nèi)部硬件ADC對模擬信號采樣來獲取離散的數(shù)據(jù)點,然而這些離散的數(shù)據(jù)點有時難以完整呈現(xiàn)出原始模擬信號的全貌。軟件算法的意義就在于,它能夠依據(jù)特定的數(shù)學(xué)算法,在已采集的數(shù)據(jù)
    的頭像 發(fā)表于 12-24 16:11 ?329次閱讀

    【「從算法到電路—數(shù)字芯片算法的電路實現(xiàn)」閱讀體驗】+介紹基礎(chǔ)硬件算法模塊

    作為嵌入式開發(fā)者往往比較關(guān)注硬件和軟件的協(xié)調(diào)。本書介紹了除法器,信號發(fā)生器,濾波器,分頻器等基本算法的電路實現(xiàn),雖然都是基礎(chǔ)內(nèi)容,但是也是最常用到的基本模塊。 隨著逆全球化趨勢的出現(xiàn),過去的研發(fā)
    發(fā)表于 11-21 17:05

    【「從算法到電路—數(shù)字芯片算法的電路實現(xiàn)」閱讀體驗】+第九章sigma delta adc閱讀與分享

    sigma-deleta ADC https://mp.weixin.qq.com/s/0grIIVJGTnXQQy5_ahN3SQPDM系列文章之三:sigma-deleta思想應(yīng)用實踐降幀率算法 本文后面還介紹
    發(fā)表于 11-20 13:58

    【「從算法到電路—數(shù)字芯片算法的電路實現(xiàn)」閱讀體驗】+一本介紹基礎(chǔ)硬件算法模塊實現(xiàn)的好書

    作為嵌入式開發(fā)者往往比較關(guān)注硬件和軟件的協(xié)調(diào)。本書介紹了除法器,信號發(fā)生器,濾波器,分頻器等基本算法的電路實現(xiàn),雖然都是基礎(chǔ)內(nèi)容,但是也是最常用到的基本模塊,本書的內(nèi)容比較對本人胃口。 我們先來
    發(fā)表于 11-20 13:42

    【每天學(xué)點AI】傳播、損失函數(shù)、反向傳播

    在深度學(xué)習(xí)的領(lǐng)域中,傳播、反向傳播和損失函數(shù)是構(gòu)建和訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型的三個核心概念。今天,小編將通過一個簡單的實例,解釋這三個概念,并展示它們的作用。傳播:神經(jīng)網(wǎng)絡(luò)的“思考”過
    的頭像 發(fā)表于 11-15 10:32 ?733次閱讀
    【每天學(xué)點AI】<b class='flag-5'>前</b><b class='flag-5'>向</b>傳播、損失函數(shù)、反向傳播

    如何使用Python實現(xiàn)PID控制

    PID控制(比例-積分-微分控制)是一種常見的反饋控制算法,廣泛應(yīng)用于工業(yè)控制系統(tǒng)中。在Python實現(xiàn)PID控制,我們可以遵循以下步驟: 1. 理解PID控制原理 PID控制器有三個主要參數(shù)
    的頭像 發(fā)表于 11-14 09:09 ?581次閱讀

    Python建模算法與應(yīng)用

    上成為理想的腳本語言,特別適用于快速的應(yīng)用程序開發(fā)。本文將詳細介紹Python在建模算法中的應(yīng)用,包括常見的建模算法、Python在建模中的
    的頭像 發(fā)表于 07-24 10:41 ?607次閱讀

    如何實現(xiàn)Python復(fù)制文件操作

    Python 中有許多“開蓋即食”的模塊(比如 os,subprocess 和 shutil)以支持文件 I/O 操作。在這篇文章中,你將會看到一些用 Python 實現(xiàn)文件復(fù)制的特殊方法。下面我們開始學(xué)習(xí)這九種不同的方法來
    的頭像 發(fā)表于 07-18 14:53 ?448次閱讀

    使用NumPy實現(xiàn)饋神經(jīng)網(wǎng)絡(luò)

    反向傳播算法來更新網(wǎng)絡(luò)權(quán)重和偏置。這里,我將詳細介紹一個包含單個隱藏層的饋神經(jīng)網(wǎng)絡(luò)的實現(xiàn),但請注意,由于篇幅限制,完整的2000字可能無法涵蓋所有
    的頭像 發(fā)表于 07-11 16:30 ?1756次閱讀

    神經(jīng)網(wǎng)絡(luò)反向傳播算法的推導(dǎo)過程

    反向傳播算法的推導(dǎo)過程,包括傳播、損失函數(shù)、梯度計算和權(quán)重更新等步驟。 傳播
    的頭像 發(fā)表于 07-03 11:13 ?640次閱讀

    神經(jīng)網(wǎng)絡(luò)傳播和反向傳播區(qū)別

    神經(jīng)網(wǎng)絡(luò)是一種強大的機器學(xué)習(xí)模型,廣泛應(yīng)用于各種領(lǐng)域,如圖像識別、語音識別、自然語言處理等。神經(jīng)網(wǎng)絡(luò)的核心是傳播和反向傳播算法。本文將詳細介紹神經(jīng)網(wǎng)絡(luò)的
    的頭像 發(fā)表于 07-02 14:18 ?883次閱讀

    CNC系統(tǒng)的補運算介紹

    程序,通過計算機對刀具運動軌跡進行計算和控制,以實現(xiàn)高精度、高效率的加工過程。補運算是數(shù)控系統(tǒng)的核心功能之一,它直接影響到加工精度、加工效率和加工質(zhì)量。 二、CNC系統(tǒng)補運算的原理
    的頭像 發(fā)表于 07-01 11:21 ?1141次閱讀

    如何在labview FPGA端實現(xiàn)二維的功能?

    例如,現(xiàn)在有X,C,W三個,每一組(X.C)對應(yīng)一個W,我擁有幾組(X,C)和W的對應(yīng)關(guān)系(即具體數(shù)值),我要根據(jù)未知的一組(X,C)來通過值得到W。其中X和C沒有對應(yīng)關(guān)系,請
    發(fā)表于 05-15 14:59

    Python智能家居系統(tǒng)代碼介紹

    Python智能家居系統(tǒng)是一種基于Python編程語言開發(fā)的智能家居控制系統(tǒng),在現(xiàn)代家庭中得到了越來越廣泛的應(yīng)用。本文將詳細介紹Python智能家居系統(tǒng)的代碼
    的頭像 發(fā)表于 01-25 09:46 ?1416次閱讀