等間距牛頓前插

2021-10-09 08:56:02 字數 1703 閱讀 3116

關於牛頓前插法的資料,可以參考牛頓插值公式

import math

# 計算公式中每一項的係數的分子

# p可視為差值階數

defucal

(u, p)

:"""

>>> ucal(1, 2)

0>>> ucal(1.1, 2)

0.11000000000000011

>>> ucal(1.2, 2)

0.23999999999999994

"""temp = u

for i in

range(1

, p)

: temp = temp *

(u - i)

return temp

defmain()

: n =

int(

input

("enter the numbers of values: "))

y =#初始化乙個n*n矩陣

for i in

range

(n):

)for i in

range

(n):

for j in

range

(n):

y[i]0)

# y[i][j] = 0

print

("enter the values of parameters in a list: "

)#輸入的x必須為等差數列

x =list

(map

(int

,input()

.split())

)print

("enter the values of corresponding parameters: "

)for i in

range

(n):

y[i][0

]=float

(input()

) value =

int(

input

("enter the value to interpolate: "))

u =(value - x[0]

)/(x[1

]- x[0]

)# 計算差值表

#n個數的階從1到n-1

for i in

range(1

, n)

:for j in

range

(n - i)

: y[j]

[i]= y[j +1]

[i -1]

- y[j]

[i -1]

summ = y[0]

[0]for i in

range(1

, n)

: summ +=

(ucal(u, i)

* y[0]

[i])

/ math.factorial(i)

print

(f"the value at is "

)if __name__ ==

"__main__"

:import doctest

doctest.testmod(verbose=

true

)

main(

)

牛頓插值法

有了拉格朗日插值法,牛頓插值怎麼會缺席呢,這裡介紹牛頓插值,牛頓插值自然是為了解決拉格朗日的在程式設計上的缺陷而出現的 至少邏輯是這樣的 拉格朗日插值法在程式設計上的缺陷是什麼呢?從拉格朗日插值的形式就可以得知,每增加乙個插值節點就要重新計算插值基函式,這是乙個致命的缺點。牛頓插值克服了這個問題,我...

數值分析 插值 牛頓插值法

clc clear all close all n 1 1 10000 sig sin n 100 k 0 for i 1 4 10000 k k 1 x arr n i i 3 y arr sig i i 3 arr new y k newtoninterpolation x arr,y arr,...

MATLAB 牛頓插值法程式

function p newton x,xi,yi,n ton n,n 是乙個二位陣列,用來儲存newton插值多項式的表。ton第一列儲存的是yi,函式值。x 11.5 n 5 x1 10 for i 1 1 n xi 1,i x1 ton i,1 yi 1,i ton i,1 log x1 x1...