久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術文章
文章詳情頁

用Python實現Newton插值法

瀏覽:2日期:2022-06-22 10:19:10
1. n階差商實現

def diff(xi,yi,n): ''' param xi:插值節點xi param yi:插值節點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))

返回的差商結果為:

[[2.53105263157897, 2.7958823529411716, 2.997142857142854], [3.0440197857724347, 1.0374252793901158], [-9.420631485362996]]

2. 牛頓插值實現

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))

結果為:

2.5944760289639732

3.完整Python代碼

def Newton(xi,yi,n,x): ''' param xi:插值節點xi param yi:插值節點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

到此這篇關于用Python實現牛頓插值法的文章就介紹到這了,更多相關python牛頓插值法內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 松溪县| 平乡县| 肥西县| 琼海市| 丰镇市| 太仆寺旗| 泉州市| 桦川县| 永顺县| 桂林市| 凉城县| 台湾省| 宁武县| 庐江县| 台北市| 历史| 香河县| 博湖县| 子洲县| 胶南市| 碌曲县| 团风县| 海口市| 长泰县| 青铜峡市| 三门县| 灵璧县| 沙洋县| 平南县| 岫岩| 革吉县| 安化县| 仪征市| 万宁市| 山西省| 长白| 高雄县| 屏边| 汝城县| 丰镇市| 开封县|