用Python實(shí)現(xiàn)Newton插值法
1. n階差商實(shí)現(xiàn)
def diff(xi,yi,n):
"""
param xi:插值節(jié)點(diǎn)xi
param yi:插值節(jié)點(diǎn)yi
param n: 求幾階差商
return: n階差商
"""
if len(xi) != len(yi): #xi和yi必須保證長(zhǎng)度一致
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
測(cè)試一下:
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. 牛頓插值實(shí)現(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
測(cè)試一下:
x = 1.682 print(Newton(x))
結(jié)果為:
2.5944760289639732
3.完整Python代碼
def Newton(xi,yi,n,x):
"""
param xi:插值節(jié)點(diǎn)xi
param yi:插值節(jié)點(diǎn)yi
param n: 求幾階差商
param x: 代求近似值
return: n階差商
"""
if len(xi) != len(yi): #xi和yi必須保證長(zhǎng)度一致
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實(shí)現(xiàn)牛頓插值法的文章就介紹到這了,更多相關(guān)python牛頓插值法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python讀寫(xiě)文件模式和文件對(duì)象方法實(shí)例詳解
這篇文章主要介紹了Python讀寫(xiě)文件模式和文件對(duì)象方法,結(jié)合實(shí)例形式詳細(xì)分析了Python文件操作常用技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下2019-09-09
Python數(shù)據(jù)分析入門之?dāng)?shù)據(jù)讀取與存儲(chǔ)
今天繼續(xù)帶大家學(xué)習(xí)python數(shù)據(jù)分析,下文中有非常詳細(xì)的代碼示例,清楚地解釋了python數(shù)據(jù)讀取與存儲(chǔ)的相關(guān)知識(shí),需要的朋友可以參考下2021-05-05
Python圖片視頻超分模型RealBasicVSR的使用教程
這篇文章主要和大家分享一個(gè)有意思的模型:RealBasicVSR。這個(gè)模型可以實(shí)現(xiàn)圖片或視頻的超分處理,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-05-05
Python實(shí)現(xiàn)的遠(yuǎn)程文件自動(dòng)打包并下載功能示例
這篇文章主要介紹了Python實(shí)現(xiàn)的遠(yuǎn)程文件自動(dòng)打包并下載功能,結(jié)合實(shí)例形式分析了Python使用spawn()方法執(zhí)行ssh、scp 命令實(shí)現(xiàn)遠(yuǎn)程文件的相關(guān)操作技巧,需要的朋友可以參考下2019-07-07
python網(wǎng)絡(luò)編程學(xué)習(xí)筆記(三):socket網(wǎng)絡(luò)服務(wù)器
服務(wù)器和客戶端程序很類似,上節(jié)學(xué)習(xí)了客戶端程序,這一節(jié)將仔細(xì)學(xué)習(xí)一下利用socket建立TCP服務(wù)器和UDP服務(wù)器2014-06-06
windows系統(tǒng)下Python環(huán)境的搭建(Aptana Studio)
這篇文章主要介紹了windows系統(tǒng)下Python環(huán)境的搭建(Aptana Studio),需要的朋友可以參考下2017-03-03

