直线拟合
在许多情况下,我们需要将一组散点数据 $x_i, y_i \ \ (i = 1\dots N)$ 拟合成特定形式的函数曲线.其中最常见的情况之一是拟合一条直线,形式为 $y = ax + b$.例如给出(图 1),如何确定直线方程的两个最佳系数 $a$ 和 $b$ 呢?
我们可以通过方差来计算拟合的误差,方差越小则说明拟合得越好.
\begin{equation}
S_2 = \sum_{i = 1}^N (a x_i + b - y_i)^2
\end{equation}
对于给定的 $N$ 个 $x_i, y_i$,方差是 $a$ 和 $b$ 的二元函数.我们只需找到这个二元函数的最小值点即可.由于函数处处光滑,最小值点必定满足 $ \partial S_2/\partial a = \partial S_2/\partial b = 0$.将
eq. 1 代入,得到一个线性方程组.
\begin{equation}
\left\{\begin{aligned}
& \left(\sum_i x_i^2 \right) a + \left(\sum_i x_i \right) b = \sum_i x_i y_i \\
& \left(\sum_i x_i \right) a + N b = \sum_i y_i \end{aligned}\right.
\end{equation}
我们来计算系数行列式,如果能证明行列式恒大于零,则方程组必有唯一解.若令 $\bar x$ 为 $N$ 个 $x_i$ 的平均值,考虑到 $x_i$ 互不相等,容易证明
\begin{equation}
N\sum_i x_i^2 - \left(\sum_i x_i \right) ^2 = N\sum_i (x_i - \bar x)^2 > 0
\end{equation}
证毕.由于方差恒大于零,可知其必定存在最小值,所以系数的唯一解必定是方差函数的极小值点.接下来解线性方程组即可得到系数 $a, b$.将解出的 $a,b$ 重新代入
eq. 1 可以得出最小方差的值,用于判断拟合结果的好坏.
多项式拟合
以二次多项式 $c_2 x^2 + c_1 x + c_0$ 为例,方差为
\begin{equation}
S_2 = \sum_{i = 1}^N (c_2 x_i^2 + c_1 x_i + c_0 - y_i)^2
\end{equation}
分别令方差对 $c_2, c_1, c_0$ 的偏导为零,得线性方程组
\begin{equation}
\left\{\begin{aligned}
& \left(\sum_i x_i^4 \right) c_2 + \left(\sum_i x_i^3 \right) c_1 + \left(\sum_i x_i^2 \right) c_0 & &= \sum_i y_i x_i^2 \\
& \left(\sum_i x_i^3 \right) c_2 + \left(\sum_i x_i^2 \right) c_1 + \left(\sum_i x_i \right) c_0 & &= \sum_i y_i x_i \\
& \left(\sum_i x_i^2 \right) c_2 + \left(\sum_i x_i \right) c_1 + \quad N c_0 & &= \sum_i y_i \end{aligned}\right.
\end{equation}
观察系数矩阵可以看出,每条斜线上 $x_i$ 的指数相等,且相邻斜线上 $x_i$ 的指数依次递减.按照此规律容易写出 $N$ 次多项式拟合的方程组.这里不证明系数行列式大于零,但实际应用中方程组几乎都有唯一解.
简谐波拟合
若要拟合 $A \cos\left(x + \varphi_0\right) + C$ 形式的函数,可以先利用两角和公式把函数化为 $c_1 \cos x + c_2 \sin x + c_3$ 的等效形式(因为前者并不是待定系数的线性组合,得到的方程组也不是线性方程组),方差公式为
\begin{equation}
S_2 = \sum_i (c_1 \cos x_i + c_2 \sin x_i + c_3 - y_i)^2
\end{equation}
分别令方差对 $c_1, c_2, c_3$ 的偏导为零,得线性方程组
\begin{equation}
\left\{\begin{aligned}
& \left(\sum_i \cos^2 x_i \right) c_1 + \left(\sum_i \sin x_i \cos x_i \right) c_2 + \left(\sum_i \cos x_i \right) c_3 & &= \sum_i y_i \cos x_i\\
& \left(\sum_i \sin x_i \cos x_i \right) c_1 + \left(\sum_i \sin^2 x_i \right) c_2 + \left(\sum_i \sin x_i \right) c_3 & &= \sum_i y_i \sin x_i\\
& \left(\sum_i \cos x_i \right) c_1 \quad + \quad \left(\sum_i \sin x_i \right) c_2 \quad + \quad N c_3 & &= \sum_i y_i\\
\end{aligned}\right.
\end{equation}
实际应用中,该方程组同样几乎都有唯一解.