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

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

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

Python插值算法基本的概念

云深之無(wú)跡 ? 來(lái)源:云深之無(wú)跡 ? 作者:云深之無(wú)跡 ? 2022-07-12 10:03 ? 次閱讀

Python實(shí)現(xiàn)所有算法-二分法

Python實(shí)現(xiàn)所有算法-力系統(tǒng)是否靜態(tài)平衡

Python實(shí)現(xiàn)所有算法-力系統(tǒng)是否靜態(tài)平衡(補(bǔ)篇)

Python實(shí)現(xiàn)所有算法-高斯消除法

Python實(shí)現(xiàn)所有算法-牛頓-拉夫遜(拉弗森)方法

Python實(shí)現(xiàn)所有算法-雅可比方法(Jacobian)

Python實(shí)現(xiàn)所有算法-矩陣的LU分解

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

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

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

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

就像這樣

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

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

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

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

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

理論就這么多了(其實(shí)也沒(méi)有理論就是說(shuō)下基本的概念)

牛逼的插值算法來(lái)自:

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

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

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

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

對(duì)一個(gè)f(x)可以構(gòu)造差商表來(lái)遞推的給出差商

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

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

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

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

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

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

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

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

為了看起來(lái)平易近人,可以寫(xiě)成這樣

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

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

還有一種是等間距的插值計(jì)算,在下面的計(jì)算中間距設(shè)置為h(方向?yàn)榍跋虿罘郑?/p>

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

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

這個(gè)圖就完美了?。。?/p>

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

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

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

牛頓真厲害啊,幾百年前他萬(wàn)萬(wàn)沒(méi)有想到,一個(gè)小輩大晚上的還得研究人家隨手寫(xiě)的東西。

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

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

就記幾項(xiàng)就行

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

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

u是啥?別著急

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

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

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

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

測(cè)試

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

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

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

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

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

就像這樣

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

這個(gè)沒(méi)有什么好說(shuō)的,就是將輸入的值解到該有的位置,而且計(jì)算差分值。

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

最后輸入插值表

潘老師的數(shù)值分析講義是我見(jiàn)過(guò)相當(dāng)不錯(cuò)的

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

如圖

?

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

嘻嘻,以前還問(wèn)過(guò)老師的參考資料

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

非常多的數(shù)值算法的實(shí)現(xiàn)

原文標(biāo)題:Python實(shí)現(xiàn)所有算法-牛頓前向插值

文章出處:【微信公眾號(hào):云深之無(wú)跡】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

    關(guān)注

    8

    文章

    6764

    瀏覽量

    88633
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4262

    瀏覽量

    62238
  • python
    +關(guān)注

    關(guān)注

    54

    文章

    4759

    瀏覽量

    84296

原文標(biāo)題:Python實(shí)現(xiàn)所有算法-牛頓前向插值

文章出處:【微信號(hào):TT1827652464,微信公眾號(hào):云深之無(wú)跡】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

    上成為理想的腳本語(yǔ)言,特別適用于快速的應(yīng)用程序開(kāi)發(fā)。本文將詳細(xì)介紹Python在建模算法中的應(yīng)用,包括常見(jiàn)的建模算法、Python在建模中的優(yōu)勢(shì)、常用庫(kù)以及實(shí)際案例。
    的頭像 發(fā)表于 07-24 10:41 ?372次閱讀

    什么是線性插值?一維線性插值和雙線性插值在BMS開(kāi)發(fā)中的應(yīng)用

    線性插值法(linear interpolation),是指使用連接兩個(gè)已知量的直線來(lái)確定在這兩個(gè)已知量之間的一個(gè)未知量的的方法。
    的頭像 發(fā)表于 12-24 10:44 ?7914次閱讀
    什么是線性<b class='flag-5'>插值</b>?一維線性<b class='flag-5'>插值</b>和雙線性<b class='flag-5'>插值</b>在BMS開(kāi)發(fā)中的應(yīng)用

    傳感器數(shù)據(jù)融合算法python代碼

    的原理和應(yīng)用,并給出一些使用Python編程語(yǔ)言實(shí)現(xiàn)傳感器數(shù)據(jù)融合算法的示例代碼。 首先,讓我們來(lái)了解傳感器數(shù)據(jù)融合算法的原理。傳感器數(shù)據(jù)融合算法的一個(gè)關(guān)鍵
    的頭像 發(fā)表于 12-15 10:28 ?1263次閱讀

    圖像理論研究之雙三次插值

    雙三次插值又叫雙立方,用于在圖像中“”(Interpolating)或增加“像素”(Pixel)數(shù)量/密度的一種方法。通常利用
    的頭像 發(fā)表于 12-14 14:35 ?949次閱讀
    圖像<b class='flag-5'>插</b><b class='flag-5'>值</b>理論研究之雙三次<b class='flag-5'>插值</b>

    python中如何交換兩個(gè)數(shù)的相加

    Python是一種簡(jiǎn)單易學(xué)的高級(jí)語(yǔ)言,其交換兩個(gè)數(shù)的相加是一種常見(jiàn)的操作。交換變量的可以在許多情況下發(fā)揮作用,如算法、排序、邏輯控制等。本文將詳細(xì)介紹
    的頭像 發(fā)表于 11-29 17:29 ?581次閱讀

    基于FPGA的線性插值-中

    上次分享了基于FPGA的線性插值的背景和方法原理,今天分享 方法原理的驗(yàn)證。 通常FPGA的開(kāi)發(fā)分為電路功能設(shè)計(jì)、設(shè)計(jì)輸入、功能仿真、綜合優(yōu)化、綜合后仿真、實(shí)現(xiàn)、布線后仿真、板級(jí)仿真以及芯片編程
    發(fā)表于 11-23 23:09

    python中input怎么輸入3個(gè)

    Python 中,可以使用 input() 函數(shù)來(lái)獲取用戶的輸入。如果你想要輸入多個(gè),可以根據(jù)具體的需求使用以下方法。 方法一:使用多個(gè) input 函數(shù) 最簡(jiǎn)單的方法是使用多個(gè) input
    的頭像 發(fā)表于 11-23 15:31 ?8579次閱讀

    Python中互換X和Y的

    Python中,我們可以通過(guò)使用一個(gè)中間變量來(lái)互換X和Y的。具體的步驟如下: 步驟一:定義X和Y的 首先,我們需要定義X和Y的初始。我們可以使用
    的頭像 發(fā)表于 11-22 11:00 ?2205次閱讀

    python編程交換a和b的

    交換a和b的是編程中的一個(gè)基礎(chǔ)操作。在Python中,有多種方法可以實(shí)現(xiàn)這個(gè)任務(wù)。本文將詳細(xì)介紹幾種常見(jiàn)的交換方法,并給出具體的示例代碼。 方法一:使用第三個(gè)變量 最常見(jiàn)和簡(jiǎn)單的方法是使用第三個(gè)
    的頭像 發(fā)表于 11-22 10:58 ?6163次閱讀

    python怎么把for循環(huán)的拿出來(lái)

    Python中可以使用for循環(huán)來(lái)遍歷一個(gè)序列或者迭代器中的元素。當(dāng)我們希望將for循環(huán)中的取出來(lái)并進(jìn)行其他操作時(shí),我們可以使用一些方法和技巧來(lái)實(shí)現(xiàn)。 一、使用列表解析 列表解析是一種創(chuàng)建新列表
    的頭像 發(fā)表于 11-22 09:54 ?2965次閱讀

    python函數(shù)返回多個(gè)參數(shù)

    函數(shù)是程序設(shè)計(jì)中的一個(gè)重要概念,在很多編程語(yǔ)言中都存在。函數(shù)可以接受輸入數(shù)據(jù),并且根據(jù)輸入數(shù)據(jù)進(jìn)行一系列操作,最后可以返回一個(gè)或多個(gè)結(jié)果。Python是一種非常流行的編程語(yǔ)言,也支持函數(shù)返回多個(gè)參數(shù)
    的頭像 發(fā)表于 11-21 16:37 ?1061次閱讀

    python怎么把list里面的取出來(lái)

    Python語(yǔ)言的列表(List)是一種非常常用和靈活的數(shù)據(jù)類型,它可以存儲(chǔ)多個(gè)元素,并允許對(duì)這些元素進(jìn)行各種操作。在Python中,可以使用簡(jiǎn)單的語(yǔ)法來(lái)訪問(wèn)和取出列表中的。本文將詳細(xì)介紹
    的頭像 發(fā)表于 11-21 16:13 ?2921次閱讀

    python處理重復(fù)的方法

    處理重復(fù)是數(shù)據(jù)處理中常見(jiàn)的任務(wù)之一。在Python中,有幾種有效的方法可以處理重復(fù),包括使用集合、字典和pandas庫(kù)等。 使用集合 集合數(shù)據(jù)結(jié)構(gòu)是Python中用于存儲(chǔ)唯一元素的
    的頭像 發(fā)表于 11-21 15:47 ?1184次閱讀

    基于FPGA的線性插值-上

    ,并且做除法會(huì)消耗大量的資源。 本文提出一種基于查找法實(shí)現(xiàn)線性插值算法,不需要利用除法實(shí)現(xiàn)線性插值。 2,方法原理 由當(dāng)D是A,B的中點(diǎn)時(shí),可以求出D的坐標(biāo)為: x\' = (x1 + x2
    發(fā)表于 11-20 23:10

    Python 重載與重寫(xiě)的概念

    在上一次的推送 《Python 監(jiān)控文件事件變化—以音樂(lè)高潮提取為例》 中,最后繼承 LoggingEventHandler 類,對(duì) on_created 進(jìn)行修改的時(shí)候,我使用了一個(gè)詞叫:重載
    的頭像 發(fā)表于 11-03 15:13 ?509次閱讀
    <b class='flag-5'>Python</b> 重載與重寫(xiě)的<b class='flag-5'>概念</b>