4.3 最小二乘近似

一、最小二乘解

A x = b A\boldsymbol x=\boldsymbol b Ax=b 经常无解,一般是因为方程太多了。矩阵 A A A 的行比列要多,即方程要多余未知数( m > n m>n m>n)。 n n n 个列只能张成 m m m 空间的一小部分,除非测量的值都非常完美,否则 b \boldsymbol b b 将会落在 A A A 的列空间之外。此时使用消元法将会得到不可能存在的方程,因为测量值包含噪声,我们要找到最优解。
重复:我们不可能能一直把误差 e = b − A x \boldsymbol e=\boldsymbol b-A\boldsymbol x e=bAx 降为零,当 e \boldsymbol e e 为零时, x \boldsymbol x x A x = b A\boldsymbol x=\boldsymbol b Ax=b 的确切解;否则我们要使得 e \boldsymbol e e 的长度尽可能的小,此时 x ^ \boldsymbol {\hat x} x^ 就是最小二乘解(least squares solution)。本节的目的就是计算并使用 x ^ \boldsymbol {\hat x} x^,因为有许多实际问题需要答案。
以前强调 p \boldsymbol p p(投影),现在强调 x ^ \boldsymbol {\hat x} x^(最小二乘解),它们由 p = A x ^ \boldsymbol p=A\boldsymbol {\hat x} p=Ax^ 联系起来。基本的方程任然是 A T A x ^ = A T b A^TA\boldsymbol {\hat x}=A^T\boldsymbol b ATAx^=ATb,这里有一个非正式的方法得到这个 “正态方程”:

当 A x = b 没有解时,两边同时左乘 A T 然后求解 A T A x ^ = A T b 当\,A\boldsymbol x=\boldsymbol b\,没有解时,两边同时左乘\,A^T\,然后求解\,\colorbox{white}{$A^TA\boldsymbol{\hat x}=A^T\boldsymbol b$} Ax=b没有解时,两边同时左乘AT然后求解ATAx^=ATb

例1】最小二乘的一个重要应用就是对于 m m m 个点拟合成一条直线。从三个点开始:求出最接近点 ( 0 , 6 ) , ( 1 , 0 ) (0,6),(1,0) (0,6),(1,0) ( 2 , 0 ) (2,0) (2,0) 的直线。
没有任何一条直线可以同时过着三个点,假设直线方程为 b = C + D t b=C+Dt b=C+Dt,我们要求出两个数字 C C C D D D,它满足三个方程: n = 2 n=2 n=2 m = 3 m=3 m=3。这三个方程在 t = 0 , 1 , 2 t=0,1,2 t=0,1,2 时要适配给定的值 b = 6 , 0 , 0 b=6,0,0 b=6,0,0 t = 0 如果 C + D ⋅ 0 = 6 ,则第一个点在直线 b = C + D t 上 t = 1 如果 C + D ⋅ 1 = 0 ,则第二个点在直线 b = C + D t 上 t = 2 如果 C + D ⋅ 2 = 0 ,则第三个点在直线 b = C + D t 上 t=0\kern 10pt如果\,\colorbox{lightgray}{$C+D\cdot 0=6$},则第一个点在直线\,b=C+Dt\,上\\t=1\kern 10pt如果\,\colorbox{lightgray}{$C+D\cdot1=0$},则第二个点在直线\,b=C+Dt上\\t=2\kern 10pt如果\,\colorbox{lightgray}{$C+D\cdot 2=0$},则第三个点在直线\,b=C+Dt\,上 t=0如果C+D0=6,则第一个点在直线b=C+Dtt=1如果C+D1=0,则第二个点在直线b=C+Dtt=2如果C+D2=0,则第三个点在直线b=C+Dt这个 3 × 2 3\times2 3×2 的系统是没有解的: b = ( 6 , 0 , 0 ) \boldsymbol b=(6,0,0) b=(6,0,0) 不是列 ( 1 , 1 , 1 ) (1,1,1) (1,1,1) ( 0 , 1 , 2 ) (0,1,2) (0,1,2) 的线性组合。从这些方程中得到 A , x A,\boldsymbol x Ax b \boldsymbol b b A = [ 1 0 1 1 1 2 ] x = [ C D ] b = [ 6 0 0 ] A x = b 无解 A=\begin{bmatrix}1&0\\1&1\\1&2\end{bmatrix}\kern 8pt\boldsymbol x=\begin{bmatrix}C\\D\end{bmatrix}\kern 8pt\boldsymbol b=\begin{bmatrix}6\\0\\0\end{bmatrix}\kern 10ptA\boldsymbol x=\boldsymbol b\,无解 A= 111012 x=[CD]b= 600 Ax=b无解我们计算出 x ^ = ( 5 , − 3 ) \boldsymbol {\hat x}=(5,-3) x^=(5,3)这两个数字是最好的 C C C D D D,所以 5 − 3 t 5-3t 53t 是对于这三个点最优的直线。我们要让投影和最小二乘联系起来,就要解释为什么 A T A x ^ = A T b A^TA\boldsymbol {\hat x}=A^T\boldsymbol b ATAx^=ATb
在实际问题中,可能很轻易就有 m = 100 m=100 m=100 个点而不是 m = 3 m=3 m=3,它们不会精确的匹配到任何直线 C + D t C+Dt C+Dt。本例中的数字 6 , 0 , 0 6,0,0 6,0,0 夸大了误差,误差 e 1 , e 2 \boldsymbol e_1,\boldsymbol e_2 e1e2 e 3 \boldsymbol e_3 e3 如 Figure 4.6所示。

二、最小化误差

我们如何让误差 e = b − A x \boldsymbol e=\boldsymbol b-A\boldsymbol x e=bAx 尽可能小呢?这个问题很重要,答案也很美妙。最好的 x \boldsymbol x x(称为 x ^ \boldsymbol{\hat x} x^)可以通过几何学(误差 e \boldsymbol e e A A A 列空间的夹角是 90 ° 90° 90°);也可以由代数: A T A x ^ = A T b A^TA\boldsymbol{\hat x}=A^T\boldsymbol b ATAx^=ATb;还可以通过微积分得到相同的 x ^ \boldsymbol {\hat x} x^:误差 ∣ ∣ A x − b ∣ ∣ 2 ||A\boldsymbol x-\boldsymbol b||^2 ∣∣Axb2 的导数在 x ^ \boldsymbol{\hat x} x^ 处为零。
由几何学: 每个 A x A\boldsymbol x Ax 都落在由列 ( 1 , 1 , 1 ) (1,1,1) (1,1,1) ( 0 , 1 , 2 ) (0,1,2) (0,1,2) 所张成的平面内。在这个平面中,我们要找到最靠近 b \boldsymbol b b 的点,这个最近的点就是投影 p \boldsymbol p p
A x ^ A\boldsymbol {\hat x} Ax^ 最好的选择就是 p \boldsymbol p p,最小的误差是 e = b − p \boldsymbol e=\boldsymbol b-\boldsymbol p e=bp,它垂直于 A A A 的列。这三个点的高度为 ( p 1 , p 2 , p 3 ) (p_1,p_2,p_3) (p1,p2,p3) 时,它们是在一条直线上,因为 p \boldsymbol p p A A A 的列空间。拟合成一条直线时, x ^ \boldsymbol{\hat x} x^ 最好的选择就是 ( C , D ) (C,D) (C,D)
由代数: 每个向量 b \boldsymbol b b 都可以分为两部分,在列空间中的部分是 p \boldsymbol p p,还有垂直的部分是 e \boldsymbol e e。我们无法求解方程 A x = b A\boldsymbol x=\boldsymbol b Ax=b,但是我们可以求解方程 A x ^ = p A\boldsymbol{\hat x}=\boldsymbol p Ax^=p(移除 e \boldsymbol e e 然后求解 A T A x ^ = A T b A^TA\boldsymbol{\hat x}=A^T\boldsymbol b ATAx^=ATb): A x = b = p + e 无解 A x ^ = p 有解 x ^ 就是 ( A T A ) − 1 A T b ( 4.3.1 ) A\boldsymbol x=\boldsymbol b=\boldsymbol p+\boldsymbol e\,无解\kern 10ptA\boldsymbol{\hat x}=\boldsymbol p\,有解\kern 10pt\boldsymbol{\hat x}\,就是\,(A^TA)^{-1}A^T\boldsymbol b\kern 15pt(4.3.1) Ax=b=p+e无解Ax^=p有解x^就是(ATA)1ATb(4.3.1) A x ^ = p A\boldsymbol{\hat x}=\boldsymbol p Ax^=p 的解得到最小可能误差 e \boldsymbol e e 任意 x 的长度平方 ∣ ∣ A x − b ∣ ∣ 2 = ∣ ∣ A x − p ∣ ∣ 2 + ∣ ∣ e ∣ ∣ 2 ( 4.3.2 ) \pmb{任意\,\boldsymbol x\,的长度平方}\kern 12pt||A\boldsymbol x-\boldsymbol b||^2=||A\boldsymbol x-\boldsymbol p||^2+||\boldsymbol e||^2\kern 14pt(4.3.2) 任意x的长度平方∣∣Axb2=∣∣Axp2+∣∣e2(4.3.2)这就是直角三角形中的勾股定理 c 2 = a 2 + b 2 c^2=a^2+b^2 c2=a2+b2,向量 A x − p A\boldsymbol x-\boldsymbol p Axp 在列空间中,它与在左零空间中的 e \boldsymbol e e 垂直。我们通过选择 x = x ^ \boldsymbol x=\boldsymbol{\hat x} x=x^ A x − p A\boldsymbol x-\boldsymbol p Axp 减小至,留下了我们不能再减小的最小可能误差 e = ( e 1 , e 2 , e 3 ) \boldsymbol e=(e_1,e_2,e_3) e=(e1,e2,e3)
注意 “最小” 的意思是 A x − b A\boldsymbol x-\boldsymbol b Axb 长度的平方最小化: 最小二乘解 x ^ 使得 E = ∣ ∣ A x − b ∣ ∣ 2 尽可能的小。 \pmb{最小二乘解\,\boldsymbol{\hat x}\,使得\,E=||A\boldsymbol x-\boldsymbol b||^2\,尽可能的小。} 最小二乘解x^使得E=∣∣Axb2尽可能的小。Figure 4.6a 展示了最近的直线,它的误差距离是 e 1 , e 2 , e = 1 , − 2 , 1 e_1,e_2,e=1,-2,1 e1,e2,e=1,2,1。这些都是竖直的距离,最小二乘直线最小化 E = e 1 2 + e 2 2 + e 3 2 E=e_1^2+e_2^2+e_3^2 E=e12+e22+e32
Figure 4.6b 显示了在三维空间( b , p , e \boldsymbol b,\boldsymbol p,\boldsymbol e b,p,e 的空间)中的同样问题。向量 b \boldsymbol b b 不在 A A A 的列空间中,这也就是为什么 A x = b A\boldsymbol x=\boldsymbol b Ax=b 的原因,没有任何直线可以同时穿过这三点。最小可能的误差就是垂直向量 e = b − A x ^ \boldsymbol e=\boldsymbol b-A\boldsymbol{\hat x} e=bAx^,误差向量 ( 1 , − 2 , 1 ) (1,-2,1) (1,2,1) 在这三个方程中,它就是与这条最优直线的垂直距离。这两张图的背后就是基本方程 A T A x ^ = A T b A^TA\boldsymbol{\hat x}=A^T\boldsymbol b ATAx^=ATb在这里插入图片描述
注意误差 1 , − 2 , 1 1,-2,1 1,2,1 相加等于零。这是因为:误差 e = ( e 1 , e 2 , e 3 ) \boldsymbol e=(e_1,e_2,e_3) e=(e1,e2,e3) 垂直于 A A A 的第一列 ( 1 , 1 , 1 ) (1,1,1) (1,1,1),它们的点积就是 e 1 + e 2 + e 3 = 0 e_1+e_2+e_3=0 e1+e2+e3=0
由微积分: 大部分函数的最小值都是用微积分解决!图形降到最低点并且在每一个方向的导数都为零。这里要使得误差函数 E E E 最小化, E E E 就是平方和 e 1 2 + e 2 2 + e 3 2 e_1^2+e_2^2+e_3^2 e12+e22+e32(每个方程中误差的平方): E = ∣ ∣ A x − b ∣ ∣ 2 = ( C + D ⋅ 0 − 6 ) 2 + ( C + D ⋅ 1 ) 2 + ( C + D ⋅ 2 ) 2 ( 4.3.3 ) E=||A\boldsymbol x-\boldsymbol b||^2=(C+D\cdot0-6)^2+(C+D\cdot1)^2+(C+D\cdot2)^2\kern 18pt(4.3.3) E=∣∣Axb2=(C+D06)2+(C+D1)2+(C+D2)2(4.3.3)未知数是 C C C D D D,两个未知数有两个偏导数,它们在极小值处都为零。称为偏导数是因为求 ∂ E ∂ C \displaystyle\frac{\partial E}{\partial C} CE 时将 D D D 当做常数,求 ∂ E ∂ D \displaystyle\frac{\partial E}{\partial D} DE 时将 C C C 当做常数: ∂ E ∂ C = 2 ( C + D ⋅ 0 − 6 ) + 2 ( C + D ⋅ 1 ) + 2 ( C + D ⋅ 2 ) = 0 ∂ E ∂ D = 2 ( C + D ⋅ 0 − 6 ) ⋅ ( 0 ) + 2 ( C + D ⋅ 1 ) ⋅ ( 1 ) + 2 ( C + D ⋅ 2 ) ⋅ ( 2 ) = 0 \frac{\partial E}{\partial C}=2(C+D\cdot0-6)+2(C+D\cdot1)+2(C+D\cdot2)=0\\\frac{\partial E}{\partial D}=2(C+D\cdot0-6)\cdot(0)+2(C+D\cdot1)\cdot(1)+2(C+D\cdot2)\cdot(2)=0 CE=2(C+D06)+2(C+D1)+2(C+D2)=0DE=2(C+D06)(0)+2(C+D1)(1)+2(C+D2)(2)=0因为求导的链式法则, ∂ E ∂ D \displaystyle\frac{\partial E}{\partial D} DE 含有额外的因子 0 , 1 , 2 0,1,2 0,1,2(最后的 ( C + 2 D ) 2 (C+2D)^2 (C+2D)2 的导数是 2 2 2 C + 2 D C+2D C+2D 再乘 2 2 2)。这些因子在 ∂ E ∂ C \displaystyle\frac{\partial E}{\partial C} CE 中就是 1 , 1 , 1 1,1,1 1,1,1
毫无意外的 ∣ ∣ A x − b ∣ ∣ ||A\boldsymbol x-\boldsymbol b|| ∣∣Axb∣∣ 导数的因子 1 , 1 , 1 1,1,1 1,1,1 0 , 1 , 2 0,1,2 0,1,2 就是 A A A 的列,现在消去每一项的 2 2 2 然后将 C C C D D D 的同类项进行合并: C 的导数为零: 3 C + 3 D = 6 D 的导数为零: 3 C + 5 D = 0 矩阵 [ 3 3 3 5 ] 就是 A T A ( 4.3.4 ) \begin{matrix}C\,的导数为零:3C+3D=6\\D\,的导数为零:3C+5D=0\end{matrix}\kern 15pt\pmb{矩阵}\begin{bmatrix}3&3\\3&5\end{bmatrix}就是\,A^TA\kern 16pt(4.3.4) C的导数为零:3C+3D=6D的导数为零:3C+5D=0矩阵[3335]就是ATA(4.3.4)这些方程与 A T A x ^ = A T b A^TA\boldsymbol{\hat x}=A^T\boldsymbol b ATAx^=ATb 完全相同。 最优的 C C C D D D 就是 x ^ \boldsymbol{\hat x} x^ 的分量。从微积分得到的方程与从线性代数得到的 “正规方程” 完全一致。这是最小二乘的关键方程:

当 A T A x ^ = A T b 时, ∣ ∣ A x − b ∣ ∣ 2 的偏导数为零。 当\,A^TA\boldsymbol{\hat x}=A^T\boldsymbol b\,时,||A\boldsymbol x-\boldsymbol b||^2\,的偏导数为零。 ATAx^=ATb时,∣∣Axb2的偏导数为零。

解是 C = 5 , D = − 3 C=5,D=-3 C=5D=3,因此 b = 5 − 3 t b=5-3t b=53t 就是最优的直线 —— 它与这三点最近。当 t = 0 , 1 , 2 t=0,1,2 t=0,1,2 时,这条直线经过 p = 5 , 2 , − 1 \boldsymbol p=5,2,-1 p=5,2,1,它不通过 b = 6 , 0 , 0 \boldsymbol b=6,0,0 b=6,0,0。误差是 1 , − 2 , 1 1,-2,1 1,2,1,就是误差向量 e \boldsymbol e e

三、最小二乘的大图

Figure 4.3 是关键的一张图,它显示了 4 4 4 个基本子空间和矩阵的真正作用,左边的向量 x \boldsymbol x x 到右边的 b = A x \boldsymbol b=A\boldsymbol x b=Ax,这张图将 x \boldsymbol x x 分成 x r + x n \boldsymbol x_r+\boldsymbol x_n xr+xn A x = b A\boldsymbol x=\boldsymbol b Ax=b 可能存在很多解。
现在的情况与上述正好相反, A x = b A\boldsymbol x=\boldsymbol b Ax=b 无解,这里我们不再分解 x \boldsymbol x x,而是将 b \boldsymbol b b 分成 b = p + e \boldsymbol b=\boldsymbol p+\boldsymbol e b=p+e。Figure 4.7 显示了最小二乘的大图,我们不解 A x = b A\boldsymbol x=\boldsymbol b Ax=b,而是求解 A x ^ = p A\boldsymbol{\hat x}=\boldsymbol p Ax^=p,误差 e = b − p \boldsymbol e=\boldsymbol b-\boldsymbol p e=bp 无法避免。在这里插入图片描述
注意这里的零空间 N ( A ) \pmb N(A) N(A) 很小 —— 仅有一个点,这是因为 A A A 的列线性无关, A x = 0 A\boldsymbol x=\boldsymbol 0 Ax=0 的唯一解就是 x = 0 \boldsymbol x=\boldsymbol 0 x=0,此时 A T A A^TA ATA 是可逆的。方程 A T A x ^ = A T b A^TA\boldsymbol{\hat x}=A^T\boldsymbol b ATAx^=ATb 就决定了最优向量 x ^ \boldsymbol{\hat x} x^,对于误差有 A T e = 0 A^T\boldsymbol e=\boldsymbol 0 ATe=0

四、拟合一条直线

最小二乘最常见的应用就是拟合一条直线,从 m > 2 m>2 m>2 个点开始,希望找到一条最接近这些点的直线。在时间点 t 1 , t 2 , ⋯ , t m t_1,t_2,\cdots,t_m t1,t2,,tm 时,这 m m m 个点的高度是 b 1 , b 2 , ⋯ , b m b_1,b_2,\cdots,b_m b1,b2,,bm。最优直线 C + D t C+Dt C+Dt 距这些点的垂直距离是 e 1 , e 2 , ⋯ , e m e_1,e_2,\cdots,e_m e1,e2,,em。没有完全经过这些点的直线,我们要使得这些误差的平方 E = e 1 2 + e 2 2 + ⋯ + e m 2 E=e_1^2+e_2^2+\cdots+e_m^2 E=e12+e22++em2 最小。
第一个例子是 Figure 4.6 中的三点问题,现在我们将允许 m m m 个点( m m m 可以很多), x ^ \boldsymbol{\hat x} x^ 的两个分量仍然是 C C C D D D
如果我们要求 A x = b A\boldsymbol x=\boldsymbol b Ax=b 的确切解时,它需要一条完全通过这 m m m 个点的直线,通常这是不现实的。两个未知数 C C C D D D 决定了一条直线,所以 A A A 仅有 n = 2 n=2 n=2 列。为了拟合这 m m m 个点,我们需要求解 m m m 个方程(但是只有两个未知数!) A x = b 是 C + D t 1 = b 1 C + D t 2 = b 2 ⋮ C + D t m = b m 其中 A = [ 1 t 1 1 t 2 ⋮ ⋮ 1 t m ] ( 4.3.5 ) A\boldsymbol x=\boldsymbol b\kern 5pt是\kern 5pt\begin{matrix}C+Dt_1=b_1\\C+Dt_2=b_2\\\vdots\\C+Dt_m=b_m\end{matrix}\kern 10pt其中\,A=\begin{bmatrix}1&t_1\\1&t_2\\\vdots&\vdots\\1&t_m\end{bmatrix}\kern 15pt(4.3.5) Ax=bC+Dt1=b1C+Dt2=b2C+Dtm=bm其中A= 111t1t2tm (4.3.5) A A A 的列空间很细,这使得大部分的 b \boldsymbol b b 都落在列空间外。如果 b \boldsymbol b b 恰好落在列空间中,那么这些点就很正好落在一条直线上。这种情况下 b = p \boldsymbol b=\boldsymbol p b=p A x = b A\boldsymbol x=\boldsymbol b Ax=b 可解,误差是 e = ( 0 , 0 , ⋯ , 0 ) \boldsymbol e=(0,0,\cdots,0) e=(0,0,,0) 最接近的直线 C + D t 的高度是 p 1 , p 2 , ⋯ , p m ,误差是 e 1 , e 2 , ⋯ , e m . 求解 A T A x ^ = A T b ,得到 x ^ = ( C , D ) ,误差是 e i = b i − C − D t i . {\color{blue}\begin{array}{l}最接近的直线\,C+Dt\,的高度是\,p_1,p_2,\cdots,p_m,误差是\,e_1,e_2,\cdots,e_m.\\求解\,A^TA\boldsymbol{\hat x}=A^T\boldsymbol b,得到\,\boldsymbol{\hat x}=(C,D),误差是\,e_i=b_i-C-Dt_i.\end{array}} 最接近的直线C+Dt的高度是p1,p2,,pm,误差是e1,e2,,em.求解ATAx^=ATb,得到x^=(C,D),误差是ei=biCDti.直线拟合非常重要,我们给定方程 A T A x ^ = A T b A^TA\boldsymbol{\hat x}=A^T\boldsymbol b ATAx^=ATb A A A 的两列是线性无关的(除非所有的点 t i t_i ti 都一样),我们转到最小二乘并求解 A T A x ^ = A T b A^TA\boldsymbol{\hat x}=A^T\boldsymbol b ATAx^=ATb 点积矩阵 A T A = [ 1 1 ⋯ 1 t 1 t 2 ⋯ t m ] [ 1 t 1 1 t 2 ⋮ ⋮ 1 t m ] = [ m ∑ t i ∑ t i ∑ t i 2 ] ( 4.3.6 ) \pmb{点积矩阵}\kern 6ptA^TA=\begin{bmatrix}1&1&\cdots&1\\t_1&t_2&\cdots&t_m\end{bmatrix}\begin{bmatrix}1&t_1\\1&t_2\\\vdots&\vdots\\1&t_m\end{bmatrix}=\begin{bmatrix}m&\sum t_i\\\sum t_i&\sum t^2_i\end{bmatrix}\kern 13pt(4.3.6) 点积矩阵ATA=[1t11t21tm] 111t1t2tm =[mtititi2](4.3.6)正规方程的右侧是 2 × 1 2\times1 2×1 的向量 A T b A^T\boldsymbol b ATb A T b = [ 1 1 ⋯ 1 t 1 t 2 ⋯ t m ] [ b 1 b 2 ⋮ b m ] = [ ∑ b i ∑ t i b i ] ( 4.3.7 ) A^T\boldsymbol b=\begin{bmatrix}1&1&\cdots&1\\t_1&t_2&\cdots&t_m\end{bmatrix}\begin{bmatrix}b_1\\b_2\\\vdots\\b_m\end{bmatrix}=\begin{bmatrix}\sum b_i\kern 8pt\\\sum t_ib_i\end{bmatrix}\kern 15pt(4.3.7) ATb=[1t11t21tm] b1b2bm =[bitibi](4.3.7)在特定问题中,这些数字都是给定的,最优的 x ^ = ( C , D ) \boldsymbol{\hat x}=(C,D) x^=(C,D) ( A T A ) − 1 A T b (A^TA)^{-1}A^T\boldsymbol b (ATA)1ATb.

A T A x ^ = A T b A^TA\boldsymbol{\hat x}=A^T\boldsymbol b ATAx^=ATb 时,直线 C + D t C+Dt C+Dt 使得 e 1 2 + e 2 2 + ⋯ + e m 2 = ∣ ∣ A x − b ∣ ∣ 2 e_1^2+e_2^2+\cdots+e_m^2=||A\boldsymbol x-\boldsymbol b||^2 e12+e22++em2=∣∣Axb2 最小: A T A x ^ = A T b [ m ∑ t i ∑ t i ∑ t i 2 ] [ C D ] = [ ∑ b i ∑ t i b i ] ( 4.3.8 ) A^TA\boldsymbol{\hat x}=A^T\boldsymbol b\kern 20pt\begin{bmatrix}m&\sum t_i\\\sum t_i&\sum t^2_i\end{bmatrix}\begin{bmatrix}C\\D\end{bmatrix}=\begin{bmatrix}\sum b_i\\\sum t_ib_i\end{bmatrix}\kern 18pt(4.3.8) ATAx^=ATb[mtititi2][CD]=[bitibi](4.3.8)

m m m 个点与这条直线的垂直误差是 e = b − p \boldsymbol e=\boldsymbol b-\boldsymbol p e=bp 的分量,这个误差向量 b − A x ^ \boldsymbol b-A\boldsymbol{\hat x} bAx^ A A A 的列是垂直的(几何学),误差向量在 A T A^T AT 的零空间中(线性代数)。最优的 x ^ = ( C , D ) \boldsymbol{\hat x}=(C,D) x^=(C,D) 使得总误差 E E E 最小,即平方和最小(微积分): E ( x ) = ∣ ∣ A x − b ∣ ∣ 2 = ( C + D t 1 − b 1 ) 2 + ( C + D t 2 − b 2 ) + ⋯ ( C + D t m − b m ) 2 E(\boldsymbol x)=||A\boldsymbol x-\boldsymbol b||^2=(C+Dt_1-b_1)^2+(C+Dt_2-b_2)+\cdots(C+Dt_m-b_m)^2 E(x)=∣∣Axb2=(C+Dt1b1)2+(C+Dt2b2)+(C+Dtmbm)2微积分中令 ∂ E ∂ C \displaystyle\frac{\partial E}{\partial C} CE ∂ E ∂ D \displaystyle\frac{\partial E}{\partial D} DE 等于零,就可以得到 A T A x ^ = A T b A^TA\boldsymbol{\hat x}=A^T\boldsymbol b ATAx^=ATb
其它的最小二乘问题未知数可能多于两个,拟合成最优的抛物线有 n = 3 n=3 n=3 个系数 C , D , E C,D,E C,D,E。一般情况下,我们用 n n n 个参数拟合 m m m 个数据点,矩阵 A A A n n n 列,且 n < m n<m n<m ∣ ∣ A x − b ∣ ∣ 2 ||A\boldsymbol x-\boldsymbol b||^2 ∣∣Axb2 的导数可以得到 n n n 个方程 A T A x ^ = A T b A^TA\boldsymbol{\hat x}=A^T\boldsymbol b ATAx^=ATb平方的导数是线性的。这就是为什么最小二乘法会流行。

例2】当测量的时间点 t i t_i ti 的和为零时, A A A 有正交列。假设在时间点 t = − 2 , 0 , 2 t=-2,0,2 t=2,0,2 b = 1 , 2 , 4 b=1,2,4 b=1,2,4,这些时间点相加为零。 A A A 的列点积为零: ( 1 , 1 , 1 ) (1,1,1) (1,1,1) ( − 2 , 0 , 2 ) (-2,0,2) (2,0,2) 正交。 C + D ( − 2 ) = 1 C + D ( 0 ) = 2 C + D ( 2 ) = 4 或 A x = [ 1 − 2 1 0 1 2 ] [ C D ] = [ 1 2 4 ] \begin{array}{l}C+D(-2)=1\\C+D(0)=2\\C+D(2)=4\end{array}或\kern 5ptA\boldsymbol x=\begin{bmatrix}1&-2\\1&0\\1&2\end{bmatrix}\begin{bmatrix}C\\D\end{bmatrix}=\begin{bmatrix}1\\2\\4\end{bmatrix} C+D(2)=1C+D(0)=2C+D(2)=4Ax= 111202 [CD]= 124 A A A 的列正交时, A T A A^TA ATA 是一个对角矩阵: A T A x ^ = A T b 是 [ 3 0 0 8 ] [ C D ] = [ 7 6 ] ( 4.3.9 ) A^TA\boldsymbol{\hat x}=A^T\boldsymbol b\kern 5pt是\kern 5pt\begin{bmatrix}3&\pmb0\\\pmb0&8\end{bmatrix}\begin{bmatrix}C\\D\end{bmatrix}=\begin{bmatrix}7\\6\end{bmatrix}\kern 15pt(4.3.9) ATAx^=ATb[3008][CD]=[76](4.3.9)重点:因为 A T A A^TA ATA 是对角矩阵,我们可以分开求出 C = 7 3 C=\displaystyle\frac{7}{3} C=37 D = 6 8 D=\displaystyle\frac{6}{8} D=86 A T A A^TA ATA 中的零是 A A A 垂直列的点积。这个对角矩阵 m = 3 m=3 m=3 t 1 2 + t 2 2 + t 3 2 = 8 t_1^2+t_2^2+t_3^2=8 t12+t22+t32=8,它与单位矩阵基本上有差不多的性质。
正交矩阵非常有用,我们可以通过减去时间的平均 t ˉ = ( t 1 + t 2 + ⋯ + t m ) / m \bar t=(t_1+t_2+\cdots+t_m)/m tˉ=(t1+t2++tm)/m 来进行时间的移位。如果原始时间点是 1 , 3 , 5 1,3,5 1,3,5,则它们的平均值是 t ˉ = 3 \bar t=3 tˉ=3,平移后的时间点 T = t − t ˉ = t − 3 T=t-\bar t=t-3 T=ttˉ=t3,它们的和是零! T 1 = 1 − 3 = − 2 T 2 = 3 − 3 = 0 T 3 = 5 − 3 = 2 A n e w = [ 1 T 1 1 T 2 1 T 3 ] A n e w T A n e w = [ 3 0 0 8 ] \begin{array}{l}T_1=1-3=-2\\T_2=3-3=0\\T_3=5-3=2\end{array}\kern 12ptA_{new}=\begin{bmatrix}1&T_1\\1&T_2\\1&T_3\end{bmatrix}\kern 12ptA^T_{new}A_{new}=\begin{bmatrix}3&\pmb0\\\pmb0&8\end{bmatrix} T1=13=2T2=33=0T3=53=2Anew= 111T1T2T3 AnewTAnew=[3008]此时 C C C D D D 可以由简单的方程(4.3.9)直接得到,最优的直线 C + D T C+DT C+DT 就是 C + D ( t − t ˉ ) = C + D ( t − 3 ) C+D(t-\bar t)=C+D(t-3) C+D(ttˉ)=C+D(t3)

五、A 有相关列: x ^ \boldsymbol{\hat x} x^ 是什么?

从一开始,我们就假设 A A A 的列是无关的,那么 A T A A^TA ATA 可逆, A T A x ^ = A T b A^TA\boldsymbol{\hat x}=A^T\boldsymbol b ATAx^=ATb 可以得到 A x = b A\boldsymbol x=\boldsymbol b Ax=b 的最小二乘解。
如果 A A A 有相关列,最优的 x ^ \boldsymbol{\hat x} x^ 是什么呢?下面是一个特殊的例子:在这里插入图片描述测量值 b 1 = 3 b_1=3 b1=3 b 2 = 1 b_2=1 b2=1 都是在相同的时间点 T T T !直线 C + D t C+Dt C+Dt 不可能同时经过这两个点。此时我们将 b = ( 3 , 1 ) \boldsymbol b=(3,1) b=(3,1) 投影到 A A A 的列空间得到 p = ( 2 , 2 ) \boldsymbol p=(2,2) p=(2,2),这样就把方程 A x = b A\boldsymbol x=\boldsymbol b Ax=b 变成了 A x ^ = p A\boldsymbol{\hat x}=\boldsymbol p Ax^=p,将一个无解的方程变成了一个又无穷多解的方程,这个问题的原因就是 A A A 有相关列且 ( 1 , − 1 ) (1,-1) (1,1) 在它的零空间中。
我们应该选择哪个解 x ^ \boldsymbol{\hat x} x^ 呢?图中所有的虚线在 T = 1 T=1 T=1 处都有两个误差 1 1 1 − 1 -1 1,误差 e = b − p = ( 1 , − 1 ) \boldsymbol e=\boldsymbol b-\boldsymbol p=(1,-1) e=bp=(1,1) 需要尽可能小,但是这里我们无法知道哪条是最优的直线。
在直觉上会选择高度为 2 2 2 的水平线,如果最优直线的方程是 b = C + D t b=C+Dt b=C+Dt,则可以选择 x ^ 1 = C = 2 \hat x_1=C=2 x^1=C=2 x ^ 2 = D = 0 \hat x_2=D=0 x^2=D=0,如果最优方程是 b = c t + d b=ct+d b=ct+d(交换了一下 C C C D D D 的位置),则水平线有 x ^ 1 = c = 0 \hat x_1=c=0 x^1=c=0 x ^ 2 = d = 2 \hat x_2=d=2 x^2=d=2,即不同的 x ^ \boldsymbol{\hat x} x^ 得到了相同的直线!这样同样无法选择最优的 x ^ . \boldsymbol{\hat x}. x^.
A A A 的 “伪逆矩阵(pseudoinverse)” 会选出 A x ^ = p A\boldsymbol{\hat x}=\boldsymbol p Ax^=p最短解。这里的最短解是 x + = ( 1 , 1 ) \boldsymbol x^+=(1,1) x+=(1,1),它是 A A A 行空间中的特解, x + \boldsymbol x^+ x+ 的长度是 2 \sqrt2 2 (上述两个 x ^ = ( 2 , 0 ) \boldsymbol{\hat x}=(2,0) x^=(2,0) ( 0 , 2 ) (0,2) (0,2) 的长度都为 2 2 2)。
A A A 的列无关时,零空间仅包含零向量,伪逆矩阵就是我们正常的左逆矩阵 L = ( A T A ) − 1 A T L=(A^TA)^{-1}A^T L=(ATA)1AT
注意:MATLAB 的奇异矩阵得到的是 Inf \textrm{Inf} Inf NaN \textrm{NaN} NaN(Not a Number)或 1 0 16 10^{16} 1016(不好的数),每种情况都会出现警告! Inf \textrm{Inf} Inf NaN \textrm{NaN} NaN 1 0 16 10^{16} 1016 可能是来自 0 x = b \boldsymbol {0x}=\boldsymbol b 0x=b 0 x = 0 \boldsymbol{0x}=\boldsymbol 0 0x=0 1 0 − 16 x = 1 \boldsymbol{10^{-16}x}={\boldsymbol 1} 1016x=1
这三个例子是三大困难:奇异且无解,奇异有无穷多解,非常非常接近奇异。

六、抛物线拟合

如果我们扔出去一颗球,要用一条直线去拟合球的轨迹是疯狂的行为。一条抛物线 b = C + D t + E t 2 b=C+Dt+Et^2 b=C+Dt+Et2 将允许这个球先向上再向下( b b b 是在时间 t t t 时的高度)。实际轨迹并不是一条完美的抛物线,但是投影的全部定理都是由近似开始的。
当伽利略从比萨斜塔扔下一块石头开始,它会加速,距离包含一个二次项 1 2 g t 2 \displaystyle\frac{1}{2}gt^2 21gt2(伽利略的观点与石头的重量无关)。如果没有 t 2 t^2 t2 我们将无法将卫星送入轨道。尽管这里出现了一个非线性函数 t 2 t^2 t2,未知数 C , D , E C,D,E C,D,E 仍然是线性的!最优抛物线的拟合仍然是线性代数的一个问题。
问题: 在时间 t 1 , t 2 , ⋯ , t m t_1,t_2,\cdots,t_m t1,t2,,tm 时,高度是 b 1 , b 2 , ⋯ , b m b_1,b_2,\cdots,b_m b1,b2,,bm,用一条抛物线拟合这些点。
解: m > 3 m>3 m>3 个点时,这 m m m 个方程一般是无解的: C + D t 1 + E t 1 2 = b 1 C + D t 2 + E t 2 2 = b 2 ⋯ C + D t m + E t m 2 = b m 是 A x = b ,其中 A 是 m × 3 的矩阵 A = [ 1 t 1 t 1 2 1 t 2 t 2 2 ⋮ ⋮ ⋮ 1 t m t m 2 ] ( 4.3.10 ) \begin{matrix}C+Dt_1+Et_1^2=b_1\\C+Dt_2+Et_2^2=b_2\\\cdots\\C+Dt_m+Et_m^2=b_m\end{matrix}\kern 5pt\begin{matrix}是\,A\boldsymbol x=\boldsymbol b,其中\,\\A\,是\,m\times3\,的矩阵\end{matrix}\kern 5ptA=\begin{bmatrix}1&t_1&t_1^2\\1&t_2&t_2^2\\\vdots&\vdots&\vdots\\1&t_m&t_m^2\end{bmatrix}\kern 15pt(4.3.10) C+Dt1+Et12=b1C+Dt2+Et22=b2C+Dtm+Etm2=bmAx=b,其中Am×3的矩阵A= 111t1t2tmt12t22tm2 (4.3.10)最小二乘: 最接近的抛物线 C + D t + E t 2 C+Dt+Et^2 C+Dt+Et2 x ^ = ( C , D , E ) \boldsymbol{\hat x}=(C,D,E) x^=(C,D,E) 满足三个正规方程 A T A x ^ = A T b A^TA\boldsymbol{\hat x}=A^T\boldsymbol b ATAx^=ATb
下面将这个变成投影问题: A A A 的列空间维度是 3 3 3 b \boldsymbol b b 的投影是 p = A x ^ \boldsymbol p=A\boldsymbol{\hat x} p=Ax^,其中 p \boldsymbol p p 是系数 C , D , E C,D,E C,D,E 对三列进行组合。第一个数据点的误差是 e 1 = b 1 − C − D t 1 − E t 1 2 e_1=b_1-C-Dt_1-Et_1^2 e1=b1CDt1Et12,误差的总平方和是 e 1 2 + e 2 2 + ⋯ + e m 2 e_1^2+e_2^2+\cdots+e_m^2 e12+e22++em2。如果用微积分来最小化误差,就是计算 E E E(误差总的平方和,与系数 E E E 不同)对于 C , D , E C,D,E C,D,E 的偏导数,当 x ^ = ( C , D , E ) \boldsymbol{\hat x}=(C,D,E) x^=(C,D,E) A T A x ^ = A T b A^TA\boldsymbol{\hat x}=A^T\boldsymbol b ATAx^=ATb 这个 3 × 3 3\times3 3×3 的方程系统的解时,这三个偏导数等于零。
傅里叶级数也是最小二乘的应用 —— 这里是近似函数而不是近似向量,函数的近似从误差的平方和 e 1 2 + e 2 2 + ⋯ + e m 2 e_1^2+e_2^2+\cdots+e_m^2 e12+e22++em2 变成了误差平方的积分。

例3】一个抛物线 b = C + D t + E t 2 b=C+Dt+Et^2 b=C+Dt+Et2 t = 0 , 1 , 2 t=0,1,2 t=0,1,2 时,经过三个高度 b = 6 , 0 , 0 b=6,0,0 b=6,0,0,关于 C , D , E C,D,E C,D,E 的三个方程是 C + D ⋅ 0 + E ⋅ 0 2 = 6 C + D ⋅ 1 + E ⋅ 1 2 = 0 C + D ⋅ 2 + E ⋅ 2 2 = 0 ( 4.3.11 ) \begin{matrix}C+D\cdot0+E\cdot0^2=6\\C+D\cdot1+E\cdot1^2=0\\C+D\cdot2+E\cdot2^2=0\end{matrix}\kern 35pt(4.3.11) C+D0+E02=6C+D1+E12=0C+D2+E22=0(4.3.11)这个就是 A x = b A\boldsymbol x=\boldsymbol b Ax=b,它是有解的,这三个数据点得到三个方程和一个方阵,解是 x = ( C , D , E ) = ( 6 , − 9 , 3 ) \boldsymbol x=(C,D,E)=(6,-9,3) x=(C,D,E)=(6,9,3),如 Figure 4.8a 所示,这条抛物线 b = 6 − 9 t + 3 t 2 b=6-9t+3t^2 b=69t+3t2 通过这三个点。
上述对于投影来说意味着什么?矩阵有三列,它张成整个 R 3 \pmb{\textrm R}^3 R3 空间,投影矩阵就是单位矩阵, b \boldsymbol b b 的投影就是 b \boldsymbol b b,误差是零。这里不需要 A T A x ^ = A T b A^TA\boldsymbol{\hat x}=A^T\boldsymbol b ATAx^=ATb,因为 A x = b A\boldsymbol x=\boldsymbol b Ax=b 有解。当然两边也可以左乘 A T A^T AT,只是我们没什么理由这样做。
Figure 4.8 显示了在 t 4 t_4 t4 时刻的第四点是 b 4 b_4 b4,如果它正好落在抛物线上,则新的 A x = b A\boldsymbol x=\boldsymbol b Ax=b 4 4 4 个方程)任然有解,如果第四点不在抛物线上,我们就需要 A T A x ^ = A T b A^TA\boldsymbol{\hat x}=A^T\boldsymbol b ATAx^=ATb,那么最小二乘的抛物线就不一定让四个点都落在它上面。
最小二乘会平衡四个误差得到三个关于 C , D , E C,D,E C,D,E 的方程。在这里插入图片描述

七、主要内容总结

  1. 最小二乘解 x ^ \boldsymbol{\hat x} x^ 使得 ∣ ∣ A x − b ∣ ∣ 2 = x T A T A x − 2 x T A T b + b T b ||A\boldsymbol x-\boldsymbol b||^2=\boldsymbol x^TA^TA\boldsymbol x-2\boldsymbol x^T\boldsymbol A^T\boldsymbol b+\boldsymbol b^T\boldsymbol b ∣∣Axb2=xTATAx2xTATb+bTb 最小,这个就是 E E E,它是 m m m 个方程误差的平方和( m > n m>n m>n)。
  2. 最优的 x ^ \boldsymbol{\hat x} x^ 由正规方程 A T A x ^ = A T b A^TA\boldsymbol{\hat x}=A^T\boldsymbol b ATAx^=ATb 得来, E E E 是最小值。
  3. 通过直线 b = C + D t b=C+Dt b=C+Dt 拟合 m m m 个点,正规方程可以得到 C C C D D D
  4. 最优直线的高度是 p = ( p 1 , p 2 , ⋯ , p m ) \boldsymbol p=(p_1,p_2,\cdots,p_m) p=(p1,p2,,pm),和数据点的竖直距离就是误差 e = ( e 1 , e 2 , ⋯ , e m ) \boldsymbol e=(e_1,e_2,\cdots,e_m) e=(e1,e2,,em),关键方程是 A T e = 0 A^T\boldsymbol e=\boldsymbol 0 ATe=0
  5. 如果有 m m m 个数据点( m > n m>n m>n),我们可以得到 n n n 个方程,这 n n n 个方程 A x = b A\boldsymbol x=\boldsymbol b Ax=b 通常是无解的。但是 n n n A T A x ^ = A T b A^TA\boldsymbol{\hat x}=A^T\boldsymbol b ATAx^=ATb 方程可以得到最小二乘解 —— 最小 MSE(均方值:mean square error)的组合。

八、例题

例4】在时刻 t = 1 , 2 , ⋯ , 9 t=1,2,\cdots,9 t=1,2,,9 时, 9 9 9 个测量值 b 1 b_1 b1 b 9 b_9 b9 全为零。第 10 10 10 个测量值 b 10 = 40 b_{10}=40 b10=40,它是一个离群值。找到一条最优的水平直线 y = C y=C y=C 来拟合这 10 10 10 个点 ( 1 , 0 ) , ( 2 , 0 ) , ⋯ , ( 9 , 0 ) , ( 10 , 40 ) (1,0),(2,0),\cdots,(9,0),(10,40) (1,0),(2,0),,(9,0),(10,40),使用下面三种情况的误差 E E E
(1)最小二乘误差 E 2 = e 1 2 + e 2 2 + ⋯ + e 10 2 E_2=e_1^2+e_2^2+\cdots+e^2_{10} E2=e12+e22++e102 C C C 的正规方式是线性的)
(2)最小极大误差(least maximum error) E ∞ = ∣ e max ∣ E_\infty=|e_{\textrm{max}}| E=emax
(3)最小误差和 E 1 = ∣ e 1 ∣ + ∣ e 2 ∣ + ⋯ + ∣ e 10 ∣ E_1=|e_1|+|e_2|+\cdots+|e_{10}| E1=e1+e2++e10
解: (1)最小二乘法对 0 , 0 , ⋯ , 0 , 40 0,0,\cdots,0,40 0,0,,0,40 10 10 10 个点拟合出来的水平直线是 C = 4 C=4 C=4 A 是 10 × 1 的全 1 矩阵 A T A = 10 A T b = ∑ i = 1 10 b i = 40 所以 10 C = 40 A\,是\,10\times1\,的全\,1\,矩阵\kern 10ptA^TA=10\kern 10ptA^T\boldsymbol b=\sum^{10}_{i=1}b_i=40\kern 10pt所以\,10C=40 A10×1的全1矩阵ATA=10ATb=i=110bi=40所以10C=40(2)最小极大误差是 C = 20 C=20 C=20,是 0 0 0 40 40 40 的一半。
(3)最小误差和是 C = 0 C=0 C=0。误差和是 9 ∣ C ∣ + ∣ 40 − C ∣ 9|C|+|40-C| 9∣C+∣40C,可得当 C = 0 C=0 C=0 时最小。
最小和来自中位测量(median measurement), 0 , 0 , ⋯ , 0 , 40 0,0,\cdots,0,40 0,0,,0,40 的中位数是 0 0 0。统计学中,最小二乘解受离群值影响很大,例如此例中的 b 10 = 40 b_{10}=40 b10=40,有时使用最小误差和会比较好。但是这样的话,方程就是一个非线性的了。
下面使用最小二乘法用一条直线 C + D t C+Dt C+Dt 来拟合这 10 10 10 个点, ( 1 , 0 ) (1,0) (1,0) ( 10 , 40 ) (10,40) (10,40) A T A = [ 10 ∑ t i ∑ t i ∑ t i 2 ] = [ 10 55 55 385 ] A T b = [ ∑ b i ∑ t i b i ] = [ 40 400 ] A^TA=\begin{bmatrix}10&\sum t_i\\\sum t_i&\sum t^2_i\end{bmatrix}=\begin{bmatrix}10&55\\55&385\end{bmatrix}\kern 20ptA^T\boldsymbol b=\begin{bmatrix}\sum b_i\\\sum t_ib_i\end{bmatrix}=\begin{bmatrix}40\\400\end{bmatrix} ATA=[10tititi2]=[105555385]ATb=[bitibi]=[40400]这些就是由方程(4.3.8)而来,然后求解 A T A x ^ = A T b A^TA\boldsymbol{\hat x}=A^T\boldsymbol b ATAx^=ATb,得到 C = − 8 , D = 24 / 11 C=-8,D=24/11 C=8D=24/11
如果将 b = ( 0 , 0 , ⋯ , 40 ) \boldsymbol b=(0,0,\cdots,40) b=(0,0,,40) 乘上 3 3 3 再加上 30 30 30 得到 b new = ( 30 , 30 , ⋯ , 150 ) \boldsymbol b_{\textrm{new}}=(30,30,\cdots,150) bnew=(30,30,,150),那么 C C C D D D 会发生什么样的变化呢?线性将允许我们重新设定 b \boldsymbol b b 的比例, 3 3 3 b \boldsymbol b b 可以得到 C C C D D D 都乘 3 3 3,对所有的 b i b_i bi 都加上 30 30 30,相当于对 C C C 加上 30 30 30,得到新的 C new = 3 C + 30 = 6 C_{\textrm {new}}=3C+30=6 Cnew=3C+30=6 D new = 3 D = 72 / 11 D_{\textrm{new}}=3D=72/11 Dnew=3D=72/11

例5】在时刻 t = − 2 , − 1 , 0 , 1 , 2 t=-2,-1,0,1,2 t=2,1,0,1,2 时, b = ( 0 , 0 , 1 , 0 , 0 ) \boldsymbol b=(0,0,1,0,0) b=(0,0,1,0,0),找到一条离这些点最近(最小二乘误差)的抛物线 C + D t + E t 2 C+Dt+Et^2 C+Dt+Et2。首先写出 5 5 5 个方程 A x = b A\boldsymbol x=\boldsymbol b Ax=b,它有三个未知数 x = ( C , D , E ) \boldsymbol x=(C,D,E) x=(C,D,E),这些方程分别过这 5 5 5 个点。但是它们没有解,因为并不存在这样的抛物线,我们要求解 A T A x ^ = A T b A^TA\boldsymbol{\hat x}=A^T\boldsymbol b ATAx^=ATb
这里可以预测 D = 0 D=0 D=0,最优的抛物线应该是关于 t = 0 t=0 t=0 对称。在 A T A x ^ = A T b A^TA\boldsymbol{\hat x}=A^T\boldsymbol b ATAx^=ATb 中,方程 2 2 2 中的 D D D 与方程 1 1 1 3 3 3 是解耦的。
解: A x = b A\boldsymbol x=\boldsymbol b Ax=b 5 5 5 个方程有一个矩形的范德蒙德(Vandermonde)矩阵 A A A C + D ( − 2 ) + E ( − 2 ) 2 = 0 C + D ( − 1 ) + E ( − 1 ) 2 = 0 C + D ( 0 ) + E ( 0 ) 2 = 1 C + D ( 1 ) + E ( 1 ) 2 = 0 C + D ( 2 ) + E ( 2 ) 2 = 0 A = [ 1 − 2 4 1 − 1 1 1 0 0 1 1 1 1 2 4 ] A T A = [ 5 0 10 0 10 0 10 0 34 ] \begin{matrix}C+D(-2)+E(-2)^2=0\\C+D(-1)+E(-1)^2=0\\C+D\kern 8pt(0)+E\kern 8pt(0)^2=1\\C+D\kern 8pt(1)+E\kern 8pt(1)^2=0\\C+D\kern 8pt(2)+E\kern 8pt(2)^2=0\end{matrix}\kern 10ptA=\begin{bmatrix}1&-2&4\\1&-1&1\\1&\kern 7pt0&0\\1&\kern 7pt1&1\\1&\kern 7pt2&4\end{bmatrix}\kern 10ptA^TA=\begin{bmatrix}5&\pmb0&10\\\pmb0&10&\pmb0\\10&\pmb0&34\end{bmatrix} C+D(2)+E(2)2=0C+D(1)+E(1)2=0C+D(0)+E(0)2=1C+D(1)+E(1)2=0C+D(2)+E(2)2=0A= 111112101241014 ATA= 5010010010034 A T A A^TA ATA 中的零表示 A A A 的列 2 2 2 和它的列 1 1 1 和列 3 3 3 正交,在 A A A 中可以直接看出来(时间 − 2 , − 1 , 0 , 1 , 2 -2,-1,0,1,2 2,1,0,1,2 是对称的)。抛物线 C + D t + E t 2 C+Dt+Et^2 C+Dt+Et2 中最优的 C , D , E C,D,E C,D,E A T A x ^ = A T b A^TA\boldsymbol{\hat x}=A^T\boldsymbol b ATAx^=ATb 解得,这里 D D D C C C E E E 是解耦的: [ 5 0 10 0 10 0 10 0 34 ] [ C D E ] = [ 1 0 0 ] 解得 C = 17 35 D = 0 ,与预测一致 E = − 1 7 \begin{bmatrix}5&0&10\\0&10&0\\10&0&34\end{bmatrix}\begin{bmatrix}C\\D\\E\end{bmatrix}=\begin{bmatrix}1\\0\\0\end{bmatrix}\kern 5pt解得\kern 5pt\begin{array}{l}C=\displaystyle\frac{17}{35}\\D=0,与预测一致\\E=-\displaystyle\frac{1}{7}\end{array} 5010010010034 CDE = 100 解得C=3517D=0,与预测一致E=71

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/46427.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面向铁路、地铁旅客信息系统(PIS)的上架型整机,铁路专用M12网络接口,满足欧洲铁路应用标准

上架型整机 2U 19寸上架型整机&#xff0c;采用高性能低功耗处理器&#xff0c;能应用在宽温环境下&#xff0c;并满足欧洲铁路应用标准EN50155关于电磁兼容性&#xff0c;冲击和振动测试试验的要求&#xff0c;是一款面向铁路、地铁旅客信息系统&#xff08;PIS&#xff09;的…

C# 关于 PaddleOCRSharp OCR识别的疲劳测试

目录 关于 PaddleOCRSharp 应用范例演示 ​范例运行环境 疲劳测试 添加组件库 方法设计 调用示例 小结 关于 PaddleOCRSharp PaddleOCRSharp 是百度飞桨封装的.NET版本 OCR dll 类库&#xff0c;OCR&#xff08;Optical Character Recognition&#xff09;工具可以将…

【Java面向对象】抽象类和接口

文章目录 1.抽象类2.常见的抽象类2.1 Number类2.2 Calendar 和GregorianCalendar 3.接口4.常见接口4.1 Comparable 接口4.2 Cloneable 接口4.3 深浅拷贝 5.类的设计原则 1.抽象类 在继承的层次结构中&#xff0c;每个新的子类都使类变得更加明确和具体。如果从一个子类向父类追…

Unty 崩溃问题(Burst 1.8.2)

错误代码&#xff1a; Assertion failed on expression: exception SCRIPTING_NULL UnityEngine.StackTraceUtility:ExtractStackTrace () Unity.Burst.BurstCompiler:SendRawCommandToCompiler (string Unity版本&#xff1a;2021.3.17F1&#xff0c;Burst 1.8.2 表现&…

python安装talib库教程

【talib介绍】 Talib介绍 Talib&#xff0c;全称“Technical Analysis Library”&#xff0c;即技术分析库&#xff0c;是一个广泛应用于金融量化领域的Python库。该库由C语言编写&#xff0c;支持Python调用&#xff0c;为投资者、交易员和数据分析师提供了强大的技术分析工…

酷炫末世意境背景404单页HTML源码

源码介绍 酷炫末世意境背景404单页HTML源码&#xff0c;背景充满着破坏一切的意境&#xff0c;彷佛末世的到来&#xff0c;可以做网站错误页或者丢失页面&#xff0c;将下面的代码放到空白的HTML里面&#xff0c;然后上传到服务器里面&#xff0c;设置好重定向即可 效果预览 …

论文学习——基于自适应选择的动态多目标进化优化有效响应策略

论文题目&#xff1a;Effective response strategies based on adaptive selection for dynamic multi-objective evolutionary optimization 基于自适应选择的动态多目标进化优化有效响应策略&#xff08;Xiaoli Li a,b,c, Anran Cao a,∗, Kang Wang a&#xff09;Applied S…

零基础STM32单片机编程入门(十五) DHT11温湿度传感器模块实战含源码

文章目录 一.概要二.DHT11主要性能参数三.DHT11温度传感器内部框图四.DTH11模块原理图五.DHT11模块跟单片机板子接线和通讯时序1.单片机跟DHT11模块连接示意图2.单片机跟DHT11模块通讯流程与时序 六.STM32单片机DHT11温度传感器实验七.CubeMX工程源代码下载八.小结 一.概要 DH…

App Inventor 2 天气预报App开发 - 第三方API接入的通用方法(2)

本文来自AppInventor2中文网&#xff08;www.fun123.cn&#xff09;参考文档&#xff0c;调用第三方天气接口获取天气JSON数据&#xff0c;解析并展示在App上。 App效果图&#xff0c;展示未来7日的天气预报&#xff0c;包括日期、天气图示和温度&#xff1a; App原理介绍 通…

Linux/Windows 系统分区

1. Windows 系统 1.1 系统分区 系统分区也叫做磁盘分区&#xff0c;即分盘&#xff1b; 举个例子&#xff0c;好比家里有一个大柜子&#xff0c;把衣服&#xff0c;鞋子&#xff0c;袜子都放在里面&#xff0c;由于没有隔断&#xff0c;找的时候非常麻烦&#xff0c;找是能找…

借力Jersey,铸就卓越RESTful API体验

目录 maven 创建 jersey 项目 运行 支持返回 json 数据对象 1. 引言 在当今数字化时代&#xff0c;API&#xff08;应用程序编程接口&#xff09;已成为连接不同软件系统和服务的桥梁。RESTful API以其简洁、轻量级和易于理解的特点&#xff0c;成为了API设计的首选标准。本…

Windows双网卡上网原理以及配置方法

目录 1. 背景 2. IP路由原理 3. windows双网卡上网解决方案 3.1. 基础配置解决方案 3.2. 高阶配置解决方案 1. 背景 在windwos上使用多网卡在工作和生活中是一个常见的操作&#xff0c;比如为了获取内部消息将有线连接到内部局域网中&#xff0c;为而了访问外网又将电脑的…

华为云GaussDB部署指南:主备架构的常见问题与解决方案

文章目录 华为云GaussDB部署指南&#xff1a;主备架构的常见问题与解决方案背景介绍部署步骤1.修改主机名2.软件安装检查3.禁用交换内存4.创建数据目录并挂载5.配置NTP时钟同步6.添加资源限制参数7.修改网卡的MTU8.上传安装工具包9.编辑集群配置文件10.修改集群安装模板11.安装…

木舟0基础学习Java的第二十天(线程,实现,匿名有名,休眠,守护,加入,设计,计时器,通信)

多线程 并发执行的技术 并发和并行 并发&#xff1a;同一时间 有多个指令 在单个CPU上 交替执行 并行&#xff1a;同一时间 有多个指令 在多个CPU上 执行 进程和线程 进程&#xff1a;独立运行 任何进程 都可以同其他进程一起 并发执行 线程&#xff1a;是进程中的单个顺…

【.NET全栈】ASP.NET开发Web应用——站点导航技术

文章目录 前言一、站点地图1、定义站点地图文件2、使用SiteMapPath控件3、SiteMap类4、URL地址映射 二、TreeView控件1、使用TreeView控件2、以编程的方式添加节点3、使用TreeView控件导航4、绑定到XML文件5、按需加载节点6、带复选框的TreeView控件 三、Menu控件1、使用Menu控…

字节抖音电商 后端开发岗位 一面

笔者整理答案&#xff0c;以供参考 自我介绍 项目&#xff08;20分钟&#xff09; RocketMQ延时消息的底层实现 回答&#xff1a; 延时消息的实现主要依赖于RocketMQ中的定时任务机制。消息被发送到Broker时&#xff0c;会先存储在一个特定的延时消息队列中。Broker会定时扫…

再议扩散模型

目录 一、基础知识 1、数学期望 2、概率表示 3、KL散度 二、扩散过程 三、理想的去噪过程 四、真实的去噪过程 五、噪声生成 导言 笔者早些时候曾粗略看过扩散模型的流程&#xff0c;但对于底层算法&#xff08;尤其是概率论方面&#xff09;&#xff0c;理解不够透彻…

pytorch学习(五)tensorboard使用

1. 创建环境 首先创建一个环境: conda create -n pytorch conda activate pytorch 然后安装tensorboard pip install tensorboard 安装opencv pip install opencv-python 2. 简单的案例 标量和图像的显示&#xff1a; 2.1标量实现的方法是add_scalar,第一个参数是给显…

探索Puppeteer的强大功能:抓取隐藏内容

背景/引言 在现代网页设计中&#xff0c;动态内容和隐藏元素的使用越来越普遍&#xff0c;这些内容往往只有在特定的用户交互或条件下才会显示出来。为了有效地获取这些隐藏内容&#xff0c;传统的静态爬虫技术往往力不从心。Puppeteer&#xff0c;作为一个强大的无头浏览器工…

印尼语翻译通:AI驱动的智能翻译与语言学习助手

在这个多元文化交织的世界中&#xff0c;语言是连接我们的桥梁。印尼语翻译通&#xff0c;一款专为打破语言障碍而生的智能翻译软件&#xff0c;让您与印尼语的世界轻松接轨。无论是商务出差、学术研究&#xff0c;还是探索印尼丰富的文化遗产&#xff0c;印尼语翻译通都是您的…