《机器学习数学基础》中并没有将解线性方程组作为重点,只是在第2章2.4.2节做了比较完整的概述。这是因为,如果用程序求解线性方程组,相对于高等数学教材中强调的手工求解,要简单得多了。

本文是关于线性方程组的拓展,供对此有兴趣的读者阅读。
1. 线性方程组的解位于一条直线
不失一般性,这里讨论三维空间的情况,对于多维空间,可以由此外推,毕竟三维空间便于想象和作图说明。
设矩阵 A = [ 1 2 4 1 3 5 ] \pmb{A}=\begin{bmatrix}1&2&4\\1&3&5\end{bmatrix} A=[112345] ,线性方程
[ 1 2 4 1 3 5 ] [ x 1 x 2 x 3 ] = [ 0 0 ] (1.1) \begin{bmatrix}1&2&4\\1&3&5\end{bmatrix}\begin{bmatrix}x_1\\x_2\\x_3\end{bmatrix}=\begin{bmatrix}0\\0\end{bmatrix} \tag{1.1} [112345] x1x2x3 =[00](1.1)
的解是:
[ x 1 x 2 x 3 ] = [ 0 0 0 ] , [ 2 1 − 1 ] , [ 4 2 − 2 ] , ⋯ \begin{bmatrix}x_1\\x_2\\x_3\end{bmatrix}=\begin{bmatrix}0\\0\\0\end{bmatrix},\begin{bmatrix}2\\1\\-1\end{bmatrix},\begin{bmatrix}4\\2\\-2\end{bmatrix},\cdots x1x2x3 = 000 , 21−1 , 42−2 ,⋯
可以将上述解写成:
[ x 1 x 2 x 3 ] = α [ 2 1 − 1 ] (1.2) \begin{bmatrix}x_1\\x_2\\x_3\end{bmatrix}=\alpha\begin{bmatrix}2\\1\\-1\end{bmatrix} \tag{1.2} x1x2x3 =α 21−1 (1.2)
其中 α \alpha α 为任意数。
很显然,(1.1)式是一条通过坐标系原点的直线。推而广之,可以说 A x = 0 \pmb{Ax}=\pmb{0} Ax=0 的解集是一条过原点的直线(记作: l 1 l_1 l1 )。
如果是非齐次线性方程组,例如:
[ 1 2 4 1 3 5 ] [ x 1 x 2 x 3 ] = [ 4 5 ] (1.3) \begin{bmatrix}1&2&4\\1&3&5\end{bmatrix}\begin{bmatrix}x_1\\x_2\\x_3\end{bmatrix}=\begin{bmatrix}4\\5\end{bmatrix} \tag{1.3} [112345] x1x2x3 =[45](1.3)
解为:
[ x 1 x 2 x 3 ] = [ 2 1 0 ] , [ 0 0 1 ] , [ 4 2 − 1 ] , ⋯ \begin{bmatrix}x_1\\x_2\\x_3\end{bmatrix}=\begin{bmatrix}2\\1\\0\end{bmatrix},\begin{bmatrix}0\\0\\1\end{bmatrix},\begin{bmatrix}4\\2\\-1\end{bmatrix},\cdots x1x2x3 = 210 , 001 , 42−1 ,⋯
这些点的集合是一条不过原点的直线。即 A x = b \pmb{Ax}=\pmb{b} Ax=b 的解集是一条不过原点的直线(记作: l 2 l_2 l2 )。并且,这条直线与 A x = 0 \pmb{Ax}=\pmb{0} Ax=0 的解集所在直线平行。对此结论证明如下:
设 u \pmb{u} u 和 v \pmb{v} v 是 A x = b \pmb{Ax}=\pmb{b} Ax=b 的两个解,则:
A u = b A v = b \begin{split}&\pmb{Au}=\pmb{b}\\&\pmb{Av}=\pmb{b}\end{split} Au=bAv=b
上面二式相减,得:
A ( u − v ) = 0 \pmb{A}(\pmb{u}-\pmb{v})=\pmb{0} A(u−v)=0
即 u − v \pmb{u}-\pmb{v} u−v 是 A x = 0 \pmb{Ax}=\pmb{0} Ax=0 的一个解。
u \pmb{u} u 和 v \pmb{v} v 是 A x = b \pmb{Ax}=\pmb{b} Ax=b 解集对应的直线上( l 2 l_2 l2 )的两个点,则 u − v \pmb{u}-\pmb{v} u−v 的方向必然在直线 l 2 l_2 l2 的方向上(或者在直线 l 2 l_2 l2 上,或者在于 l 2 l_2 l2 平行的直线上)。
又因为 u − v \pmb{u}-\pmb{v} u−v 也是 A x = 0 \pmb{Ax}=\pmb{0} Ax=0 的解,所以 u − v \pmb{u}-\pmb{v} u−v 在过原点的直线 l 1 l_1 l1 上。
因此, l 1 l_1 l1 平行于 l 2 l_2 l2 ,即 A x = b \pmb{Ax}=\pmb{b} Ax=b 的解集所在直线不过原点,且平行于过原点的 A x = 0 \pmb{Ax}=\pmb{0} Ax=0 的解集所在直线。
2. 克拉默法则
对《机器学习数学基础》第2章2.4.2节中克拉默法则进行证明。
克拉默法则(Cramer’s rule)利用行列式计算 A x = b \pmb{Ax}=\pmb{b} Ax=b 的解,其中 A \pmb{A} A 是 n × n n\times n n×n 方阵。
由于克拉默法则的运行效率不如高斯消元法,所以不能用于大数量方程的线性方程组,通常只用于理论推导 [ 2 ] ^{[2]} [2] ,从这个角度看,此法则除了具有理论意义之外,在计算上完全可以不用。
下面的证明来自于参考文献[2],根据需要做了适当修改。
克拉默法则
设 n n n 阶方阵 A \pmb{A} A , n n n 维向量 b \pmb{b} b ,将 A \pmb{A} A 的第 i i i 列以 b \pmb{b} b 替换,并记作 A i ( b ) \pmb{A}_i(\pmb{b}) Ai(b) ,用列向量表示为:
A i ( b ) = [ a 1 ⋯ a i − 1 b a i + 1 ⋯ a n ] \pmb{A}_i(\pmb{b})=\begin{bmatrix}\pmb{a}_1&\cdots&\pmb{a}_{i-1}&\pmb{b}&\pmb{a}_{i+1}&\cdots&\pmb{a}_n\end{bmatrix} Ai(b)=[a1⋯ai−1bai+1⋯an]
若 A \pmb{A} A 可逆,即 ∣ A ∣ ≠ 0 |\pmb{A}|\ne0 ∣A∣=0 ,则 A x = b \pmb{Ax}=\pmb{b} Ax=b 的解:
x i = ∣ A i ( b ) ∣ ∣ A ∣ , ( i = 1 , 2 , ⋯ , n ) \pmb{x_i}=\frac{|\pmb{A}_i(\pmb{b})|}{|\pmb{A}|},(i=1,2,\cdots,n) xi=∣A∣∣Ai(b)∣,(i=1,2,⋯,n)
证明
将原方程 A x = b \pmb{Ax}=\pmb{b} Ax=b 转化为等价的 A X = B \pmb{AX}=\pmb{B} AX=B ,其中 X , B \pmb{X},\pmb{B} X,B 都是 n × n n\times n n×n 矩阵,将单位矩阵以列向量的形式表示为: I = [ e 1 ⋯ e n ] \pmb{I}=\begin{bmatrix}\pmb{e}_1&\cdots&\pmb{e}_n\end{bmatrix} I=[e1⋯en] 。
以列向量 x \pmb{x} x 取代 I \pmb{I} I 的第 i i i 列,再左乘 A \pmb{A} A :
A I i ( x ) = A [ e 1 ⋯ x ⋯ e n ] \pmb{AI}_i(\pmb{x})=\pmb{A}\begin{bmatrix}\pmb{e}_1&\cdots&\pmb{x}&\cdots&\pmb{e}_n\end{bmatrix} AIi(x)=A[e1⋯x⋯en]
参考“对矩阵乘法深入理解”中以列为单元进行矩阵乘法,上式可以进一步变换:
A I i ( x ) = [ A e 1 ⋯ A x ⋯ A e n ] = [ a 1 ⋯ b ⋯ a n ] = A i ( b ) \begin{split}\pmb{AI}_i(\pmb{x})&=\begin{bmatrix}\pmb{A}\pmb{e}_1&\cdots&\pmb{A}\pmb{x}&\cdots&\pmb{A}\pmb{e}_n\end{bmatrix}\\&=\begin{bmatrix}\pmb{a}_1&\cdots&\pmb{b}&\cdots&\pmb{a}_n\end{bmatrix}\\&=\pmb{A}_i(\pmb{b})\end{split} AIi(x)=[Ae1⋯Ax⋯Aen]=[a1⋯b⋯an]=Ai(b)
上式即为 A X = B \pmb{AX}=\pmb{B} AX=B ,其中 X = I i ( x ) , B = A i ( b ) \pmb{X}=\pmb{I}_i(\pmb{x}), \pmb{B}=\pmb{A}_i(\pmb{b}) X=Ii(x),B=Ai(b)
利用矩阵乘积的行列式性质,得:
∣ A X ∣ = ∣ A ∣ ∣ X ∣ = ∣ A ∣ ∣ I i ( x ) ∣ = ∣ A i ( b ) ∣ |\pmb{AX}|=|\pmb{A}||\pmb{X}|=|\pmb{A}||\pmb{I}_i(\pmb{x})|=|\pmb{A}_i(\pmb{b})| ∣AX∣=∣A∣∣X∣=∣A∣∣Ii(x)∣=∣Ai(b)∣
以余子式展开计算行列式,得: ∣ I i ( x ) ∣ = x i |\pmb{I}_i(\pmb{x})|=x_i ∣Ii(x)∣=xi (参阅[3]) ,所以, ∣ A ∣ x i = ∣ A i ( b ) ∣ |\pmb{A}|x_i=|\pmb{A}_i(\pmb{b})| ∣A∣xi=∣Ai(b)∣ 。
若 ∣ A ∣ ≠ 0 |\pmb{A}|\ne0 ∣A∣=0 ,则:
x i = ∣ A i ( b ) ∣ ∣ A ∣ x_i=\frac{|\pmb{A}_i(\pmb{b})|}{|\pmb{A}|} xi=∣A∣∣Ai(b)∣
3. 存在性与唯一性
矩阵 A \pmb{A} A 是 m × n m\times n m×n ,对于任意 m m m 维的非零向量 b \pmb{b} b ,线性方程组 A x = b \pmb{Ax}=\pmb{b} Ax=b 解的唯一性和存在性讨论 [ 4 ] ^{[4]} [4]。
存在性
A x = b \pmb{Ax}=\pmb{b} Ax=b 有解,当且仅当 b T y = 0 \pmb{b}^T\pmb{y}=0 bTy=0 ,其中 y \pmb{y} y 为满足 A T y = 0 \pmb{A}^T\pmb{y}=\pmb0 ATy=0 的任何向量。
或曰:
若 b \pmb{b} b 正交于左零空间 N ( A T ) N(\pmb{A}^T) N(AT) ,则 A x = b \pmb{Ax}=\pmb{b} Ax=b 有解,反之亦然。
唯一性
A x = b \pmb{Ax}=\pmb{b} Ax=b 有唯一解(若解存在),当且仅当 A x = 0 \pmb{Ax}=\pmb{0} Ax=0 有唯一解 x = 0 \pmb{x}=\pmb{0} x=0 。
或曰:
若矩阵 A \pmb{A} A 零空间 N ( A ) N(\pmb{A}) N(A) 仅含零向量,则 A x = b \pmb{Ax}=\pmb{b} Ax=b 有唯一解,反之亦然。
参考文献
[1]. https://ccjou.wordpress.com/2009/03/20/axb-和-ax0-的解集合有什麼關係?/
[2]. https://ccjou.wordpress.com/2009/11/10/克拉瑪公式的證明/
[3]. 对 ∣ I i ( x ) ∣ = x i |\pmb{I}_i(\pmb{x})|=x_i ∣Ii(x)∣=xi ,以 4 × 4 4\times4 4×4 矩阵为例,当 i = 2 i=2 i=2 时:
∣ 1 x 1 0 0 1 x 2 0 0 1 x 3 0 0 1 x 4 0 0 ∣ = x 2 ∣ 1 0 0 0 1 0 0 ) 1 ∣ = x 1 ⋅ 1 = x 2 \begin{vmatrix}1&x_1&0&0\\1&x_2&0&0\\1&x_3&0&0\\1&x_4&0&0\end{vmatrix}=x_2\begin{vmatrix}1&0&0\\0&1&0\\0&)&1\end{vmatrix}=x_1\cdot1=x_2 1111x1x2x3x400000000 =x2 10001)001 =x1⋅1=x2
[4]. https://ccjou.wordpress.com/2011/06/07/線性方程解的存在性與唯一性/