插值方法 Newton多項式(非等距節點)

2022-06-19 16:39:13 字數 1642 閱讀 3308

不多話。nowton插值多項式(非等距節點)**:

1

#-*- coding: utf-8 -*-

2"""

3created on wed mar 25 15:43:42 202045

@author: 35035

6"""78

9import

numpy as np

1011

#newton插值多項式

12def

newton_iplt(x, y, xi):

13"""

x,y是插值節點array,xi是乙個值

"""14

15 n =len(x)

16 m =len(y)

17if n !=m:

18print('

error!')

19return

none20#

先計算差商表(cs)

21 cs =

22 temp =y.copy()

23for i in

range(n):

24if i !=0:

25 iv_1 = temp[i - 1]

26for j in

range(i, n):

27 iv_2 =temp[j]

28 temp[j] = (iv_2 - iv_1) / (x[j] - x[j -i])

29 iv_1 =iv_2

3031

#再計算newton插值

32 ans =0

33for i in

range(n):

34 w = 1 35#

計算多項式部分,讓差商表作為其係數

36for j in

range(i):

37 w *= (xi -x[j])

38 ans += w*cs[i]

39return

ans4041#

當對多個值使用newton插值時,使用map()建立對映:42#

iterator = map(newton, iterable)

4344

#數值運算時使用float參與運算,dtype定為內建float

4546 x = np.array((100, 121), dtype =float)

47 y = np.array((10, 11), dtype =float)

48print(newton_iplt(x, y, 115))

4950 x = np.array((1,2,3,4,5,6), dtype=float)

51 y = np.array((1.0, 1.2599, 1.4422, 1.5874, 1.71, 1.8171), dtype=float)

52print(newton_iplt(x, y, 5.6))53#

結果:10.71428 1.7754 測試成功!

在nowton插值多項式中,差商表的計算至關重要,而對於等距節點的newton插值,則轉為計算差分表。

插值多項式例子

給定函式 ex 在區間 1,1 上的資料表如下 x 101 f x 0.3679 1.0000 2.7182f x 0.3679 1.0000 2.7182 給出 hermite 插值多項式,並計算其誤差。mathematica code create by zzw clear f,f1,a her...

lagrange插值多項式

簡潔版 hanshu input 請輸入函式f x s fprintf 請輸入差值區間最小值 n xmin input fprintf 請輸入差值區間最大值 n xmax input fprintf 請輸入等分份數 n n input fprintf 請輸入自變數x n xin input h xm...

計算方法 牛頓插值多項式

問題描述 考慮 0,4 內的函式y f x cos x 利用多個 4 5等 節點構造牛頓插值多項式。輸入形式 在螢幕上依次輸入在區間 0,4 內的乙個值x 構造插值多項式後求其p x 值,和多個節點的x座標。輸出形式 輸出牛頓插值多項式係數向量,差商矩陣和p x 值 保留小數點後6位有效數字 樣例1...