函数拟合:最小二乘法 (Least Squares)
在实际工程中,观测数据往往带有噪声。与要求“严格过点”的插值法不同,拟合(Fitting)旨在寻找一个简单的函数 f(x),使得它在某种意义下最接近所有的观测点。
给定一组观测数据 (xi,yi),i=1,…,m。假设拟合函数的形式为:
f(x)=a0ϕ0(x)+a1ϕ1(x)+⋯+anϕn(x)
其中 {ϕj(x)} 是预先选定的一组基函数(通常为 1,x,x2,…),n<m。
目标:寻找系数 aj,使得残差平方和 S 最小:
S(a0,…,an)=∑i=1m[f(xi)−yi]2=∑i=1m[∑j=0najϕj(xi)−yi]2
为了求 S 的极小值,根据多元函数极值存在的必要条件,令其对各系数的偏导数为零:
∂ak∂S=0,k=0,1,…,n
对 ak 求导得:
2∑i=1m[∑j=0najϕj(xi)−yi]ϕk(xi)=0
整理可得:
∑j=0naj(∑i=1mϕj(xi)ϕk(xi))=∑i=1myiϕk(xi)
定义内积 ⟨u,v⟩=∑i=1mu(xi)v(xi),则上述方程组可写作:
⟨ϕ0,ϕ0⟩⋮⟨ϕ0,ϕn⟩…⋱…⟨ϕn,ϕ0⟩⋮⟨ϕn,ϕn⟩a0⋮an=⟨y,ϕ0⟩⋮⟨y,ϕn⟩
这就是 正规方程组。
从线性代数的角度看,拟合问题是在由基函数 {ϕj} 张成的子空间中,寻找一个向量 f,使得观测向量 y 到该子空间的距离最短。
残差向量 r=f−y 必须正交于基函数张成的空间。即对于所有的 k,都有 ⟨r,ϕk⟩=0。这直接导出了正规方程组。
当基函数选取为简单的幂函数 1,x,x2,… 时,正规方程组的系数矩阵(Hilbert 矩阵的离散形式)往往是高度病态 (Ill-conditioned) 的。
对于高阶多项式拟合,舍入误差会被极度放大。
解决方案:采用正交多项式(如 Legendre 多项式或 Chebyshev 多项式)作为基函数,使得系数矩阵退化为对角阵,从而极大地提高数值稳定性。
例 1:给定数据点 (1, 2), (2, 3), (3, 5),用最小二乘法求拟合直线 y=a+bx。
解析:
- 确定基函数:ϕ0(1)=1,ϕ1(x)=x。
- 计算内积:
- ⟨ϕ0,ϕ0⟩=1+1+1=3
- ⟨ϕ0,ϕ1⟩=1+2+3=6
- ⟨ϕ1,ϕ1⟩=12+22+32=14
- ⟨y,ϕ0⟩=2+3+5=10
- ⟨y,ϕ1⟩=2(1)+3(2)+5(3)=23
- 建立方程组:
{3a+6b=106a+14b=23
- 求解:
由 (1) 得 a=310−6b。代入 (2):2(10−6b)+14b=23⇒20+2b=23⇒b=1.5。
a=310−9=1/3。
拟合直线为:y=31+1.5x。
前往 数值分析专题练习库 探索加权最小二乘法与非线性拟合。