插值法
简单来说,插值法是通过已知的离散的数据来推测未知数据的一种方法。
举个例子:我现在有这么一组数据
$x$ | $1$ | $2$ | $3$ | $4$ |
---|---|---|---|---|
$y$ | $3$ | $?$ | $6$ | $7$ |
在 $x=2$ 时的值缺失了,不见了,被墨水挡上了😢。如何来使用已知的离散数据点来预测 $y$ 呢?或许我们可以用数据健全的四个点来拟合出一个多项式函数 $p(x)$,再将 $x=2$ 代入,求得 $p(2)$,用它来预测缺失值,这样问题就解决啦!有了这条曲线,我们不仅可以来近似的填补空缺,还可以来近似我想知道的任意一个比如 $x = 3.5$ 时的 $y$。
接下来介绍的就是如何来求解这样一个多项式函数 $p(x)$,至于拉格朗日插值或者牛顿插值的区别,只是求解方法的不同。
拉格朗日插值
我现在有三个已知点 $(1, 3),(3, 6),(4, 7)$,通过代入下面这个有三个未知系数的二次多项式的假设:
形成如下的方程组:
只要求解出 $a,b,c$,就能得出过已知点的二次多项式,这样就可以填补空缺值了。实际上,拉格朗日想了一个更好的办法不用去求解上面的方程组,而是通过用以下的方式来进行求解的。
拉格朗日想通过三个较为简单的二次函数相加来达到目标。
- 第一个函数 $p_1(x)$ 在 $x_1=1$ 处的值为 $1$,在 $x_2,x_3$ 处的值为 $0$。
- 第二个函数 $p_2(x)$ 在 $x_2=3$ 处的值为 $1$,在 $x_1,x_3$ 处的值为 $0$。
- 第三个函数 $p_3(x)$ 在 $x_3=4$ 处的值为 $1$,在 $x_1,x_2$ 处的值为 $0$。
这样,只要用每个 $y$ 去乘对应的 $p_i(x)$,再把三个函数加起来:
这样就可以得到我们想要拟合的函数啦!
接下来的问题就是如何来求解 $p_i(x)$ 了。
为了一般化表示,我们不妨将三个已知的点表示成 $(x_1,y_1),(x_2,y_2),(x_3,y_3)$。而 $p_1(x)$ 可以构造为
如果已知的点数为 $n$,可记作通式
最终的多项式结果为
其中 $p_i(x)$ 被称作 $2$ 次插值基函数。
牛顿插值
在已知的数据点新增时,拉格朗日插值似乎需要对每个基函数需要修改,在维数过高的时候会耗费较大的计算量。牛顿插值法解决了这个问题。
如果我们现在有两个已知点 $(x_1,y_1),(x_2,y_2)$ 过函数 $p(x)$,我们可以用一个函数 $p_1(x)$ 来表示
其中 $c$ 为一个常数。这个函数显然在 $x=x_1$ 时 $p_1(x_1)=y_1$,若想令在 $x=x_2$ 时 $p_1(x_2)=y_2$,代入即可求处 $c$:
如果新增一个点 $(x_3,y_3)$,我们可以用一个二次函数 $p_2(x)$ 来表示
想令在 $x=x_3$ 时 $p_2(x_3)=y_3$,代入即可求处 $c_2$
我们引入均差这一概念:
一阶均差:
二阶均差
关于均差,看一下下面的均差表可以直观不少:
$x$ | $p(x)$ | 一阶均差 | 二阶均差 | 三阶均差 | $\cdots$ |
---|---|---|---|---|---|
$x_1$ | $p(x_1)$ | ||||
$x_2$ | $p(x_2)$ | $p[x_2,x_1]$ | |||
$x_3$ | $p(x_3)$ | $p[x_3,x_2]$ | $p[x_3,x_2,x_1]$ | ||
$x_4$ | $p(x_4)$ | $p[x_4,x_3]$ | $p[x_4,x_3,x_2]$ | $p[x_4,x_3,x_2,x_1]$ | $\cdots$ |
以此类推,我们就可以得到牛顿插值法的通式:
这样,在引入新的已知点 $(x_4,y_4)$ 拟合新的公式的时候,只用计算新的三阶均差 $p[x_4,x_3,x_2,x_1]$ 即可,而不需要重新计算所有的基函数。
范德蒙行列式
回到最初我们需要对付的那个方程组:
可以将其写成矩阵形式:
其中系数矩阵
便是范德蒙矩阵。我们都知道,范德蒙行列式
当 $A$ 为非奇异矩阵时,方程组只有唯一解。也就是说,只要 $x_1,x_2,x_3$ 两两不同,则拉格朗日插值法与牛顿插值法所得到的插值函数便会完全一样。
除了这些插值方法,还有 Hermit 插值、分段线性插值、样条插值,如果有用到会继续写,嘻嘻🤭。