数值计算方法 Chapter3. 曲线拟合的最小二乘法

1. 线性拟合和二次拟合函数

最小二乘法本质上就是求一个事先定义一个函数,然后使用已知的采样点结果拟合函数的参数,使得所有采样点的均方误差最小。

即:

φ ( x ) = a r g m i n   ∑ i ∣ φ ( x i ) − y i ∣ 2 \varphi(x) = argmin\ \sum_{i}|\varphi(x_i) - y_i|^2 φ(x)=argmin iφ(xi)yi2

1. 线性拟合

我们假定拟合曲线为:

φ ( x ) = a x + b \varphi(x) = ax + b φ(x)=ax+b

则有拟合误差为:

Q = ∑ i ( a x i + b − y i ) 2 Q = \sum_{i}(ax_i+b-y_i)^2 Q=i(axi+byi)2

要使得拟合误差 Q Q Q最小,则我们有 Q Q Q对于参数 a , b a,b a,b的偏导均为0,因此,我们即有:

{ ∂ Q ∂ a = ∑ i 2 x i ( a x i + b − y i ) = 0 ∂ Q ∂ b = ∑ i 2 ( a x i + b − y i ) = 0 \left\{ \begin{aligned} \frac{\partial Q}{\partial a} &= \sum_i 2x_i(ax_i + b - y_i) = 0 \\ \frac{\partial Q}{\partial b} &=\sum_i 2(ax_i + b - y_i) = 0 \end{aligned} \right. aQbQ=i2xi(axi+byi)=0=i2(axi+byi)=0

可以解得:

{ a = n ⋅ ∑ i x i y i − ( ∑ i x i ) ( ∑ i y i ) n ⋅ ∑ i x i 2 − ( ∑ i x i ) 2 b = 1 n ∑ i y i − 1 n ( ∑ i x i ) ⋅ a \left\{ \begin{aligned} a &= \frac{n \cdot \sum_{i} x_iy_i - (\sum_i x_i)(\sum_i y_i)}{n \cdot \sum_i{x_i^2} - (\sum_i x_i)^2} \\ b &= \frac{1}{n} \sum_i y_i - \frac{1}{n} (\sum_i x_i) \cdot a \end{aligned} \right. ab=nixi2(ixi)2nixiyi(ixi)(iyi)=n1iyin1(ixi)a

2. 二次拟合函数

类似的,我们可以得到二次拟合函数的最小二乘法的结果。

定义拟合函数为:

φ ( x ) = a x 2 + b x + c \varphi(x) = ax^2 + bx + c φ(x)=ax2+bx+c

则有拟合误差:

Q = ∑ i ( a x i 2 + b x i + c ) 2 Q = \sum_i(ax_i^2 + bx_i + c)^2 Q=i(axi2+bxi+c)2

同样,我们可以解得,在极值条件下,有:

{ ∂ Q ∂ a = ∑ i 2 x i 2 ( a x i 2 + b x i + c − y i ) = 0 ∂ Q ∂ b = ∑ i 2 x i ( a x i 2 + b x i + c − y i ) = 0 ∂ Q ∂ c = ∑ i 2 ( a x i 2 + b x i + c − y i ) = 0 \left\{ \begin{aligned} \frac{\partial Q}{\partial a} &= \sum_i 2x_i^2(ax_i^2 + bx_i + c - y_i) = 0 \\ \frac{\partial Q}{\partial b} &=\sum_i 2x_i(ax_i^2 + bx_i + c - y_i) = 0 \\ \frac{\partial Q}{\partial c} &=\sum_i 2(ax_i^2 + bx_i + c - y_i) = 0 \end{aligned} \right. aQbQcQ=i2xi2(axi2+bxi+cyi)=0=i2xi(axi2+bxi+cyi)=0=i2(axi2+bxi+cyi)=0

亦即:

( ∑ i x i 4 ∑ i x i 3 ∑ i x i 2 ∑ i x i 3 ∑ i x i 2 ∑ i x i ∑ i x i 2 ∑ i x i n ) ( a b c ) = ( ∑ i x i 2 y i ∑ i x i y i ∑ i y i ) \begin{pmatrix} \sum_i x_i^4 & \sum_i x_i^3 & \sum_i x_i^2 \\ \sum_i x_i^3 & \sum_i x_i^2 & \sum_i x_i \\ \sum_i x_i^2 & \sum_i x_i & n \end{pmatrix} \begin{pmatrix} a \\ b \\ c \end{pmatrix} = \begin{pmatrix} \sum_i x_i^2y_i \\ \sum_i x_iy_i \\ \sum_i y_i \end{pmatrix} ixi4ixi3ixi2ixi3ixi2ixiixi2ixinabc=ixi2yiixiyiiyi

可解得:

( a b c ) = ( ∑ i x i 4 ∑ i x i 3 ∑ i x i 2 ∑ i x i 3 ∑ i x i 2 ∑ i x i ∑ i x i 2 ∑ i x i n ) − 1 ⋅ ( ∑ i x i 2 y i ∑ i x i y i ∑ i y i ) \begin{pmatrix} a \\ b \\ c \end{pmatrix} = \begin{pmatrix} \sum_i x_i^4 & \sum_i x_i^3 & \sum_i x_i^2 \\ \sum_i x_i^3 & \sum_i x_i^2 & \sum_i x_i \\ \sum_i x_i^2 & \sum_i x_i & n \end{pmatrix}^{-1} \cdot \begin{pmatrix} \sum_i x_i^2y_i \\ \sum_i x_iy_i \\ \sum_i y_i \end{pmatrix} abc=ixi4ixi3ixi2ixi3ixi2ixiixi2ixin1ixi2yiixiyiiyi

类似的也可以推至n阶的情况,这里就不一一展开了。

3. a ⋅ e b x a\cdot e^{bx} aebx型函数

形如 a ⋅ e b x a\cdot e^{bx} aebx的函数直接用最小二乘法倒是没法直接求解,不过可以通过一定的函数变换转换成 n n n阶函数形式,然后我们就可以仿照上述方式进行求解了。

比如这里的 a ⋅ e b x a\cdot e^{bx} aebx类型的函数,我们做函数变换,令 z = l n ( y ) z= ln(y) z=ln(y),则有:

z = b x + l n ( a ) z = bx + ln(a) z=bx+ln(a)

即可使用最小二乘法进行求解。

类似的,还可以有函数 y = 1 a x + b y = \frac{1}{ax+b} y=ax+b1,我们令 z = 1 y z = \frac{1}{y} z=y1,即可有:

z = a x + b z = ax + b z=ax+b

2. 解矛盾方程组

书中这一小节事实上就是给前面最小二乘法的内容提供一些理论上的支持,没有啥更多的内容,因此,我们仅在这里摘录书中的定理如下:

定理3.1
(1) A A A m m m n n n列的矩阵, b b b为列向量, A T A X = A T b A^TAX = A^Tb ATAX=ATb称为矛盾方程组 A X = b AX = b AX=b的法方程,法方程恒有解。
(2) X X X m i n ∣ ∣ A X − b ∣ ∣ 2 2 min||AX-b||_2^2 minAXb22的解,当且仅当 X X X满足 A T A X = A T b A^TAX = A^Tb ATAX=ATb,即 X X X是法方程的解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值