矩阵与线性方程组

高斯消元

当我们用线性方程组来理解矩阵时,我们有矩阵的高斯消元。本质上,高斯消元只涉及对矩阵的三种“操作”或者“变换”:1)给某一整行乘上非零常数\(c\);2)将某一行加到另一行上;3)交换两行。这三种操作统称“初等行变换”。高斯消元的每一步操作都是这三种操作中的一种或者这三种的某一些的反复组合。

高斯消元能成功的关键在于,以上三种操作中的任何一种都是不会改变方程组的解的情况的——对于每一步操作,我们可以对比操作前与操作后的方程组\(F\)\(F'\),可以发现每一个\(F\)的解都是\(F'\)的解,而每一个\(F'\)的解都是\(F\)的解。

如果方程组有解,我们通过这三种操作最终能把矩阵消成一个“上三角”的形状。此时最底下的方程是一个一元一次方程,因此我们可以解出对应变元。然后从下往上回代,每一个方程都会变成一元一次方程。求解这样的“上三角”方程组是容易的,而我们又知道,这个“上三角”方程组的解恰好就是原方程组的解。所以我们成功解出了原来的方程组。

Gauss-Jordan

我们首先来研究最特殊也最普遍的一个情形——矩阵\(A\)\(n \times n\)的方阵,并且高斯消元结束后主对角线上的数都不为零。

我们称上三角矩阵中每一行最左边的非零系数为“pivot”(中文翻译为“主元”)。注意pivot是定义在高斯消元结束后的上三角矩阵里的。在我们的当前的情形中,\(A\)\(n\)个pivot。此时我们不直接进行回代,而是继续做一些“初等行变换”,看看能不能把\(A\)化成更简洁的形式。我们从最后一行往上,用pivot把所有非主对角线上的系数全部变成0,这是矩阵已经变成对角矩阵了。再通过每行乘以系数,还可以把主对角线上的所有系数都变成1。我们发现它现在已经是一个单位矩阵了!这个过程称为Gauss-Jordan消元,对于有\(n\)个pivot的\(A\)一定能通过初等行变换得到一个单位矩阵。

初等行变换可以理解为矩阵左乘了一个“用来完成变换”的矩阵\(E\),称为初等矩阵(\(E\)也是\(n \times n\)的)。因此实际上我们做的就是把一系列初等矩阵乘在了\(A\)左边从而将\(A\)变成了\(I\)。根据矩阵乘法的结合律,把所有这些乘在\(A\)上的矩阵整体看作一个\(C\),其效果就是\(A\)左乘上一个矩阵得到了单位矩阵。于是我们自然得到了这样一个真命题:“如果\(A_{n \times n}\)\(n\)个pivot,那么存在一个矩阵\(C_{n \times n}\)使得\(CA=I\)”。

逆矩阵

那么我们对于线性方程组\(A\vec{x}=\vec{b}\),其中\(\vec{x},\vec{b}\)是任意的\(n\)维向量,我们可以两边同时左乘这个\(C\),得到\(CA\vec{x}=C\vec{b}\),即\(\vec{x}=C\vec{b}\)。由于初等行变换不改变解,因此这说明方程组就有唯一的一个解\(\vec{x}=C\vec{b}\)

这个方程组中的\(b\)可以是任意给定的,那么当我们依次令\(\vec{b}\)等于\(\vec{e_1}=(1,0,\cdots,0),\vec{e_2}=(0,1,\cdots,0),\cdots,\)\(\vec{e_n}=(0,0,\cdots,1)\),也可以相应地得到\(n\)\(\vec{x_i}\)满足\(A\vec{x_i}=\vec{e_i}\),令\(B=\begin{bmatrix}\vec{x_1} & \cdots &\vec{x_n}\end{bmatrix}\),恰好就有\(AB=I\)。于是我们又得到了这样一个真命题:“如果\(A_{n \times n}\)\(n\)个pivot,那么存在一个矩阵\(B_{n \times n}\)使得\(AB=I\)”。

由于\((CA)B=C(AB)\)恒成立,而\(CA=AB=I\),我们惊奇地发现\(B=C\)。也就是说,存在一个矩阵\(B\)使得\(AB=BA=I\)。有没有可能有第二个矩阵满足这样的性质呢?假如有\(D\neq B\)使得\(AD=DA=I\),那么\(B(AD)=(BA)D\),就会得出\(B=D\),矛盾。也就是说,对于有\(n\)个pivot的\(A_{n \times n}\),满足\(AB=BA=I\)的矩阵\(B\)是独一无二的。我们定义对于方阵\(A\),满足\(AB=I,BA=I\)的矩阵\(B\)\(A\)的逆矩阵,记为\(A^{-1}\)。逆矩阵具有唯一性。

逆矩阵有这样的运算性质:\((AB)^{-1}=B^{-1}A^{-1}\)。因为它满足\((B^{-1}A^{-1})(AB)\)\(=B^{-1}(A^{-1}A)B=B^{-1}B=I,(AB)(B^{-1}A^{-1})=A(BB^{-1})A^{-1}=AA^{-1}=I\),而逆矩阵又是唯一的。归纳地,我们发现一连串矩阵相乘的逆等于这些矩阵各自的逆倒着相乘。

我们碰到过许多逆矩阵。高斯消元过程中用来操作的“初等矩阵”都是可逆的,从代数角度它有\(n\)个pivot。从效果上来看:将操作的效果“倒放”的矩阵一定是存在且唯一的。

充要条件

我们已经看到,对于一些矩阵是存在逆矩阵的,并且逆矩阵只要存在就必定是唯一的。我们把这称为这个矩阵“可逆”。并不是每个矩阵都是“可逆”的。(我们只把逆矩阵定义在方阵的情形下,设想如果矩阵不是方阵,那么\(AB\)\(BA\)本身大小就不同,一定不成立\(AB=BA\)

以上讨论告诉我们,如果\(A\)\(n\)个pivot,那么\(A\)可逆。对称地,我们现在想知道如果\(A\)可逆,\(A\)是否必须得有\(n\)个pivot。如果\(A\)没有\(n\)个pivot,那么上三角矩阵中一定会出现全0行。让这个带有全0行的矩阵\(A\)乘上任意一个\(n\times n\)的矩阵\(B\),都会让\(AB\)中也会出现一个全0行,因此对于任意的\(B\)都不可能满足\(AB=I\),同样的对于任意的\(C\)都不可能满足\(CA=I\),所以\(A\)不可逆。所以有结论“如果\(A\)可逆,\(A\)就必须有\(n\)个pivot。”

我们实际上证明了:“\(A\)可逆”与“\(A\)\(n\)个pivot”是等价的。“A有\(n\)个pivot”出发,可以推出“存在一个矩阵\(C\)使得\(CA=I\)”和“存在一个矩阵\(B\)使得\(AB=I\)”。而刚才我们证明了“\(A\)没有\(n\)个pivot”可以推出“不存在\(B\)使得\(AB=I\)”和“不存在\(C\)使得\(CA=I\)”。取逆否命题,就发现“存在一个矩阵\(B\)使得\(AB=I\)”和“存在一个矩阵\(C\)使得\(CA=I\)”可以推出“A有\(n\)个pivot”。也就是说,以下四个命题等价:

  1. \(n \times n\)的矩阵\(A\)\(n\)个pivot。
  2. \(A\)可逆。
  3. 存在\(n \times n\)的矩阵\(B\)满足\(AB=I\)
  4. 存在\(n \times n\)的矩阵\(C\)满足\(CA=I\)

Gauss-Jordan求逆

怎样求出\(A\)的逆矩阵呢?我们知道,将\(A\)消作\(I\)的过程乘上的所有初等矩阵的乘积就是\(A\)的逆矩阵,因此我们只要把这些矩阵乘起来就可以得到逆矩阵了。而在求解过程中为了简便,我们可以采取这样一种更简单的方法:考虑一个分块矩阵\([A \ \ I]\),给它依次左乘上所有的初等矩阵,最后一定能得到\([I \ \ A^{-1}]\),而“乘初等矩阵”等价于“进行行变换操作”,那么我们只要在给\(A\)进行高斯-约旦消元的过程中,“顺便”把行操作“作用”在\(I\)上,就能得到\(A^{-1}\)

矩阵的秩

对于一般的一个\(m \times n\)的矩阵\(A\),我们也可以进行高斯消元的操作。但是,消元之后我们不一定能得到一个“完美”的上三角:假设矩阵不是方阵,那么这个三角肯定不太完整;假设矩阵里有一模一样的两行,那么高斯消元后会得到一个全0行,这样的三角也是不完整的——如果全0行对应的右侧是0,那么方程会有无穷多组解;如果全0行对应的右侧不是0,那么方程组无解。然而,当矩阵满足什么条件时会消出全0行,这是难以直接通过高斯消元的过程看清楚的。

一般地,高斯消元结束后可能并不能得到一个上三角矩阵,而只能得到“行阶梯形矩阵”。我们还是定义此时每行最左边的非零元素为pivot,并且获得一个pivot的个数——pivot并不一定整齐地排列在对角线上,但从上往下列坐标一定严格向右递增,形成一个倒过来的“阶梯”的形状。同样地,Gauss-Jordan消元也不一定能得到一个单位矩阵,而只能得到“简化行阶梯形矩阵”——它也是一个“阶梯”的形状,同时满足pivot所在的列除了pivot处为1以外其他都是0。

我们后面将会看到,无论采取怎样的消元方式,一个矩阵的pivot数量都是唯一的。现在,我们暂且假且\(A_{m \times n}\)\(r\)个pivot,那么称矩阵\(A\)的秩为\(r\),记作\(\text{rank}(A)=r\)。意思是这个矩阵通过“某一种”消元方式得到了\(r\)个pivot。我们知道,行秩和列秩分别是矩阵的列空间和行空间的维数,它们是通过线性空间定义的。而现在,矩阵的秩是通过高斯消元来定义的。我们下面要说明,矩阵的行秩、列秩和秩全都相等。

我们观察到,矩阵\(A\)的简化行阶梯形矩阵\(R\)必定与\(A\)有相同的秩。即\(\text{rank}(A)=\text{rank}(R)\)恒成立。这是显然的,因为\(A\)的秩是定义在行阶梯形上的,而从\(A\)\(R\)的过程不会创造也不会消灭pivot。

我们又观察到,\(R\)的秩必定等于\(R\)的行秩,也等于\(R\)的列秩。因为\(R\)的pivot所在的那些列都是单位向量,线性独立。底下的\(m-r\)行都是全0行不必理会,因此这些向量一定张成了整个列空间,因此这些向量就是列空间的一组基,这组基的向量个数等于pivot的个数,这就是说\(R\)的秩等于\(R\)的列秩。又因为,\(R\)的底下\(m-r\)行都是全0行,不会对张成行空间有贡献,因此这\(r\)个pivot所在行一定能张成整个行空间。而pivot所在的列除了pivot以外全是0,因此想让pivot所在的这些行线性组合出一个全0行,只能让每一行都乘上0来得到,这正是线性独立的定义,因此这些行是线性独立的,也就是说这些pivot行是行空间的一组基。这组基中向量的个数等于pivot的个数,所以说\(R\)的秩等于\(R\)的行秩。

所以我们有:“\(A\)的秩等于\(R\)的行秩,也等于\(R\)的列秩。”从这个结论出发,如果我们能够说明高斯消元的每一步都不会改变一个矩阵的行秩和列秩,我们就可以得到对于任意矩阵\(A\)都有“行秩等于列秩”的结论。

由于高斯消元进行的是行变换,我们可以证明变换前后行空间是不变的,因此也必然有行秩不变——只需要说明变换前的任意一个行向量的线性组合一定可以被变换后的某个线性组合表示,对称地变换后的也一定可以被变换前的表示。

列秩的情形要复杂一些。行变换可能事实上改变了列空间,但我们会看到列空间的维数是不变的:对变换前的矩阵,我们考虑任意选出一个列向量的子列做线性组合,并在做线性组合时给每个系数一个特定的值。对变换后的矩阵也相应地做这样的一个线性组合。我们发现,前一个线性组合等于零向量“当且仅当”后一个线性组合等于零向量——因为对于这样的行操作,这个“等于零”可以互相从一边推到另一边。因此,前一个向量子列线性独立当且仅当后后一个向量子列线性独立。我们能由此进一步说明,前后能选出的“最长”的线性独立子列的“长度”也是相等的。也就说明,前后的列向量极大线性无关组大小相同,也即前后列空间维数相同,因此列秩相等。

综上,我们得到:\(R\)的秩 = \(R\)的行秩 = \(R\)的列秩 = \(A\)的秩 = \(A\)的行秩 = \(A\)的列秩。

零空间: \(Ax=0\)

方程组\(Ax=0\)的所有解\(x\)形成的向量空间称为\(A\)的零空间(Nullspace),记为\(N(A)\)。设\(A\)\(m \times n\)的,显然\(N(A) \subseteq\mathbb{R}^n\)。而由于\(\forall x_1,x_2 \in N(A)\),有\(Ax_1=0\),\(Ax_2=0\),因此也有\(A(c_1x_1+c_2x_2)=0\),因此\(N(A)\)一定是\(\mathbb{R}^n\)的一个子空间。

从简化行阶梯形矩阵的角度来考察,矩阵的每一列对应着方程的某个变量。对于所有没有pivot的列,给这些变量任意赋一组值,我们可以依据它们的值来求出所有pivot列的值。这些变量称为自由元——当自由元取定之后,主元也就取定了。假如存在\(r\)个pivot,那么就有\(n-r\)个自由元。对所有这\(n-r\)个自由元以\((1,0,\cdots,0),(0,1,\cdots,0)\)\(,\cdots,(0,0,\cdots,1)\)的方式来取值,我们就可以得到\(n-r\)组满足条件的向量\(x\)。这\(n-r\)个向量是线性独立的,并且他们的线性组合恰好能使得所有自由元取得任意值,因此恰好张成了整个零空间。由此我们可以发现\(\dim(N(A))=n-r\)

通解:\(Ax=b\)

\(Ax=b\)有解当且仅当\(b\in C(A)\)。我们已经知道\(Ax=0\)的解空间是一个子空间,称为“零空间”。我们想知道对于任意的\(b\)\(Ax=b\)的解空间是否也是一个子空间。如果是,那么对于\(Ax_1=b\)\(Ax_2=b\),必须有\(A(x_1+x_2)=b\)。这意味着\(Ax_1+Ax_2=b+b=b\),由消去律得\(b=0\)。也就是说只有\(b=0\)的时候解空间才有可能是子空间,对于非零的\(b\),解空间一定不是子空间。

虽然\(Ax=b\)的解空间不是子空间,但它和子空间非常接近,我们可以把它看作子空间的一个“平移”。假设我们能够找到\(Ax=b\)的一个特解\(x_p\),那么有\(Ax_p=b\)。而对于零空间里的任意向量\(x_n\),都有\(Ax_n=0\),相加得\(A(x_p+x_n)=b\)。也就是说零空间里的任意一个向量加上这个特解一定是一个解。除此之外还有没有可能有别的解呢?假设存在一个解\(x'\)不能被写作\(x_p+x_n\)的形式,即\(x'-x_p \notin N(A)\),那么有\(A(x_p+x_n)-Ax'=b-b=0\),合并得\(A(x_p+x_n-x')=0\)。而\(Ax_n=0\),因此\(A(x_p-x')=0\),因此\(A(x'-x_p)=0\),于是推出\(x'-x_p \in N(A)\),矛盾。

综上,\(Ax=b\)的通解即为“某个特解+零空间中任意一个向量”。

怎么找到一组特解呢?我们对增广矩阵\([A \ b]\)做Gauss-Jordan,\(A\)将变成简化行阶梯形矩阵。此时如果全零行对应了非零的数,那么原方程组一定无解,因为行变换是不改变解空间的;如果全零行对应零,那么没有任何作用;接着,我们让所有自由元都取0,代入就可以解得每行主元的取值——这就是一组特解了。

唯一性

事实上,一个矩阵高斯消元得到的“上三角”矩阵可能不止一种的。但如果我们加上一些规定,比如在行交换的时候只找最上面的非零行等等,那么高斯消元的结果可以是唯一的。换句话说,高斯消元的过程可以写成一个确定的程序,而一个确定的程序对于确定的输入只会输出唯一的结果。

但这样的“确定性”只是人为的规定,我们想要验证,高斯消元产生的结果是否真的是唯一的。在高斯消元将任意矩阵变为行阶梯形的过程中,是否有可能由于消元顺序的不同而导致不同的pivot数量。这是需要证明的。

高斯消元的每一步——初等行变换——是不会改变方程组的解空间的,因此也不会改变矩阵的零空间。零空间如果不变,那么零空间的维数是恒定的,那么根据\(\dim(N(A))=n-r\)\(r\)一定也不变。由此我们证明了pivot数量(矩阵的秩)是唯一的。

行阶梯形一定是不唯一的,我们可以随意的给每行乘以系数。而我们发现,简化行阶梯形一定是唯一的。对此,我们先来证明,行阶梯形的主元列的列坐标一定是唯一的。如果\(A_{mn}\)存在两个主元列坐标不同的阶梯形\(A_1,A_2\),那么我们一定能够找到一个最大的\(k\),使得\(\forall i > k\),第\(i\)列“是否为主元的属性”都相同(即如果\(A_1\)\(A_2\)的第\(i\)列要么都是主元列要么都是自由元列),而第\(k\)列的“是否为主元的属性”不同。不妨设\(A_1\)的第\(k\)列是主元列,而\(A_2\)的第\(k\)列是自由元列。对于\(A_2\),我们可以通过它的自由元来构造一组\(A_2x=0\)的解,其中\(x_k=1\),其余自由元都取0。由于初等行变换是不改变解空间的,因此我们知道这组解一定也是\(A_1\)的解。而我们知道对于\(A_1x=0\),正因为右边的\(b\)中对应的数为0,而主元列在这一行上也全是0,因此\(x_r\)由所有列坐标大于\(k\)的自由元决定,而根据我们的构造,这些自由元的取值都为0,于是得到\(x_r=0\),这就产生了矛盾。所以,任何矩阵的阶梯形的主元列必定是完全相同的。

由于阶梯形的主元列是相同的,因此简化行阶梯形的所有的主元列上的数一定是唯一的了。现在要证简化行阶梯形的自由元列上的系数也是唯一的。如果存在两个简化行阶梯形\(R_1,R_2\),其中\(R_1(i,j) \neq R_2(i,j)\),其中\(j\)是自由元列的列坐标,那么\(R_1(i,j),R_2(i,j)\)必定有一个不为0,因此第\(i\)行存在某个pivot,记为\(x_s\)

对于\(R_1x=b\),有\(x_s+\sum\limits_{k>s且x_k是自由元}R_1(i,k)x_k=b_i\)

对于\(R_2x=b\),有\(x_s+\sum\limits_{k>s且x_k是自由元}R_2(i,k)x_k=b_i\)

相减得\(\sum\limits_{k>s且x_k是自由元}(R_1(i,k)-R_2(i,k))x_k=0\)

对于\(x_k\)取遍所有值,这个等式是恒成立的。因此必须有\(R_1(i,k)-R_2(i,k)=0\),这与\(R_1(i,j) \neq R_2(i,j)\)矛盾。由此证得简化行阶梯形是唯一的。

The Big Picture

现在我们终于完整地认识到:秩是一个矩阵的一个唯一的属性,\(A\)的秩 = \(R\)的秩是对任意矩阵成立的。对于任意的矩阵\(A\),都有\(A\)的秩 = \(A\)的行秩 = \(A\)的列秩。

我们观察以下四个空间的维数:\(C(A),N(A),C(A^T),N(A^T)\)。我们发现,\(\dim(C(A))=r,\dim(N(A))=n-r,\dim(C(A^T))=r,\dim(N(A^T))=m-r\)\(A\)的列秩与\(A\)的零空间维数互补,它们的和始终等于\(A\)的列数;考虑\(A^T\),得到\(A^T\)的列秩(也就是\(A\)的行秩)与\(A^T\)的零空间维数互补,它们的和始终等于\(A\)的行数。这是线性代数中最基本的一个定理。

若干矩阵乘积的秩一定分别小于等于每个矩阵的秩。

\(\text{rank}(AB) \leq \min\{\text{rank}(A),\text{rank}(B)\}\)

观察列空间,设\(A=\begin{bmatrix}a_1 & a_2 & \cdots a_n\end{bmatrix}\)\(B=\begin{bmatrix}b_1 & b_2 & \cdots b_m\end{bmatrix}\)\(AB=\begin{bmatrix}c_1 & c_2 & \cdots c_m\end{bmatrix}\)。得到\(c_i=\sum\limits_{k \in [n]}b_{ik}a_k\),因此\(c_i \in C(A)\)。所以\(C(AB) \subseteq C(A)\),得到\(\text{rank}(AB) \leq \text{rank}(A)\)

\(A\)\(B^\top\)代换,\(B\)\(A^\top\)代换,得到\(\text{rank}(B^\top A^\top) \leq \text{rank}(B^\top)\)。由于行秩等于列秩,所以\(\text{rank}(AB) \leq \text{rank}(B)\)

posted @ 2022-10-20 11:44  DennyQi  阅读(271)  评论(0编辑  收藏  举报