多项式插值
这段时间关注了一个数值分析的课程,是华东师范大学潘建瑜老师的课,看了一遍课件,将内容梳理一下,做个笔记。
什么是插值
已知一个函数
f
(
x
)
f(x)
f(x)在
[
a
,
b
]
[a,b]
[a,b]上有定义,且已知此区间有限个数据点:
y
0
=
f
(
x
0
)
,
y
1
=
f
(
x
1
)
,
.
.
.
y_0=f(x_0), y_1=f(x_1),...
y0=f(x0),y1=f(x1),...
找到一个函数
p
(
x
)
p(x)
p(x),使得
p
(
x
)
p(x)
p(x)也经过所有数据点,则
p
(
x
)
p(x)
p(x)为
f
(
x
)
f(x)
f(x)的插值函数。
什么是多项式插值
从插值的定义可以得知,一定有相当多类的函数满足“经过有限数据点”这个条件,其中多项式函数就是一大类,使用多项式函数作为 p ( x ) p(x) p(x)的插值方式叫做多项式插值。若有 n + 1 n+1 n+1个数据点,插值多项式的最高次幂不得超过 n n n。
多项式插值唯一性
满足条件的插值多项式只有一个。
证明:
记插值多项式 p ( x ) = c 0 + c 1 x + . . . + c n x n p(x)=c_0+c_1x+...+c_nx^n p(x)=c0+c1x+...+cnxn
记要插值的数据点为 ( x 0 , y 0 ) , ( x 1 , y 1 ) , . . . , ( x n , y n ) (x_0, y_0),(x_1,y_1),...,(x_n,y_n) (x0,y0),(x1,y1),...,(xn,yn)
带入可得n个方程:{ p ( x 0 ) = c 0 + c 1 x 0 + . . . + c n x 0 n = y 0 p ( x 1 ) = c 0 + c 1 x 1 + . . . + c n x 1 n = y 1 . . . p ( x n ) = c 0 + c 1 x n + . . . + c n x n n = y n \begin{cases} p(x_0)=c_0+c_1x_0+...+c_nx_0^n=y_0& \\ p(x_1)=c_0+c_1x_1+...+c_nx_1^n=y_1& \\...& \\p(x_n)=c_0+c_1x_n+...+c_nx_n^n=y_n \end{cases} ⎩⎪⎪⎪⎨⎪⎪⎪⎧p(x0)=c0+c1x0+...+cnx0n=y0p(x1)=c0+c1x1+...+cnx1n=y1...p(xn)=c0+c1xn+...+cnxnn=yn
要证明多项式插值的唯一性,只需要证明系数 c 0 , c 1 , . . . , c n c_0,c_1,...,c_n c0,c1,...,cn的唯一性即可。
将 c 0 , c 1 , . . . , c n c_0,c_1,...,c_n c0,c1,...,cn视为未知数,可知系数矩阵的行列式正好是个范德蒙行列式,所以系数矩阵可逆, c 0 , c 1 , . . . , c n c_0,c_1,...,c_n c0,c1,...,cn有唯一解。
一次多项式插值
两个数据点可以进行一次多项式插值,即线性插值。实际上这就是求两点连线的直线方程,使用两点式求直线方程就可以。
p ( x ) − y 0 = y 1 − y 0 x 1 − x 0 ( x − x 0 ) \begin{aligned}p(x)-y_0 &= \dfrac{y_1-y_0}{x_1-x_0}(x-x_0)\\\end{aligned} p(x)−y0=x1−x0y1−y0(x−x0)
化简可得:
p ( x ) = y 0 x 1 − x x 1 − x 0 + y 1 x − x 0 x 1 − x 0 = y 0 l 0 ( x ) + y 1 l 1 ( x ) \begin{aligned}p(x)&=y_0\dfrac{x_1-x}{x_1-x_0}+y_1\dfrac{x-x_0}{x_1-x_0}\\&=y_0l_0(x)+y_1l_1(x)\end{aligned} p(x)=y0x1−x0x1−x+y1x1−x0x−x0=y0l0(x)+y1l1(x)
p ( x ) p(x) p(x)可以看作基函数 l ( x ) l(x) l(x)的线性组合。
因此,如何寻找基函数表出插值函数就是不同的多项式插值方法的主要目的。
多项式插值法的分类
课件里分别介绍了以下几种多项式插值方法。分别是:
- 拉格朗日(Lagrange)插值
- 牛顿(Newton)插值
- 厄密(Hermite)插值
- 分段低次插值
- 三次样条插值
后几节会介绍这些插值方法的基函数,线性表出方式,已经代码示例。