用Python實現(xiàn)Newton插值法
1. n階差商實現(xiàn)
def diff(xi,yi,n): """ param xi:插值節(jié)點xi param yi:插值節(jié)點yi param n: 求幾階差商 return: n階差商 """ if len(xi) != len(yi): #xi和yi必須保證長度一致 return else: diff_quot = [[] for i in range(n)] for j in range(1,n+1): if j == 1: for i in range(n+1-j): diff_quot[j-1].append((yi[i]-yi[i+1]) / (xi[i] - xi[i + 1])) else: for i in range(n+1-j): diff_quot[j-1].append((diff_quot[j-2][i]-diff_quot[j-2][i+1]) / (xi[i] - xi[i + j])) return diff_quot
測試一下:
xi = [1.615,1.634,1.702,1.828] yi = [2.41450,2.46259,2.65271,3.03035] n = 3 print(diff(xi,yi,n))
返回的差商結(jié)果為:
[[2.53105263157897, 2.7958823529411716, 2.997142857142854], [3.0440197857724347, 1.0374252793901158], [-9.420631485362996]]
2. 牛頓插值實現(xiàn)
def Newton(x): f = yi[0] v = [] r = 1 for i in range(n): r *= (x - xi[i]) v.append(r) f += diff_quot[i][0] * v[i] return f
測試一下:
x = 1.682 print(Newton(x))
結(jié)果為:
2.5944760289639732
3.完整Python代碼
def Newton(xi,yi,n,x): """ param xi:插值節(jié)點xi param yi:插值節(jié)點yi param n: 求幾階差商 param x: 代求近似值 return: n階差商 """ if len(xi) != len(yi): #xi和yi必須保證長度一致 return else: diff_quot = [[] for i in range(n)] for j in range(1,n+1): if j == 1: for i in range(n+1-j): diff_quot[j-1].append((yi[i]-yi[i+1]) / (xi[i] - xi[i + 1])) else: for i in range(n+1-j): diff_quot[j-1].append((diff_quot[j-2][i]-diff_quot[j-2][i+1]) / (xi[i] - xi[i + j])) print(diff_quot) f = yi[0] v = [] r = 1 for i in range(n): r *= (x - xi[i]) v.append(r) f += diff_quot[i][0] * v[i] return f
到此這篇關(guān)于用Python實現(xiàn)牛頓插值法的文章就介紹到這了,更多相關(guān)python牛頓插值法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實現(xiàn)隨機(jī)生成任意數(shù)量車牌號
這篇文章主要介紹了Python實現(xiàn)隨機(jī)生成任意數(shù)量車牌號,本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2020-01-01詳解Python小數(shù)據(jù)池和代碼塊緩存機(jī)制
這篇文章主要介紹了詳解Python 小數(shù)據(jù)池和代碼塊緩存機(jī)制的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下2021-04-04解決Pytorch半精度浮點型網(wǎng)絡(luò)訓(xùn)練的問題
這篇文章主要介紹了解決Pytorch半精度浮點型網(wǎng)絡(luò)訓(xùn)練的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-05-052023巨詳細(xì)的Python安裝庫教程(以pycharm和Anaconda安裝pygame為例)
這篇文章主要給大家介紹了巨詳細(xì)的Python安裝庫教程,文中以pycharm和Anaconda安裝pygame為例,通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01