【学习笔记】插值之拉格朗日插值(Lagrange)
0 插值介绍
插值法是广泛应用于理论研究和工程实际的重要数值方法。用提供的部分离散的函数值来进行理论分析和设计都是极不方便的,因此希望能够用一个既能反映原函数特征,又便于计算的简单函数去近似原函数。
1 低次拉格朗日插值
定理:设
x
0
{x_0}
x0,
⋯
{\cdots}
⋯,
x
n
{x_n}
xn是互异插值节点,则满足差值条件
p
(
x
i
)
=
y
i
(
i
=
0
,
1
,
2
,
⋯
,
n
)
{p(x_i)}=y_i(i=0,1,2,\cdots,n)
p(xi)=yi(i=0,1,2,⋯,n)的插值多项式
p
(
x
)
=
a
0
+
a
1
x
+
a
2
x
2
+
⋯
+
a
n
x
n
{p(x)=a_0+a_1x+a_2x^2+\cdots+a_nx^n}
p(x)=a0+a1x+a2x2+⋯+anxn是存在且唯一的。
证明:由条件可知,
p
(
x
)
p(x)
p(x)的系数
a
i
a_i
ai满足
{
a
0
+
a
1
x
0
+
⋯
+
a
n
x
0
=
y
0
a
0
+
a
1
x
1
+
⋯
+
a
n
x
1
=
y
1
⋮
a
0
+
a
1
x
n
+
⋯
+
a
n
x
n
=
y
n
\left\{ \begin{array}{c} a_0+a_1x_0+\cdots+a_nx_0=y_0\\ a_0+a_1x_1+\cdots+a_nx_1=y_1\\ \vdots\\ a_0+a_1x_n+\cdots+a_nx_n=y_n\\ \end{array} \right.
⎩
⎨
⎧a0+a1x0+⋯+anx0=y0a0+a1x1+⋯+anx1=y1⋮a0+a1xn+⋯+anxn=yn
这是一个关于
a
0
,
a
1
,
⋯
,
a
n
a_0,a_1, \cdots ,a_n
a0,a1,⋯,an的
n
+
1
n+1
n+1元线性方程组,并注意到其系数行列式为一个范德蒙行列式,又由于
i
≠
j
i \ne j
i=j时
x
i
≠
x
j
x_i \ne x_j
xi=xj,于是,方程组唯一解。
以上定理的证明提供了一个求 p ( x ) p(x) p(x)的方法,这就是解方程组。但当 n n n较大时,这是很困难的。对于给定的插值点,求形如 p ( x ) = a 0 + a 1 x + a 2 x 2 + ⋯ + a n x n {p(x)=a_0+a_1x+a_2x^2+\cdots+a_nx^n} p(x)=a0+a1x+a2x2+⋯+anxn的插值多项式有不同的方法。
1.1 n=1时插值方法
先讨论
n
=
1
n=1
n=1的简单情况,互异插值点
x
0
,
x
1
x_0,x_1
x0,x1上的函数值分别为
f
(
x
0
)
,
f
(
x
1
)
f(x_0),f(x_1)
f(x0),f(x1)是已知的,通过两点
(
x
0
,
f
(
x
0
)
)
(x_0,f(x_0))
(x0,f(x0))及
(
x
1
,
f
(
x
1
)
)
(x_1,f(x_1))
(x1,f(x1))的插值多项式是一条直线,即两点式
L
1
(
x
)
=
x
−
x
1
x
0
−
x
1
f
(
x
0
)
+
x
−
x
0
x
1
−
x
0
f
(
x
1
)
L_1(x)=\frac {x-x_1}{x_0-x_1}f(x_0) + \frac {x-x_0}{x_1-x_0}f(x_1)
L1(x)=x0−x1x−x1f(x0)+x1−x0x−x0f(x1)
显然,
L
1
(
x
0
)
=
f
(
x
0
)
,
L
1
(
x
1
)
=
f
(
x
0
)
L_1(x_0)=f(x_0),L_1(x_1)=f(x_0)
L1(x0)=f(x0),L1(x1)=f(x0),满足插值条件,所以
L
1
(
x
)
L_1(x)
L1(x)就是线性插值多项式。若记
l
0
(
x
)
=
x
−
x
1
x
0
−
x
1
l_0(x)=\frac{x-x_1}{x_0-x_1}
l0(x)=x0−x1x−x1,
l
1
(
x
)
=
x
−
x
0
x
1
−
x
0
l_1(x)=\frac{x-x_0}{x_1-x_0}
l1(x)=x1−x0x−x0,则称
l
0
(
x
)
,
l
1
(
x
)
l_0(x),l_1(x)
l0(x),l1(x)为关于
x
0
x_0
x0与
x
1
x_1
x1的线性插值基函数。
于是有
L
1
(
x
)
=
l
0
(
x
)
f
(
x
0
)
+
l
1
(
x
)
f
(
x
1
)
L_1(x)=l_0(x)f(x_0)+l_1(x)f(x_1)
L1(x)=l0(x)f(x0)+l1(x)f(x1)
1.2 n=2时插值方法
当
n
=
2
n=2
n=2时,给定互异插值点
x
0
,
x
1
,
x
2
x_0,x_1,x_2
x0,x1,x2上的函数值分别为
f
(
x
0
)
,
f
(
x
1
)
,
f
(
x
2
)
f(x_0),f(x_1),f(x_2)
f(x0),f(x1),f(x2)
l
0
(
x
)
=
(
x
−
x
1
)
(
x
−
x
2
)
(
x
0
−
x
1
)
(
x
0
−
x
2
)
,
l_0(x)=\frac{(x-x_1)(x-x_2)}{(x_0-x_1)(x_0-x_2)},
l0(x)=(x0−x1)(x0−x2)(x−x1)(x−x2),
l
1
(
x
)
=
(
x
−
x
0
)
(
x
−
x
2
)
(
x
1
−
x
0
)
(
x
1
−
x
2
)
,
l_1(x)=\frac{(x-x_0)(x-x_2)}{(x_1-x_0)(x_1-x_2)},
l1(x)=(x1−x0)(x1−x2)(x−x0)(x−x2),
l
2
(
x
)
=
(
x
−
x
0
)
(
x
−
x
1
)
(
x
2
−
x
0
)
(
x
2
−
x
1
)
l_2(x)=\frac{(x-x_0)(x-x_1)}{(x_2-x_0)(x_2-x_1)}
l2(x)=(x2−x0)(x2−x1)(x−x0)(x−x1)
称为关于点
x
0
,
x
1
,
x
2
x_0,x_1,x_2
x0,x1,x2的二次插值基函数,它满足
l
i
(
x
j
)
=
{
1
,
j
=
i
0
,
j
≠
i
,
i
,
j
=
0
,
1
,
2
,
⋯
l_i(x_j)= \left\{ \begin{array}{c} 1, j = i \\ 0, j \ne i\\ \end{array},i,j=0,1,2,\cdots \right.
li(xj)={1,j=i0,j=i,i,j=0,1,2,⋯
满足条件的
L
2
(
x
i
)
=
f
(
x
i
)
(
i
=
0
,
1
,
2
)
L_2(x_i)=f(x_i)(i=0,1,2)
L2(xi)=f(xi)(i=0,1,2)的二次插值多项式
L
2
(
x
)
L_2(x)
L2(x)可表示为
L
2
(
x
)
=
l
0
(
x
)
f
(
x
0
)
+
l
1
(
x
)
f
(
x
1
)
+
l
2
(
x
)
f
(
x
2
)
L_2(x)=l_0(x)f(x_0)+l_1(x)f(x_1)+l_2(x)f(x_2)
L2(x)=l0(x)f(x0)+l1(x)f(x1)+l2(x)f(x2)
y
=
L
2
(
x
)
y=L_2(x)
y=L2(x)的图形是通过三点
(
x
1
,
f
(
x
i
)
)
(
i
=
0
,
1
,
2
)
(x_1,f(x_i))(i=0,1,2)
(x1,f(xi))(i=0,1,2)的抛物线。
1.3 举例
x x x | 1 | 4 | 9 | 16 |
---|---|---|---|---|
x \sqrt{x} x | 1 | 2 | 3 | 4 |
解:
选择与
x
=
5
x=5
x=5最接近的三点
x
0
=
1
,
x
1
=
4
,
x
2
=
9
x_0=1,x_1=4,x_2=9
x0=1,x1=4,x2=9为插值点,由
L
2
(
x
)
=
l
0
(
x
)
f
(
x
0
)
+
l
1
(
x
)
f
(
x
1
)
+
l
2
(
x
)
f
(
x
2
)
L_2(x)=l_0(x)f(x_0)+l_1(x)f(x_1)+l_2(x)f(x_2)
L2(x)=l0(x)f(x0)+l1(x)f(x1)+l2(x)f(x2)
得,
5
≈
1
⋅
(
5
−
4
)
(
5
−
9
)
(
1
−
4
)
(
1
−
9
)
+
2
⋅
(
5
−
1
)
(
5
−
9
)
(
4
−
1
)
(
4
−
9
)
+
3
⋅
(
5
−
1
)
(
5
−
4
)
(
9
−
1
)
(
9
−
4
)
≈
2.267
\sqrt{5} \approx 1 \cdot \frac{(5-4)(5-9)}{(1-4)(1-9)}+2 \cdot \frac{(5-1)(5-9)}{(4-1)(4-9)}+ 3 \cdot \frac{(5-1)(5-4)}{(9-1)(9-4)} \approx 2.267
5≈1⋅(1−4)(1−9)(5−4)(5−9)+2⋅(4−1)(4−9)(5−1)(5−9)+3⋅(9−1)(9−4)(5−1)(5−4)≈2.267