MINIBLOG

Blog Note Tags Links About
Home Search
May 27, 2026
miniyuan

函数逼近(最小二乘法)


函数逼近概述

在科学实验与统计研究中,常需从一组测定数据 (xi,yi), i=1,2,…,n(x_i, y_i),\,i=1,2,\dots,n(xi​,yi​),i=1,2,…,n 获得自变量 xxx 与因变量 yyy 的近似解析表达式 y=φ(x)y=\varphi(x)y=φ(x)。

与插值法要求 φ(xi)=yi\varphi(x_i)=y_iφ(xi​)=yi​ 严格过点不同,函数逼近不要求近似函数过每一个数据点,只要求能反映数据点的基本趋势,使残差在某种整体意义下最小。

核心思想: 选定一个由简单函数(如多项式、指数函数等)张成的有限维空间 H\mathcal{H}H, 寻找 φ∈H\varphi\in\mathcal{H}φ∈H 使得残差向量 δ=(δ1,…,δn)T\boldsymbol{\delta}=(\delta_1,\dots,\delta_n)^Tδ=(δ1​,…,δn​)T 的某种范数最小, 其中 δi=yi−φ(xi)\delta_i=y_i-\varphi(x_i)δi​=yi​−φ(xi​)。


数学基础

向量范数

对于向量 x∈Rn\boldsymbol{x}\in\mathbb{R}^nx∈Rn,常用范数定义为:

  • 1-范数(曼哈顿范数):∥x∥1≡∑i=1n∣xi∣\displaystyle \|\boldsymbol{x}\|_1 \equiv \sum_{i=1}^{n}|x_i|∥x∥1​≡i=1∑n​∣xi​∣
  • 2-范数(欧几里得范数):∥x∥2≡(∑i=1nxi2)1/2\displaystyle \|\boldsymbol{x}\|_2 \equiv \left(\sum_{i=1}^{n}x_i^2\right)^{1/2}∥x∥2​≡(i=1∑n​xi2​)1/2
  • ∞\infty∞-范数(最大范数):∥x∥∞≡max⁡1≤i≤n∣xi∣\displaystyle \|\boldsymbol{x}\|_{\infty} \equiv \max_{1\le i\le n}|x_i|∥x∥∞​≡1≤i≤nmax​∣xi​∣

上述三种范数在 Rn\mathbb{R}^nRn 上是等价的。最小二乘法本质上采用2-范数的平方作为目标函数,因其可微。

对向量的导数

令 x∈Rn\boldsymbol{x}\in\mathbb{R}^nx∈Rn。

标量函数对向量导数:

若 f:Rn→Rf:\mathbb{R}^n\to\mathbb{R}f:Rn→R,则:

∂f∂x=[∂f∂x1∂f∂x2⋯∂f∂xn]\frac{\partial f}{\partial\boldsymbol{x}} = \begin{bmatrix} \frac{\partial f}{\partial x_1} & \frac{\partial f}{\partial x_2} & \cdots & \frac{\partial f}{\partial x_n} \end{bmatrix}∂x∂f​=[∂x1​∂f​​∂x2​∂f​​⋯​∂xn​∂f​​]

约定结果为行向量。

向量值函数对向量导数:

若 f:Rn→Rm\boldsymbol{f}:\mathbb{R}^n\to\mathbb{R}^mf:Rn→Rm,f(x)=[f1(x),…,fm(x)]T\boldsymbol{f}(\boldsymbol{x})=[f_1(\boldsymbol{x}),\dots,f_m(\boldsymbol{x})]^Tf(x)=[f1​(x),…,fm​(x)]T,则

∂f∂x=[∂f1∂x1⋯∂f1∂xn⋮⋱⋮∂fm∂x1⋯∂fm∂xn]m×n\frac{\partial\boldsymbol{f}}{\partial\boldsymbol{x}} = \begin{bmatrix} \frac{\partial f_1}{\partial x_1} & \cdots & \frac{\partial f_1}{\partial x_n} \\ \vdots & \ddots & \vdots \\ \frac{\partial f_m}{\partial x_1} & \cdots & \frac{\partial f_m}{\partial x_n} \end{bmatrix}_{m\times n}∂x∂f​=​∂x1​∂f1​​⋮∂x1​∂fm​​​⋯⋱⋯​∂xn​∂f1​​⋮∂xn​∂fm​​​​m×n​

常用公式:

  • ∂(uTx)∂x=uT\displaystyle \frac{\partial(\boldsymbol{u}^T\boldsymbol{x})}{\partial\boldsymbol{x}} = \boldsymbol{u}^T∂x∂(uTx)​=uT
  • ∂(xTx)∂x=2xT\displaystyle \frac{\partial(\boldsymbol{x}^T\boldsymbol{x})}{\partial\boldsymbol{x}} = 2\boldsymbol{x}^T∂x∂(xTx)​=2xT

一元函数的极值问题

定义(极小值):

设 f(x)f(x)f(x) 在 x=ax=ax=a 的邻域有定义。若存在 ε>0\varepsilon>0ε>0 使得

f(x)≥f(a),∀ ∣x−a∣<εf(x)\ge f(a),\quad \forall\,|x-a|<\varepsilonf(x)≥f(a),∀∣x−a∣<ε

则称 f(x)f(x)f(x) 在 x=ax=ax=a 处取极小值。

必要条件(费马定理):

若 f(x)f(x)f(x) 在 x=ax=ax=a 处可微且取极小值,则

df(x)dx∣x=a=0\left.\frac{\mathrm{d}f(x)}{\mathrm{d}x}\right|_{x=a}=0dxdf(x)​​x=a​=0

证明: 假设 dfdx∣x=a=c≠0\left.\frac{\mathrm{d}f}{\mathrm{d}x}\right|_{x=a}=c\neq 0dxdf​​x=a​=c=0。 取 h=−εch=-\varepsilon ch=−εc,其中 ε>0\varepsilon>0ε>0 为小正数,由 Taylor 展开:

f(a+h)−f(a)=h⋅c+o(h)=−εc2+o(ε)f(a+h)-f(a)=h\cdot c+o(h)=-\varepsilon c^2+o(\varepsilon)f(a+h)−f(a)=h⋅c+o(h)=−εc2+o(ε)

当 ε\varepsilonε 充分小时,f(a+h)−f(a)<0f(a+h)-f(a)<0f(a+h)−f(a)<0,矛盾!

充分条件:

在 f′(a)=0f'(a)=0f′(a)=0 前提下,由 Taylor 展开

f(a+h)−f(a)=h22f′′(a)+o(h2)f(a+h)-f(a)=\frac{h^2}{2}f''(a)+o(h^2)f(a+h)−f(a)=2h2​f′′(a)+o(h2)

于是:

  • 若 f′′(x)∣x=a>0\left.f''(x)\right|_{x=a}>0f′′(x)∣x=a​>0,则 f(x)f(x)f(x) 在 x=ax=ax=a 处取极小值;
  • 若 f′′(x)∣x=a<0\left.f''(x)\right|_{x=a}<0f′′(x)∣x=a​<0,则 f(x)f(x)f(x) 在 x=ax=ax=a 处取极大值;
  • 若 f′′(x)∣x=a=0\left.f''(x)\right|_{x=a}=0f′′(x)∣x=a​=0,则不能确定。

多元函数的极值问题

定义(极小值):

设 f(x)f(\boldsymbol{x})f(x) 在 x=a\boldsymbol{x}=\boldsymbol{a}x=a 的邻域有定义。若存在 ε>0\varepsilon>0ε>0 使得

f(x)≥f(a),∀ ∥x−a∥<ε,f(\boldsymbol{x})\ge f(\boldsymbol{a}),\quad \forall\,\|\boldsymbol{x}-\boldsymbol{a}\|<\varepsilon,f(x)≥f(a),∀∥x−a∥<ε,

则称 f(x)f(\boldsymbol{x})f(x) 在 x=a\boldsymbol{x}=\boldsymbol{a}x=a 处取极小值。

定义(Hessian 矩阵):

记

A=[aij]≡[∂2f∂xi∂xj]x=a\mathbf{A}=\left[a_{ij}\right]\equiv\left[\frac{\partial^2 f}{\partial x_i\partial x_j}\right]_{\boldsymbol{x}=\boldsymbol{a}}A=[aij​]≡[∂xi​∂xj​∂2f​]x=a​

为函数 f(x)f(\boldsymbol{x})f(x) 对应的 Hessian 矩阵。

必要条件(驻点):

若 fff 在 a\boldsymbol{a}a 处可微且取极值,则

∂f∂xi∣x=a=0,i=1,2,…,n\left.\frac{\partial f}{\partial x_i}\right|_{\boldsymbol{x}=\boldsymbol{a}}=0,\quad i=1,2,\dots,n∂xi​∂f​​x=a​=0,i=1,2,…,n

充分条件:

在驻点处的 Taylor 展开简化为以下二次型形式:

f(a+h)−f(a)=12hTAh+o(∥h∥2)f(\boldsymbol{a}+\boldsymbol{h})-f(\boldsymbol{a})=\frac{1}{2}\boldsymbol{h}^T\mathbf{A}\boldsymbol{h}+o(\|\boldsymbol{h}\|^2)f(a+h)−f(a)=21​hTAh+o(∥h∥2)

于是:

  • 若 A\mathbf{A}A 为正定矩阵,则 fff 在 a\boldsymbol{a}a 处取极小值;
  • 若 A\mathbf{A}A 为负定矩阵,则 fff 在 a\boldsymbol{a}a 处取极大值;
  • 若 A\mathbf{A}A 为不定的,则不能确定。

注: 判断实对称矩阵正定性的 Sylvester 准则,A\mathbf{A}A 正定当且仅当 A\mathbf{A}A 的所有顺序主子式均大于零。


最小二乘法

问题描述

给定数据组 (xi,yi), i=1,2,…,n(x_i,y_i),\,i=1,2,\dots,n(xi​,yi​),i=1,2,…,n,选定函数空间 H\mathcal{H}H 由一组线性无关的基函数 φ0(x),…,φm(x)\varphi_0(x),\dots,\varphi_m(x)φ0​(x),…,φm​(x) 张成(m<n−1m<n-1m<n−1),设近似函数为:

φ(x)=∑k=0makφk(x)\varphi(x)=\sum_{k=0}^{m}a_k\varphi_k(x)φ(x)=k=0∑m​ak​φk​(x)

引入权系数 ωi>0,  i=1,2,…,n\omega_i>0,\;i=1,2,\dots,nωi​>0,i=1,2,…,n 以反映不同数据点的可信度或重要性。 定义残差 δi=yi−φ(xi)\delta_i=y_i-\varphi(x_i)δi​=yi​−φ(xi​),最小二乘法寻求系数 a=[a0,…,am]T\boldsymbol{a}=[a_0,\dots,a_m]^Ta=[a0​,…,am​]T 使得加权残差的 2-范数平方最小:

F(a0,…,am)=∑i=1nωiδi2=∑i=1nωi[yi−∑k=0makφk(xi)]2F(a_0,\dots,a_m)=\sum_{i=1}^{n}\omega_i\delta_i^2=\sum_{i=1}^{n}\omega_i\left[y_i-\sum_{k=0}^{m}a_k\varphi_k(x_i)\right]^2F(a0​,…,am​)=i=1∑n​ωi​δi2​=i=1∑n​ωi​[yi​−k=0∑m​ak​φk​(xi​)]2

注:

  • 当 φk(x)=xk\varphi_k(x)=x^kφk​(x)=xk 且 ωi≡1\omega_i\equiv 1ωi​≡1 时,一般形式退化为经典多项式拟合;
  • 权系数常用于重复观测(ωi\omega_iωi​ 取出现频次)或异方差场景(ωi\omega_iωi​ 与方差成反比)。

正规方程组

分量形式

FFF 是关于 a0,…,ama_0,\dots,a_ma0​,…,am​ 的多元二次函数。由多元函数极值的必要条件,对每个 aja_jaj​ 求偏导并令其为零:

∂F∂aj=−2∑i=1nωi[yi−∑k=0makφk(xi)]φj(xi)=0,j=0,1,…,m\frac{\partial F}{\partial a_j}=-2\sum_{i=1}^{n}\omega_i\left[y_i-\sum_{k=0}^{m}a_k\varphi_k(x_i)\right]\varphi_j(x_i)=0 ,\quad j=0,1,\dots,m∂aj​∂F​=−2i=1∑n​ωi​[yi​−k=0∑m​ak​φk​(xi​)]φj​(xi​)=0,j=0,1,…,m

整理得正规方程组:

∑k=0mak[∑i=1nωiφk(xi)φj(xi)]=∑i=1nωiyiφj(xi),j=0,1,…,m\sum_{k=0}^{m}a_k\left[\sum_{i=1}^{n}\omega_i\varphi_k(x_i)\varphi_j(x_i)\right]=\sum_{i=1}^{n}\omega_i y_i\varphi_j(x_i) ,\quad j=0,1,\dots,mk=0∑m​ak​[i=1∑n​ωi​φk​(xi​)φj​(xi​)]=i=1∑n​ωi​yi​φj​(xi​),j=0,1,…,m

紧凑形式

定义设计矩阵 A∈Rn×(m+1)\mathbf{A}\in\mathbb{R}^{n\times(m+1)}A∈Rn×(m+1):

Aik=φk(xi),i=1,…,n;  k=0,…,m,\mathbf{A}_{ik}=\varphi_k(x_i),\quad i=1,\dots,n;\;k=0,\dots,m,Aik​=φk​(xi​),i=1,…,n;k=0,…,m,

并引入对角权矩阵 W=diag(ω1,…,ωn)\mathbf{W}=\mathrm{diag}(\omega_1,\dots,\omega_n)W=diag(ω1​,…,ωn​)。令 b=[y1,…,yn]T\boldsymbol{b}=[y_1,\dots,y_n]^Tb=[y1​,…,yn​]T,则加权残差平方和可写为

F(a)=(Aa−b)TW(Aa−b)=∥Aa−b∥W2F(\boldsymbol{a})=(\mathbf{A}\boldsymbol{a}-\boldsymbol{b})^T\mathbf{W}(\mathbf{A}\boldsymbol{a}-\boldsymbol{b})=\|\mathbf{A}\boldsymbol{a}-\boldsymbol{b}\|_{\mathbf{W}}^2F(a)=(Aa−b)TW(Aa−b)=∥Aa−b∥W2​

对 a\boldsymbol{a}a 求导(行向量导数)并转置得驻点条件:

∂F∂a=2(Aa−b)TWA=0⇒ATWA a=ATWb\frac{\partial F}{\partial\boldsymbol{a}}=2(\mathbf{A}\boldsymbol{a}-\boldsymbol{b})^T\mathbf{W}\mathbf{A}=\boldsymbol{0} \quad\Rightarrow\quad \mathbf{A}^T\mathbf{W}\mathbf{A}\,\boldsymbol{a}=\mathbf{A}^T\mathbf{W}\boldsymbol{b}∂a∂F​=2(Aa−b)TWA=0⇒ATWAa=ATWb

此式即为一般形式的正规方程组。 系数矩阵 G=ATWA\mathbf{G}=\mathbf{A}^T\mathbf{W}\mathbf{A}G=ATWA 称为 Gram 矩阵, 其元素 gjk=∑i=1nωiφk(xi)φj(xi)g_{jk}=\sum_{i=1}^{n}\omega_i\varphi_k(x_i)\varphi_j(x_i)gjk​=∑i=1n​ωi​φk​(xi​)φj​(xi​) 正是上述分量形式中的内积结构。

特例:多项式拟合

取基函数 φk(x)=xk\varphi_k(x)=x^kφk​(x)=xk(k=0,…,mk=0,\dots,mk=0,…,m)且权系数 ωi≡1\omega_i\equiv 1ωi​≡1,则设计矩阵 A\mathbf{A}A 为 Vandermonde 矩阵:

A=[1x1⋯x1m1x2⋯x2m⋮⋮⋱⋮1xn⋯xnm]\mathbf{A}= \begin{bmatrix} 1 & x_1 & \cdots & x_1^m\\ 1 & x_2 & \cdots & x_2^m\\ \vdots & \vdots & \ddots & \vdots\\ 1 & x_n & \cdots & x_n^m \end{bmatrix}A=​11⋮1​x1​x2​⋮xn​​⋯⋯⋱⋯​x1m​x2m​⋮xnm​​​

此时 G=ATA\mathbf{G}=\mathbf{A}^T\mathbf{A}G=ATA 的元素为幂次和 Sp=∑i=1nxipS_{p}=\sum_{i=1}^{n}x_i^pSp​=∑i=1n​xip​,正规方程组退化为:

[n∑i=1nxi⋯∑i=1nxim∑i=1nxi∑i=1nxi2⋯∑i=1nxim+1⋮⋮⋱⋮∑i=1nxim∑i=1nxim+1⋯∑i=1nxi2m][a0a1⋮am]=[∑i=1nyi∑i=1nyixi⋮∑i=1nyixim]\begin{bmatrix} n & \displaystyle\sum_{i=1}^{n} x_i & \cdots & \displaystyle\sum_{i=1}^{n} x_i^{m} \\ \displaystyle\sum_{i=1}^{n} x_i & \displaystyle\sum_{i=1}^{n} x_i^{2} & \cdots & \displaystyle\sum_{i=1}^{n} x_i^{m+1} \\ \vdots & \vdots & \ddots & \vdots \\ \displaystyle\sum_{i=1}^{n} x_i^{m} & \displaystyle\sum_{i=1}^{n} x_i^{m+1} & \cdots & \displaystyle\sum_{i=1}^{n} x_i^{2m} \end{bmatrix} \begin{bmatrix} a_0 \\ a_1 \\ \vdots \\ a_m \end{bmatrix} = \begin{bmatrix} \displaystyle\sum_{i=1}^{n} y_i \\ \displaystyle\sum_{i=1}^{n} y_i x_i \\ \vdots \\ \displaystyle\sum_{i=1}^{n} y_i x_i^{m} \end{bmatrix}​ni=1∑n​xi​⋮i=1∑n​xim​​i=1∑n​xi​i=1∑n​xi2​⋮i=1∑n​xim+1​​⋯⋯⋱⋯​i=1∑n​xim​i=1∑n​xim+1​⋮i=1∑n​xi2m​​​​a0​a1​⋮am​​​=​i=1∑n​yi​i=1∑n​yi​xi​⋮i=1∑n​yi​xim​​​

存在唯一性定理

定理:

设设计矩阵 A∈Rn×(m+1)\mathbf{A}\in\mathbb{R}^{n\times(m+1)}A∈Rn×(m+1)(n>m+1n>m+1n>m+1),权矩阵 W\mathbf{W}W 对角元均为正。 最小二乘问题存在唯一解 a∗\boldsymbol{a}^*a∗ 的充要条件是 A\mathbf{A}A 列满秩,即 rank(A)=m+1\mathrm{rank}(\mathbf{A})=m+1rank(A)=m+1。

证明:

  • 充分性:

    若 A\mathbf{A}A 列满秩,则对任意非零 v∈Rm+1\boldsymbol{v}\in\mathbb{R}^{m+1}v∈Rm+1,Av≠0\mathbf{A}\boldsymbol{v}\neq\boldsymbol{0}Av=0。 由于 W\mathbf{W}W 正定,故:

    vT(ATWA)v=(Av)TW(Av)=∥Av∥W2>0.\boldsymbol{v}^T(\mathbf{A}^T\mathbf{W}\mathbf{A})\boldsymbol{v}=(\mathbf{A}\boldsymbol{v})^T\mathbf{W}(\mathbf{A}\boldsymbol{v})=\|\mathbf{A}\boldsymbol{v}\|_{\mathbf{W}}^2>0.vT(ATWA)v=(Av)TW(Av)=∥Av∥W2​>0.

    因此 G=ATWA\mathbf{G}=\mathbf{A}^T\mathbf{W}\mathbf{A}G=ATWA 对称正定,正规方程组有唯一解。

  • 必要性:

    若 A\mathbf{A}A 列不满秩,则存在 v≠0\boldsymbol{v}\neq\boldsymbol{0}v=0 使 Av=0\mathbf{A}\boldsymbol{v}=\boldsymbol{0}Av=0。 若 a∗\boldsymbol{a}^*a∗ 为解,则 a∗+tv\boldsymbol{a}^*+t\boldsymbol{v}a∗+tv 对任意 t∈Rt\in\mathbb{R}t∈R 也是解,解不唯一。

注: G=ATWA\mathbf{G}=\mathbf{A}^T\mathbf{W}\mathbf{A}G=ATWA 的 2-范数条件数约为 A\mathbf{A}A 的 2-范数条件数的平方。 当 mmm 较大或基函数在离散点集上接近线性相关时,正规方程组呈现病态,直接求解会放大舍入误差。


几何解释

将 A\mathbf{A}A 按列分块为 A=[α0,α1,…,αm]\mathbf{A}=[\boldsymbol{\alpha}_0,\boldsymbol{\alpha}_1,\dots,\boldsymbol{\alpha}_m]A=[α0​,α1​,…,αm​], 其中 αk=[φk(x1),…,φk(xn)]T\boldsymbol{\alpha}_k=[\varphi_k(x_1),\dots,\varphi_k(x_n)]^Tαk​=[φk​(x1​),…,φk​(xn​)]T。 则 Aa\mathbf{A}\boldsymbol{a}Aa 是列向量 αk\boldsymbol{\alpha}_kαk​ 的线性组合,张成 Rn\mathbb{R}^nRn 中的一个 (m+1)(m+1)(m+1) 维超平面 SSS。

最小二乘法等价于取内积 ⟨u,v⟩W=uTWv\langle\boldsymbol{u},\boldsymbol{v}\rangle_{\mathbf{W}}=\boldsymbol{u}^T\mathbf{W}\boldsymbol{v}⟨u,v⟩W​=uTWv 时, 寻求 b\boldsymbol{b}b 在 SSS 上的正交投影,使得残差 r=Aa−b\boldsymbol{r}=\mathbf{A}\boldsymbol{a}-\boldsymbol{b}r=Aa−b 满足:

r⊥S⟺rTWαj=0j=0,…,m\boldsymbol{r}\perp S\quad\Longleftrightarrow\quad \boldsymbol{r}^T\mathbf{W}\boldsymbol{\alpha}_j=0\qquad j=0,\dots,mr⊥S⟺rTWαj​=0j=0,…,m

这与正规方程组 ATWAa=ATWb\mathbf{A}^T\mathbf{W}\mathbf{A}\boldsymbol{a}=\mathbf{A}^T\mathbf{W}\boldsymbol{b}ATWAa=ATWb 完全一致。


正交函数族

Gram 矩阵的病态性

一般形式的正规方程组以 Gram 矩阵 G=ATWA\mathbf{G}=\mathbf{A}^T\mathbf{W}\mathbf{A}G=ATWA 为系数矩阵。 当采用幂基 φk(x)=xk\varphi_k(x)=x^kφk​(x)=xk 时,G\mathbf{G}G 的元素为 ∑i=1nωixik+j\sum_{i=1}^{n}\omega_i x_i^{k+j}∑i=1n​ωi​xik+j​。随着 mmm 增大:

  • 矩阵列向量(在加权内积意义下)夹角越来越小,趋于线性相关;
  • 条件数 κ(G)\kappa(\mathbf{G})κ(G) 随阶数 mmm 指数级增长;
  • 舍入误差在求逆/求解过程中被急剧放大。

这一现象称为正规方程组的病态。

正交化的核心思想

若选取的基函数 {φk}k=0m\{\varphi_k\}_{k=0}^m{φk​}k=0m​ 关于离散点集 {xi}\{x_i\}{xi​} 及权 {ωi}\{\omega_i\}{ωi​} 两两正交,即满足

(φk,φj)≡∑i=1nωiφk(xi)φj(xi)=0(k≠j),(\varphi_k,\varphi_j)\equiv\sum_{i=1}^{n}\omega_i\varphi_k(x_i)\varphi_j(x_i)=0\quad(k\neq j),(φk​,φj​)≡i=1∑n​ωi​φk​(xi​)φj​(xi​)=0(k=j),

则 Gram 矩阵退化为对角矩阵:

G=diag((φ0,φ0), (φ1,φ1), …, (φm,φm))\mathbf{G}=\mathrm{diag}\big((\varphi_0,\varphi_0),\,(\varphi_1,\varphi_1),\,\dots,\,(\varphi_m,\varphi_m)\big)G=diag((φ0​,φ0​),(φ1​,φ1​),…,(φm​,φm​))

正规方程组 Ga=ATWb\mathbf{G}\boldsymbol{a}=\mathbf{A}^T\mathbf{W}\boldsymbol{b}Ga=ATWb 的求解简化为直接除法:

ak=(y,φk)(φk,φk)=∑i=1nωiyiφk(xi)∑i=1nωiφk2(xi),k=0,1,…,ma_k =\frac{(y,\varphi_k)}{(\varphi_k,\varphi_k)} =\frac{\displaystyle\sum_{i=1}^{n}\omega_i y_i\varphi_k(x_i)}{\displaystyle\sum_{i=1}^{n}\omega_i\varphi_k^2(x_i)} ,\quad k=0,1,\dots,mak​=(φk​,φk​)(y,φk​)​=i=1∑n​ωi​φk2​(xi​)i=1∑n​ωi​yi​φk​(xi​)​,k=0,1,…,m

几何视角

在 Rn\mathbb{R}^nRn 的加权内积空间 ⟨u,v⟩W=uTWv\langle\boldsymbol{u},\boldsymbol{v}\rangle_{\mathbf{W}}=\boldsymbol{u}^T\mathbf{W}\boldsymbol{v}⟨u,v⟩W​=uTWv 中, 取正交基 αk\boldsymbol{\alpha}_kαk​,从而 b\boldsymbol{b}b 在各基方向上的投影长度可直接独立计算,互不影响。

三项递推构造

对于多项式空间,正交基可通过三项递推构造:

{φ0(x)=1,φ1(x)=x−α1,φk(x)=(x−αk)φk−1(x)−βkφk−2(x),k≥2,\begin{cases} \varphi_0(x)=1,\\ \varphi_1(x)=x-\alpha_1,\\ \varphi_k(x)=(x-\alpha_k)\varphi_{k-1}(x)-\beta_k\varphi_{k-2}(x),\quad k\ge 2, \end{cases}⎩⎨⎧​φ0​(x)=1,φ1​(x)=x−α1​,φk​(x)=(x−αk​)φk−1​(x)−βk​φk−2​(x),k≥2,​

其中递推系数由加权内积确定:

αk=(xφk−1,φk−1)(φk−1,φk−1),βk=(φk−1,φk−1)(φk−2,φk−2)\alpha_k=\dfrac{(x\varphi_{k-1},\varphi_{k-1})}{(\varphi_{k-1},\varphi_{k-1})},\qquad \beta_k=\dfrac{(\varphi_{k-1},\varphi_{k-1})}{(\varphi_{k-2},\varphi_{k-2})}αk​=(φk−1​,φk−1​)(xφk−1​,φk−1​)​,βk​=(φk−2​,φk−2​)(φk−1​,φk−1​)​

具体拟合模型

一般我们不直接进行非线性最小二乘,也即我们的 φ(x)=∑k=0makφk(x)\varphi(x)=\sum_{k=0}^{m}a_k\varphi_k(x)φ(x)=∑k=0m​ak​φk​(x) 关于参数 a0,⋯ ,ama_0, \cdots, a_ma0​,⋯,am​ 是线性的。

如果遇到非线性的拟合,我们优先考虑线性化。

多项式拟合

略。

指数拟合

若数据近似满足 y=b eaxy=b\,\mathrm{e}^{ax}y=beax,采用对数线性化:

ln⁡y=ax+ln⁡b\ln y = ax + \ln blny=ax+lnb

令 y~i=ln⁡yi\tilde{y}_i=\ln y_iy~​i​=lnyi​(要求 yi>0y_i>0yi​>0),则退化为一次多项式拟合,求得 aaa 与 b~=ln⁡b\tilde{b}=\ln bb~=lnb 后还原 b=eb~b=\mathrm{e}^{\tilde{b}}b=eb~。

注: 对数变换改变了残差的度量方式,最小化 ∑(ln⁡yi−axi−ln⁡b)2\sum(\ln y_i - ax_i - \ln b)^2∑(lnyi​−axi​−lnb)2 而非 ∑(yi−beaxi)2\sum(y_i-b\mathrm{e}^{ax_i})^2∑(yi​−beaxi​)2,若需严格最小化原始残差,应使用非线性最小二乘(略)。

分式线性拟合

原模型变换新变量线性化形式
y=1ax+by=\dfrac{1}{ax+b}y=ax+b1​1y=ax+b\dfrac{1}{y}=ax+by1​=ax+by~i=1yi\tilde{y}_i=\dfrac{1}{y_i}y~​i​=yi​1​y~=ax+b\tilde{y}=ax+by~​=ax+b
y=xax+by=\dfrac{x}{ax+b}y=ax+bx​1y=a+b1x\dfrac{1}{y}=a+b\dfrac{1}{x}y1​=a+bx1​x~i=1xi,  y~i=1yi\tilde{x}_i=\dfrac{1}{x_i},\;\tilde{y}_i=\dfrac{1}{y_i}x~i​=xi​1​,y~​i​=yi​1​y~=a+bx~\tilde{y}=a+b\tilde{x}y~​=a+bx~

算法实现

标准多项式拟合

取基函数 φk(x)=xk\varphi_k(x)=x^kφk​(x)=xk,设计矩阵为 Vandermonde 矩阵。

import numpy as np

def poly_fit_normal(x, y, m):
    n = len(x)
    # 构造 Vandermonde 矩阵 A (n, m+1)
    A = np.zeros((n, m + 1))
    for k in range(m + 1):
        A[:, k] = x ** k
    
    # 正规方程组
    ATA = A.T @ A          # (m + 1, m + 1)
    ATb = A.T @ y          # (m + 1,)
    
    # 解对称正定方程组,可用 Cholesky 分解提高稳定性
    a = np.linalg.solve(ATA, ATb)
    return a

注: 实际工程中不建议直接利用 ATA\mathbf{A}^T\mathbf{A}ATA 求解正规方程组。 NumPy 的 np.linalg.lstsq(A, y, rcond=None) 基于 QR 分解或 SVD,数值稳定性远优于正规方程组,时间复杂度仍为 O(nm2)O(nm^2)O(nm2)(当 n≫mn\gg mn≫m)。

正交多项式拟合

若基函数关于离散点集 {xi}\{x_i\}{xi​} 及权 {ωi}\{\omega_i\}{ωi​} 满足正交性:

(φk,φj)≡∑i=1nωiφk(xi)φj(xi)=0  (k≠j),(\varphi_k,\varphi_j)\equiv\sum_{i=1}^{n}\omega_i\varphi_k(x_i)\varphi_j(x_i)=0\;(k\neq j),(φk​,φj​)≡i=1∑n​ωi​φk​(xi​)φj​(xi​)=0(k=j),

则正规方程组的系数矩阵退化为对角阵,系数可直接求出:

ak=(y,φk)(φk,φk)=∑i=1nωiyiφk(xi)∑i=1nωiφk2(xi)a_k=\frac{(y,\varphi_k)}{(\varphi_k,\varphi_k)}=\frac{\sum_{i=1}^{n}\omega_i y_i\varphi_k(x_i)}{\sum_{i=1}^{n}\omega_i\varphi_k^2(x_i)}ak​=(φk​,φk​)(y,φk​)​=∑i=1n​ωi​φk2​(xi​)∑i=1n​ωi​yi​φk​(xi​)​

三项递推构造正交多项式:

{φ0(x)=1,φ1(x)=x−α1,φk(x)=(x−αk)φk−1(x)−βkφk−2(x),k=2,3,…,m,\begin{cases} \varphi_0(x)=1,\\ \varphi_1(x)=x-\alpha_1,\\ \varphi_k(x)=(x-\alpha_k)\varphi_{k-1}(x)-\beta_k\varphi_{k-2}(x),\quad k=2,3,\dots,m, \end{cases}⎩⎨⎧​φ0​(x)=1,φ1​(x)=x−α1​,φk​(x)=(x−αk​)φk−1​(x)−βk​φk−2​(x),k=2,3,…,m,​

其中

αk=(xφk−1,φk−1)(φk−1,φk−1),βk=(φk−1,φk−1)(φk−2,φk−2)\alpha_k=\frac{(x\varphi_{k-1},\varphi_{k-1})}{(\varphi_{k-1},\varphi_{k-1})},\qquad \beta_k=\frac{(\varphi_{k-1},\varphi_{k-1})}{(\varphi_{k-2},\varphi_{k-2})}αk​=(φk−1​,φk−1​)(xφk−1​,φk−1​)​,βk​=(φk−2​,φk−2​)(φk−1​,φk−1​)​
def poly_fit_orthogonal(x, y, m, w=None):
    n = len(x)
    if w is None:
        w = np.ones(n)
    
    # 初始化
    phi = [np.ones(n), x.copy()]   # phi_0, phi_1 占位
    alpha = np.zeros(m + 1)
    beta = np.zeros(m + 1)
    a = np.zeros(m + 1)
    
    # 实际计算从 k=0 开始
    phi_prev2 = np.ones(n)          # phi_{k-2}
    phi_prev1 = x - np.sum(w * x) / np.sum(w)  # phi_1 需要 alpha_1
    
    for k in range(m + 1):
        if k == 0:
            phi_k = np.ones(n)
        elif k == 1:
            alpha[1] = np.sum(w * x * phi_prev2 * phi_prev2) / np.sum(w * phi_prev2**2)
            phi_k = x - alpha[1]
        else:
            alpha[k] = np.sum(w * x * phi_prev1**2) / np.sum(w * phi_prev1**2)
            beta[k] = np.sum(w * phi_prev1**2) / np.sum(w * phi_prev2**2)
            phi_k = (x - alpha[k]) * phi_prev1 - beta[k] * phi_prev2
        
        a[k] = np.sum(w * y * phi_k) / np.sum(w * phi_k**2)
        phi_prev2, phi_prev1 = phi_prev1, phi_k
    
    return a

注:正交多项式方法将条件数问题从 κ(ATA)\kappa(\mathbf{A}^T\mathbf{A})κ(ATA) 降至 κ(A)\kappa(\mathbf{A})κ(A) 量级,且无需存储稠密正规矩阵,适合高次多项式拟合。

向量化 NumPy 实现

def poly_fit_numpy(x, y, m):
    A = np.vander(x, m + 1, increasing=True)  #  Vandermonde 矩阵
    a, residuals, rank, s = np.linalg.lstsq(A, y, rcond=None)
    return a

超越最小二乘法的问题

指数函数之和拟合

给定等距数据 (xk,yk)=(kh,yk)(x_k,y_k)=(kh,y_k)(xk​,yk​)=(kh,yk​),h>0h>0h>0,k=1,…,nk=1,\dots,nk=1,…,n,拟合

y(x)=∑p=1map eλpx,n≫2my(x)=\sum_{p=1}^{m}a_p\,\mathrm{e}^{\lambda_p x},\quad n\gg 2my(x)=p=1∑m​ap​eλp​x,n≫2m

算法步骤:

  1. 离散化参数:令 μp=eλph\mu_p=\mathrm{e}^{\lambda_p h}μp​=eλp​h,则 y(xk)=∑p=1mapμpky(x_k)=\sum_{p=1}^{m}a_p\mu_p^ky(xk​)=∑p=1m​ap​μpk​。
  2. 构造特征多项式:设 μp\mu_pμp​ 为多项式 cmμm+⋯+c1μ+c0=0c_m\mu^m+\dots+c_1\mu+c_0=0cm​μm+⋯+c1​μ+c0​=0 的根(取 cm=1c_m=1cm​=1)。利用恒等式 ∑q=0mcqyk+q=∑p=1mapμpk∑q=0mcqμpq⏟=0=0,\sum_{q=0}^{m}c_q y_{k+q}=\sum_{p=1}^{m}a_p\mu_p^k\underbrace{\sum_{q=0}^{m}c_q\mu_p^q}_{=0}=0,q=0∑m​cq​yk+q​=p=1∑m​ap​μpk​=0q=0∑m​cq​μpq​​​=0, 得到关于 c0,…,cm−1c_0,\dots,c_{m-1}c0​,…,cm−1​ 的线性方程组: [ymym−1…y1ym+1ym…y2⋮⋮⋱⋮yn−1yn−2…yn−m][cm−1cm−2⋮c0]=−[ym+1ym+2⋮yn].\begin{bmatrix} y_m & y_{m-1} & \dots & y_1\\ y_{m+1} & y_m & \dots & y_2\\ \vdots & \vdots & \ddots & \vdots\\ y_{n-1} & y_{n-2} & \dots & y_{n-m} \end{bmatrix} \begin{bmatrix}c_{m-1}\\ c_{m-2}\\ \vdots\\ c_0\end{bmatrix} = -\begin{bmatrix}y_{m+1}\\ y_{m+2}\\ \vdots\\ y_n\end{bmatrix}.​ym​ym+1​⋮yn−1​​ym−1​ym​⋮yn−2​​……⋱…​y1​y2​⋮yn−m​​​​cm−1​cm−2​⋮c0​​​=−​ym+1​ym+2​⋮yn​​​.
  3. 最小二乘求系数:解上述超定方程组得 cqc_qcq​。
  4. 求特征根:求多项式根 μp\mu_pμp​,进而 λp=ln⁡μph\lambda_p=\dfrac{\ln\mu_p}{h}λp​=hlnμp​​。
  5. 求振幅系数:固定 λp\lambda_pλp​ 后,关于 apa_pap​ 的模型对参数线性,再次使用最小二乘。

注:此过程本质是从数据中学习一个常系数线性常微分方程

[Amdmdxm+⋯+A1ddx+A0]y(x)=0\left[A_m\frac{\mathrm{d}^m}{\mathrm{d}x^m}+\dots+A_1\frac{\mathrm{d}}{\mathrm{d}x}+A_0\right]y(x)=0[Am​dxmdm​+⋯+A1​dxd​+A0​]y(x)=0

的通解形式。

从数据中学习微分方程(SINDy)

对于未知动力学 y˙=f(y)\dot{y}=f(y)y˙​=f(y),预设候选函数库 Θ(y)=[1,y,y2,…,yM]\boldsymbol{\Theta}(y)=[1,y,y^2,\dots,y^M]Θ(y)=[1,y,y2,…,yM],假设

y˙=Θ(y)ξ\dot{y}=\boldsymbol{\Theta}(y)\boldsymbol{\xi}y˙​=Θ(y)ξ

对离散数据积分得:

y(xk+1)−y(xk)=∫xkxk+1Θ(y(χ))ξ dχy(x_{k+1})-y(x_k)=\int_{x_k}^{x_{k+1}}\boldsymbol{\Theta}(y(\chi))\boldsymbol{\xi}\,\mathrm{d}\chiy(xk+1​)−y(xk​)=∫xk​xk+1​​Θ(y(χ))ξdχ

由于真实动力学方程一般是稀疏的,所以引入 LASSO 作为损失函数进行稀疏回归:

ξ=arg⁡min⁡ξ{∥y˙−Θξ∥22+λ∥ξ∥1},\boldsymbol{\xi}=\arg\min_{\boldsymbol{\xi}}\Big\{\|\dot{y}-\boldsymbol{\Theta}\boldsymbol{\xi}\|_2^2+\lambda\|\boldsymbol{\xi}\|_1\Big\},ξ=argξmin​{∥y˙​−Θξ∥22​+λ∥ξ∥1​},

通过 ℓ1\ell_1ℓ1​ 惩罚自动筛选出非零系数。

注: SINDy 对噪声敏感,通常需配合平滑导数估计(如 Savitzky-Golay 滤波)及交叉验证选取 λ\lambdaλ。


复杂度分析

指标直接正规方程组np.linalg.lstsq正交多项式递推
时间复杂度O(nm2+m3/3)O(nm^2+m^3/3)O(nm2+m3/3)O(nm2)O(nm^2)O(nm2)O(nm)O(nm)O(nm)
空间复杂度O(m2)O(m^2)O(m2)(需存储 ATA\mathbf{A}^T\mathbf{A}ATA)O(nm)O(nm)O(nm)O(n)O(n)O(n)
数值稳定性差优优
适用场景mmm 较小且对效率不敏感通用工程首选高次多项式、递推场景

与插值对比:

特性多项式插值最小二乘拟合
过数据点严格通过不严格通过
次数/基函数数n−1n-1n−1(固定)m≪nm\ll nm≪n(可控)
对噪声敏感性高(龙格现象)低(统计平均效应)
计算核心解 n×nn\times nn×n 线性方程组解 (m+1)×(m+1)(m+1)\times(m+1)(m+1)×(m+1) 正规方程组
适用场景精确数据、理论分析实验数据、趋势提取、预测

注: 当 m=n−1m=n-1m=n−1 且节点互异时,设计矩阵 A\mathbf{A}A 可逆。 从而求解 ATAa=ATy\mathbf{A}^T\mathbf{A}\mathbf{a} = \mathbf{A}^T\mathbf{y}ATAa=ATy 就等价于求解 Aa=y\mathbf{A}\mathbf{a} = \mathbf{y}Aa=y 的插值问题。 但此时正规矩阵高度病态,故应直接插值。

目录
  • 函数逼近概述
  • 数学基础
    • 向量范数
    • 对向量的导数
    • 一元函数的极值问题
    • 多元函数的极值问题
  • 最小二乘法
    • 问题描述
    • 正规方程组
      • 分量形式
      • 紧凑形式
      • 特例:多项式拟合
    • 存在唯一性定理
    • 几何解释
  • 正交函数族
    • Gram 矩阵的病态性
    • 正交化的核心思想
    • 几何视角
    • 三项递推构造
  • 具体拟合模型
    • 多项式拟合
    • 指数拟合
    • 分式线性拟合
  • 算法实现
    • 标准多项式拟合
    • 正交多项式拟合
    • 向量化 NumPy 实现
  • 超越最小二乘法的问题
    • 指数函数之和拟合
    • 从数据中学习微分方程(SINDy)
  • 复杂度分析
© 2026 miniyuan. All rights reserved.
Go to miniyuan's GitHub repo