Neville插值方法详解
牛顿的插值方法涉及两个步骤:计算系数,随后评估多项式。 如果插值运作良好使用相同的多项式在x的不同值处重复执行。 要是一点是内插,一种单步计算插值的方法,如Neville的算法,是一个更方便的选择。
4个数据点的表格
k=0
k=1
k=2
k=3
x
0
P
0
[
x
0
]
=
y
0
P
1
[
x
0
,
x
1
]
P
2
[
x
0
,
x
1
,
x
2
]
P
3
[
x
0
,
x
1
,
x
2
,
x
3
]
x
1
P
0
[
x
1
]
=
y
1
P
1
[
x
1
,
x
2
]
P
2
[
x
1
,
x
2
,
x
3
]
x
2
P
0
[
x
2
]
=
y
2
P
1
[
x
2
,
x
3
]
x
3
P
0
[
x
3
]
=
y
3
通项公式
P
k
[
x
i
,
x
i
+
1
,
⋯
,
x
i
+
k
]
=
(
x
−
x
i
+
k
)
P
k
−
1
[
x
i
,
x
i
+
1
,
⋯
,
x
i
+
k
−
1
]
+
(
x
i
−
x
)
P
k
−
1
[
x
i
+
1
,
⋯
,
x
i
+
k
]
x
i
−
x
i
+
k
4个数据点的计算公式
k=0
k=1
k=2
k=3
x
0
P
0
[
x
0
]
=
y
0
P
1
[
x
0
,
x
1
]
=
(
x
−
x
1
)
P
0
[
x
0
]
+
(
x
0
−
x
)
P
0
[
x
1
]
x
0
−
x
1
P
2
[
x
0
,
x
1
,
x
2
]
=
(
x
−
x
2
)
P
1
[
x
0
,
x
1
]
+
(
x
0
−
x
)
P
1
[
x
1
,
x
2
]
x
0
−
x
2
P
3
[
x
0
,
x
1
,
x
2
,
x
3
]
=
(
x
−
x
3
)
P
2
[
x
0
,
x
1
,
x
2
]
+
(
x
0
−
x
)
P
2
[
x
1
,
x
2
,
x
3
]
x
0
−
x
3
x
1
P
0
[
x
1
]
=
y
1
P
1
[
x
1
,
x
2
]
=
(
x
−
x
2
)
P
0
[
x
1
]
+
(
x
1
−
x
)
P
0
[
x
2
]
x
1
−
x
2
P
2
[
x
1
,
x
2
,
x
3
]
=
(
x
−
x
3
)
P
1
[
x
1
,
x
2
]
+
(
x
1
−
x
)
P
1
[
x
2
,
x
3
]
x
1
−
x
3
x
2
P
0
[
x
2
]
=
y
2
P
1
[
x
2
,
x
3
]
=
(
x
−
x
3
)
P
0
[
x
2
]
+
(
x
2
−
x
)
P
0
[
x
3
]
x
2
−
x
3
x
3
P
0
[
x
3
]
=
y
3
Neville算法Python代码
import numpy as np
def neville(xData,yData,x):
m = len(xData)
A = np.zeros((m,m)) # A代表计算表格
A[:,0]=np.array(np.array(yData))
for k in range(1,m):
for i in range(m-k):
A[i,k]=((x-xData[i+1])*A[i,k-1]+(xData[i]-x)*A[i+1,k-1])/(xData[i]-xData[i+1])
return A
案例分析
yData = [4.0, 3.9, 3.8, 3.7]
xData = [-0.06604, -0.02724, 0.01282, 0.05383]
neville(xData,yData,0)
计算结果 :