简述
k阶均差
f [ x 0 , x 1 , . . . , x k ] = f [ x 0 , x 1 , . . . , x k − 2 , x k ] − f [ x 0 , x 1 , . . . , x k − 1 ] x k − x k − 1
f
[
x
0
,
x
1
,
.
.
.
,
x
k
]
=
f
[
x
0
,
x
1
,
.
.
.
,
x
k
−
2
,
x
k
]
−
f
[
x
0
,
x
1
,
.
.
.
,
x
k
−
1
]
x
k
−
x
k
−
1
一阶均差
f [ x 0 , x 1 ] = f ( x 1 ) − f ( x 0 ) x 1 − x 0
f
[
x
0
,
x
1
]
=
f
(
x
1
)
−
f
(
x
0
)
x
1
−
x
0
上述式子可以看到递推性质。 最终都会收敛到一阶均差。
性质
f [ x 0 , x 1 , . . . , x k ] = ∑ j = 0 k f ( x j ) ∏ t ! = j ( x j − x t )
f
[
x
0
,
x
1
,
.
.
.
,
x
k
]
=
∑
j
=
0
k
f
(
x
j
)
∏
t
!
=
j
(
x
j
−
x
t
)
这个性质,带来的就是简化均差的简化运算(其实也很好记的,这里,分母不就是之前
w ′ n ( x j )
w
n
′
(
x
j
)
)
f [ x 0 , x 1 , . . . , x k ] = f [ x 1 , x 2 , . . . , x k ] − f [ x 0 , x 1 , . . . , x k − 1 ] x k − x 0
f
[
x
0
,
x
1
,
.
.
.
,
x
k
]
=
f
[
x
1
,
x
2
,
.
.
.
,
x
k
]
−
f
[
x
0
,
x
1
,
.
.
.
,
x
k
−
1
]
x
k
−
x
0
f [ x 0 , x 1 , . . . , x k ] = f ( n ) ( ξ ) n !
f
[
x
0
,
x
1
,
.
.
.
,
x
k
]
=
f
(
n
)
(
ξ
)
n
!
python实现
下面是用python实现的均差,ff()就是f[,,] 其中
f ( x ) = 1 x 2 + 1
f
(
x
)
=
1
x
2
+
1
def f (X) :
return 1 / (x ** 2 + 1 )
def ff (X=list() ) :
if len(X) < 2 :
raise ValueError('X\'s length must be bigger than 2' )
ans = 0
for i in range(len(X)):
temp = 1.0
for j in range(len(X)):
if j == i:
continue
temp *= (X[i] - X[j])
ans += (f(X[i]) / temp)
return ans