關於牛頓前插法的資料,可以參考牛頓插值公式
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...