用Python實現(xiàn)Newton插值法
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 = 3print(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.682print(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)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. Python獲取抖音關(guān)注列表封號賬號的實現(xiàn)代碼2. ajax請求添加自定義header參數(shù)代碼3. Python數(shù)據(jù)分析之pandas函數(shù)詳解4. 解決Python 進(jìn)程池Pool中一些坑5. php測試程序運行速度和頁面執(zhí)行速度的代碼6. 無線標(biāo)記語言(WML)基礎(chǔ)之WMLScript 基礎(chǔ)第1/2頁7. 三個不常見的 HTML5 實用新特性簡介8. 使用.net core 自帶DI框架實現(xiàn)延遲加載功能9. php網(wǎng)絡(luò)安全中命令執(zhí)行漏洞的產(chǎn)生及本質(zhì)探究10. Warning: require(): open_basedir restriction in effect,目錄配置open_basedir報錯問題分析
