##Text
对于一个k次多项式函数
f
(
x
)
=
∑
i
=
0
k
a
i
x
i
f(x)=\sum\limits_{i=0}^{k}a_ix^i
f(x)=i=0∑kaixi
有两种表示其的方法。
可以用传统的每一项的系数来表示。
同时由于只要有K+1个(x,fx)的点对,就能唯一确定这个多项式,因此把这种表示法叫点值表示法。
系数表示法转换成点值表示法叫求值,反过来就叫插值。
当然可以高斯消元,但是复杂度比较大。
主要讨论拉格朗日插值法。
假设已经求得了K+1个点对
(
x
0
,
y
0
)
.
.
.
(
x
k
,
y
k
)
(x_0,y_0)...(x_{k},y_{k})
(x0,y0)...(xk,yk)
不妨令
f
(
x
)
=
∑
j
=
0
k
ℓ
j
(
x
)
y
j
f(x)=\sum\limits_{j=0}^{k}\ell_j(x)y_j
f(x)=j=0∑kℓj(x)yj
其中
ℓ
j
(
x
)
\ell_j(x)
ℓj(x)是一个关于
x
x
x的
k
k
k次多项式
那么
ℓ
j
(
x
)
=
0
,
(
x
=
x
p
,
p
̸
=
j
)
\ell_j(x)=0,(x=x_p,p\not=j)
ℓj(x)=0,(x=xp,p̸=j)
ℓ
j
(
x
)
=
1
,
(
x
=
x
j
)
\ell_j(x)=1,(x=x_j)
ℓj(x)=1,(x=xj)
由
ℓ
j
(
x
)
=
0
,
(
x
=
x
p
,
p
̸
=
j
)
\ell_j(x)=0,(x=x_p,p\not=j)
ℓj(x)=0,(x=xp,p̸=j)
可以直接构造
ℓ
j
(
x
)
=
w
j
∏
i
=
0
,
i
̸
=
j
k
(
x
−
x
i
)
\ell_j(x)=w_j\prod\limits_{i=0,i\not=j}^{k}(x-x_i)
ℓj(x)=wji=0,i̸=j∏k(x−xi)
又由
ℓ
j
(
x
)
=
1
,
(
x
=
x
j
)
\ell_j(x)=1,(x=x_j)
ℓj(x)=1,(x=xj)
可以得出
w
j
=
1
∏
i
=
0
,
i
̸
=
j
k
(
x
j
−
x
i
)
w_j={1\over\prod\limits_{i=0,i\not=j}^{k}(x_j-x_i)}
wj=i=0,i̸=j∏k(xj−xi)1
所以
ℓ
j
(
x
)
=
∏
i
=
0
,
i
̸
=
j
k
(
x
−
x
i
)
∏
i
=
0
,
i
̸
=
j
k
(
x
j
−
x
i
)
\ell_j(x)={\prod\limits_{i=0,i\not=j}^{k}(x-x_i)\over\prod\limits_{i=0,i\not=j}^{k}(x_j-x_i)}
ℓj(x)=i=0,i̸=j∏k(xj−xi)i=0,i̸=j∏k(x−xi)
不妨设 ℓ ( x ) = ∏ i = 0 k ( x − x i ) \ell(x)=\prod\limits_{i=0}^{k}(x-x_i) ℓ(x)=i=0∏k(x−xi)
于是简化为
ℓ
j
(
x
)
=
w
j
ℓ
(
x
j
)
x
−
x
j
\ell_j(x)={w_j\ell(x_j)\over x-x_j}
ℓj(x)=x−xjwjℓ(xj)
所以 f ( x ) = ∑ j = 0 k ℓ ( x j ) w j y j x − x j = ∑ j = 0 k y j ∏ i = 0 , i ̸ = j k ( x − x i ) ∏ i = 0 , i ̸ = j k ( x j − x i ) f(x)=\sum\limits_{j=0}^{k}\ell(x_j){w_jy_j\over x-x_j}=\sum\limits_{j=0}^{k}y_j {\prod\limits_{i=0,i\not=j}^{k}(x-x_i)\over\prod\limits_{i=0,i\not=j}^{k}(x_j-x_i)} f(x)=j=0∑kℓ(xj)x−xjwjyj=j=0∑kyji=0,i̸=j∏k(xj−xi)i=0,i̸=j∏k(x−xi)