实际问题中常出现 A x = b Ax=b Ax=b不相容(无解)的情况,这时候就希望找到近似解 x x x,使得 A x Ax Ax尽量接近 b b b。
定义:如果 m × n m\times n m×n的矩阵 A A A和向量 b b b属于 R m R^m Rm,则 A x = b Ax=b Ax=b的最小二乘解(Least Squares Solutions)是 R n R^n Rn中的 x ^ \hat{x} x^,使得 ∣ ∣ b − A x ^ ∣ ∣ ≤ ∣ ∣ b − A x ∣ ∣ ||b-A\hat{x}||\le ||b-Ax|| ∣∣b−Ax^∣∣≤∣∣b−Ax∣∣对所有的 x ∈ R n x\in R^n x∈Rn都成立。
最小二乘解的最终要的特征是,无论怎么选取 x x x,向量 A x Ax Ax必然属于列空间 C o l A Col\space A Col A,所以需要寻找 x x x使得 A x Ax Ax是 C o l A Col\space A Col A中最接近 b b b的点。
定理:方程 A x = b Ax=b Ax=b的最小二乘解集和法方程 A T A x = A T b A^TAx=A^Tb ATAx=ATb的非空解集一致。
注意,这里 A T A x = A T b A^TAx=A^Tb ATAx=ATb称为 A x = b Ax=b Ax=b的法方程(normal equations),此法方程的解给出所有 A x = b Ax=b Ax=b的最小二乘解,在统计学中常记为 X T X β = x T y X^TX\beta=x^Ty XTXβ=xTy。
例1:求不相容方程组 A x = b Ax=b Ax=b的最小二乘解,其中 A = [ 4 0 0 2 1 1 ] A=\begin{bmatrix}4&0\\0&2\\1&1\end{bmatrix} A=⎣⎡401021⎦⎤, b = [ 2 0 11 ] b=\begin{bmatrix}2\\0\\11\end{bmatrix} b=⎣⎡2011⎦⎤
解:
由法方程得:
A T A x = A T b A^TAx=A^Tb ATAx=ATb
A T A = [ 4 0 1 0 2 1 ] [ 4 0 0 2 1 1 ] = [ 17 1 1 5 ] A^TA=\begin{bmatrix}4&0&1\\0&2&1\end{bmatrix}\begin{bmatrix}4&0\\0&2\\1&1\end{bmatrix}=\begin{bmatrix}17&1\\1&5\end{bmatrix} ATA=[400211]⎣⎡401021⎦⎤=[17115]
A T b = [ 4 0 1 0 2 1 ] [ 2 0 11 ] = [ 19 11 ] A^Tb=\begin{bmatrix}4&0&1\\0&2&1\end{bmatrix}\begin{bmatrix}2\\0\\11\end{bmatrix}=\begin{bmatrix}19\\11\end{bmatrix} ATb=[400211]⎣⎡2011⎦⎤=[1911]
则 A T A x = A T b A^TAx=A^Tb ATAx=ATb可以变为:
[ 17 1 1 5 ] [ x 1 x 2 ] = [ 19 11 ] \begin{bmatrix}17&1\\1&5\end{bmatrix}\begin{bmatrix}x_1\\x_2\end{bmatrix}=\begin{bmatrix}19\\11\end{bmatrix} [17115][x1x2]=[1911]
由于 A T A A^TA ATA的秩为2,可逆,所以可求得 ( A T A ) − 1 = 1 84 [ 5 − 1 − 1 17 ] (A^TA)^{-1}=\frac{1}{84}\begin{bmatrix}5&-1\\-1&17\end{bmatrix} (ATA)−1=841[5−1−117]
则 A T A x = A T b A^TAx=A^Tb ATAx=ATb可以解得: x = x ^ = ( A T A ) − 1 A T b = 1 84 [ 5 − 1 − 1 17 ] [ 19 11 ] = [ 1 2 ] x=\hat{x}=(A^TA)^{-1}A^Tb=\frac{1}{84}\begin{bmatrix}5&-1\\-1&17\end{bmatrix}\begin{bmatrix}19\\11\end{bmatrix}=\begin{bmatrix}1\\2\end{bmatrix} x=x^=(ATA)−1ATb=841[5−1−117][1911]=[12]
例2:求方程组 A x = b Ax=b Ax=b的最小二乘解,其中:
A = [ 1 1 0 0 1 1 0 0 1 0 1 0 1 0 1 0 1 0 0 1 1 0 0 1 ] A=\begin{bmatrix}1&1&0&0\\1&1&0&0\\1&0&1&0\\1&0&1&0\\1&0&0&1\\1&0&0&1\end{bmatrix} A=⎣⎢⎢⎢⎢⎢⎢⎡111111110000001100000011⎦⎥⎥⎥⎥⎥⎥⎤, b = [ − 3 − 1 0 2 5 1 ] b=\begin{bmatrix}-3\\-1\\0\\2\\5\\1\end{bmatrix} b=⎣⎢⎢⎢⎢⎢⎢⎡−3−10251⎦⎥⎥⎥⎥⎥⎥⎤
解:
A T A = [ 6 2 2 2 2 2 0 0 2 0 2 0 2 0 0 2 ] A^TA=\begin{bmatrix}6&2&2&2\\2&2&0&0\\2&0&2&0\\2&0&0&2\end{bmatrix} ATA=⎣⎢⎢⎡6222220020202002⎦⎥⎥⎤
MATLAB求 A A A的秩为3,所以 A A A不可逆。
A T b = [ 4 − 4 2 6 ] A^Tb=\begin{bmatrix}4\\-4\\2\\6\end{bmatrix} ATb=⎣⎢⎢⎡4−426⎦⎥⎥⎤
由于无法求出 ( A T A ) − 1 (A^TA)^{-1} (ATA)−1,所以可以通过增广矩阵化简的方法求 ( A T A ) x = ( A T b ) (A^TA)x=(A^Tb) (ATA)x=(ATb)的通解:
[ 6 2 2 2 4 2 2 0 0 − 4 2 0 2 0 2 2 0 0 2 6 ] → [ 1 0 0 1 3 0 1 0 − 1 − 5 0 0 1 − 1 − 2 0 0 0 0 0 ] \begin{bmatrix}6&2&2&2&4\\2&2&0&0&-4\\2&0&2&0&2\\2&0&0&2&6\end{bmatrix}\rightarrow \begin{bmatrix}1&0&0&1&3\\0&1&0&-1&-5\\0&0&1&-1&-2\\0&0&0&0&0\end{bmatrix} ⎣⎢⎢⎡62222200202020024−426⎦⎥⎥⎤→⎣⎢⎢⎡1000010000101−1−103−5−20⎦⎥⎥⎤
通解也是 A x = b Ax=b Ax=b的最小二乘解为:
x = [ x 1 x 2 x 3 x 4 ] = [ 3 − 5 − 2 0 ] + x 4 [ − 1 1 1 1 ] x=\begin{bmatrix}x_1\\x_2\\x_3\\x_4\end{bmatrix}=\begin{bmatrix}3\\-5\\-2\\0\end{bmatrix}+x_4\begin{bmatrix}-1\\1\\1\\1\end{bmatrix} x=⎣⎢⎢⎡x1x2x3x4⎦⎥⎥⎤=⎣⎢⎢⎡3−5−20⎦⎥⎥⎤+x4⎣⎢⎢⎡−1111⎦⎥⎥⎤
定理:如果 m × n m\times n m×n的矩阵 A A A的各列线性无关, A = Q R A=QR A=QR是矩阵 A A A的QR分解(其中 Q Q Q为一个 m × n m\times n m×n的矩阵,其各列形成Col A的一个标准正交基, R R R是一个 n × n n\times n n×n的上三角可逆矩阵,且在对角线上的元素为正数),那么对每一个属于 R m R^m Rm的 b b b,方程 A x = b Ax=b Ax=b有唯一的最小二乘解 x ^ = R − 1 Q T b \hat{x}=R^{-1}Q^Tb x^=R−1QTb。
又因为上面的 R R R是一个上三角矩阵,所以 x ^ = R − 1 Q T b \hat{x}=R^{-1}Q^Tb x^=R−1QTb可变形为
R x ^ = Q T b R\hat{x}=Q^Tb Rx^=QTb,解这个形式的方程计算量更小。
例:求方程组 A x = b Ax=b Ax=b的最小二乘解,其中:
A = [ 1 3 5 1 1 0 1 1 2 1 3 3 ] A=\begin{bmatrix}1&3&5\\1&1&0\\1&1&2\\1&3&3\end{bmatrix} A=⎣⎢⎢⎡111131135023⎦⎥⎥⎤, b = [ 3 5 7 − 3 ] b=\begin{bmatrix}3\\5\\7\\-3\end{bmatrix} b=⎣⎢⎢⎡357−3⎦⎥⎥⎤
使用MATLAB求QR分解求得:
A =
1 3 5
1 1 0
1 1 2
1 3 3
>> [Q R]=qr(A)
Q =
-1/2 1/2 -1/2 -1/2
-1/2 -1/2 1/2 -1/2
-1/2 -1/2 -1/2 1/2
-1/2 1/2 1/2 1/2
R =
-2 -4 -5
0 2 3
0 0 -2
0 0 0
即 A = [ − 1 2 1 2 − 1 2 − 1 2 − 1 2 − 1 2 1 2 − 1 2 − 1 2 − 1 2 − 1 2 1 2 − 1 2 1 2 1 2 1 2 ] [ − 2 − 4 − 5 0 2 3 0 0 − 2 0 0 0 ] = [ 1 3 5 1 1 0 1 1 2 1 3 3 ] A=\begin{bmatrix}-\frac{1}{2}&\frac{1}{2}&-\frac{1}{2}&-\frac{1}{2}\\-\frac{1}{2}&-\frac{1}{2}&\frac{1}{2}&-\frac{1}{2}\\-\frac{1}{2}&-\frac{1}{2}&-\frac{1}{2}&\frac{1}{2}\\-\frac{1}{2}&\frac{1}{2}&\frac{1}{2}&\frac{1}{2}\end{bmatrix}\begin{bmatrix}-2&-4&-5\\0&2&3\\0&0&-2\\0&0&0\end{bmatrix}=\begin{bmatrix}1&3&5\\1&1&0\\1&1&2\\1&3&3\end{bmatrix} A=⎣⎢⎢⎡−21−21−21−2121−21−2121−2121−2121−21−212121⎦⎥⎥⎤⎣⎢⎢⎡−2000−4200−53−20⎦⎥⎥⎤=⎣⎢⎢⎡111131135023⎦⎥⎥⎤
经验算,上述QR分解(由于QR分解不是唯一的,上述分解可能和手算不一致)是正确的。
>> QT = Q.'
QT =
-1/2 -1/2 -1/2 -1/2
1/2 -1/2 -1/2 1/2
-1/2 1/2 -1/2 1/2
-1/2 -1/2 1/2 1/2
b =
3
5
7
-3
>> QT*b
ans =
-6
-6
-4
-2
可见如果用MATLAB的QR分解得到的矩阵,就会有
R x = Q T b Rx=Q^Tb Rx=QTb
[ − 2 − 4 − 5 0 2 3 0 0 − 2 0 0 0 ] [ x 1 x 2 x 3 ] = [ − 6 − 6 − 4 − 2 ] \begin{bmatrix}-2&-4&-5\\0&2&3\\0&0&-2\\0&0&0\end{bmatrix}\begin{bmatrix}x_1\\x_2\\x_3\end{bmatrix}=\begin{bmatrix}-6\\-6\\-4\\-2\end{bmatrix} ⎣⎢⎢⎡−2000−4200−53−20⎦⎥⎥⎤⎣⎡x1x2x3⎦⎤=⎣⎢⎢⎡−6−6−4−2⎦⎥⎥⎤
增广矩阵:
[ − 2 − 4 − 5 − 6 0 2 3 − 6 0 0 − 2 − 4 ] → [ 1 0 0 10 0 1 0 − 6 0 0 1 2 ] \begin{bmatrix}-2&-4&-5&-6\\0&2&3&-6\\0&0&-2&-4\end{bmatrix}\rightarrow \begin{bmatrix}1&0&0&10\\0&1&0&-6\\0&0&1&2\end{bmatrix} ⎣⎡−200−420−53−2−6−6−4⎦⎤→⎣⎡10001000110−62⎦⎤
解得 R x = Q T b Rx=Q^Tb Rx=QTb的最小二乘解 x ^ \hat{x} x^为:
x ^ = [ 10 − 6 2 ] \hat{x}=\begin{bmatrix}10\\-6\\2\end{bmatrix} x^=⎣⎡10−62⎦⎤