3 矩阵的秩
矩阵的秩(rank)
对于一个一般的的矩阵,它也可以看作个元方程的系数,因此也可以进行高斯消元的操作。但是,消元之后我们不一定能得到一个“完美”的上三角:假设矩阵不是方阵,那么消元后我们无法得到一个上三角,只能得到一个“上梯形”;即便矩阵是方阵,假设矩阵里有一模一样的两行,那么高斯消元后会得到一个全0行,把全零行换到最下方,也会使得上三角变为上梯形。在这些情况下,显然方程组不再有唯一解了,可能有无穷多解或无解。关键的问题是,如何判断一个线性方程组是有唯一解还是有无穷多解还是无解呢?到目前为止,似乎除了实际实施一遍高斯消元以外并没有更好的办法。我们能否从高斯消元的过程中提取出某些矩阵本身的属性,用这一属性来判断方程组的解的特性呢?
在一般情形的高斯消元中,我们把高斯消元结束后的矩阵称为“行阶梯形矩阵”(而不再是上三角矩阵)。我们定义此时每行最左边的非零元素为这一行的pivot。pivot并不一定整齐地排列在对角线上,但从上往下列坐标一定严格向右递增,形成一个倒过来的“阶梯”的形状。同样地,Gauss-Jordan消元也不一定能得到一个单位矩阵,而只能得到“简化行阶梯形矩阵”——它也是一个“阶梯”的形状,同时满足pivot所在的列除了pivot处为1以外其他都是0。我们将会证明,无论采取怎样的消元顺序,一个矩阵的pivot总数是唯一的(该证明留到本章的最后)。于是我们可以定义一个矩阵在高斯消元后的pivot个数为矩阵的一个属性,称为矩阵的秩,记作。显然,对于的矩阵,有唯一解当且仅当。
对于一般的矩阵,我们把的行空间(行向量张成的空间)的维数称为的行秩(row rank),把的列空间的维数称为列秩(column rank)。从定义上看,行秩并不一定等于列秩,行秩与列秩也并不一定等于矩阵的秩。但下面我们就要证明,对于任意矩阵都成立行秩等于列秩等于矩阵的秩:
我们观察到,矩阵的简化行阶梯形矩阵必定与有相同的秩。即恒成立。这是显然的,因为的秩是定义在行阶梯形上的,而从到的过程不会创造也不会消灭pivot。我们又观察到,的秩必定等于的行秩,也等于的列秩。因为的pivot所在的那些列都是单位向量,线性独立。底下的行都是全0行不必理会,因此这些向量一定张成了整个列空间,因此这些向量就是列空间的一组基,这组基的向量个数等于pivot的个数,这就是说的秩等于的列秩。又因为,的底下行都是全0行,不会对张成行空间有贡献,因此这个pivot所在行一定能张成整个行空间。而pivot所在的列除了pivot以外全是0,因此想让pivot所在的这些行线性组合出一个全0行,只能让每一行都乘上0来得到,这正是线性独立的定义,因此这些行是线性独立的,也就是说这些pivot行是行空间的一组基。这组基中向量的个数等于pivot的个数,所以说的秩等于的行秩。所以:“的秩等于的行秩,也等于的列秩。”从这个结论出发,如果我们能够说明高斯消元的每一步都不会改变一个矩阵的行秩和列秩,我们就可以得到对于任意矩阵都有“行秩等于列秩”的结论。
由于高斯消元进行的是行变换,我们可以证明变换前后行空间是不变的,因此也必然有行秩不变——只需要说明变换前的任意一个行向量的线性组合一定可以被变换后的某个线性组合表示,对称地变换后的也一定可以被变换前的表示。
列秩的情形要复杂一些。行变换可能改变了列空间,但我们会看到列空间的维数是不变的:对变换前的矩阵,我们考虑任意选出一个列向量的子列做线性组合,并在做线性组合时给每个系数一个特定的值。对变换后的矩阵也相应地做这样的一个线性组合。我们发现,前一个线性组合等于零向量“当且仅当”后一个线性组合等于零向量——因为对于这样的行操作,这个“等于零”可以互相从一边推到另一边。因此,前一个向量子列线性独立当且仅当后一个向量子列线性独立。我们能由此进一步说明,前后能选出的“最长”的线性独立子列的“长度”也是相等的。也就说明,前后的列向量极大线性无关组大小相同,也即前后列空间维数相同,因此列秩相等。
综上,我们得到:的秩 = 的行秩 = 的列秩 = 的秩 = 的行秩 = 的列秩。
零空间(Nullspace)
方程组的所有解构成的集合称为该方程的解集。我们注意到,任取解集中的两个,有,,因此也有,因此解集构成了的一个子空间,因此是一个向量空间。我们把这个向量空间称为的零空间(Nullspace),记为。
从简化行阶梯形矩阵的角度看,矩阵的每一列对应方程的某个变量。所有没有pivot的列对应的变量称为自由元;有pivot的列对应的变量称为主元。当我们给自由元任意赋一组值时,可以依据它们的值来求出所有主元应当取的值。现在设矩阵的秩为,也即有个pivot。所以有个自由元,个主元。令这个自由元以 的方式依次取值,我们就可以得到个满足的向量。显然这个向量是线性独立的,并且他们的线性组合恰好能使得所有自由元取得任意值,因此恰好张成了整个零空间。由此我们证明了,也即零空间的维数等于矩阵的列数减去矩阵的秩。
线性方程组的通解
有解当且仅当。我们已经知道的解空间是一个子空间,称为零空间。我们想知道对于任意的,的解空间是否也是一个子空间。如果是,那么对于,,必须有。这意味着,由消去律得。也就是说只有的时候解空间才有可能是子空间,对于非零的,解空间一定不是子空间。
虽然的解空间不是子空间,但它和子空间非常接近,我们可以把它看作子空间的一个“平移”。假设我们能够找到的一个特解,那么有。而对于零空间里的任意向量,都有,相加得。也就是说零空间里的任意一个向量加上这个特解一定是一个解。除此之外还有没有可能有别的解呢?假设存在一个解不能被写作的形式,即,那么有,合并得。而,因此,因此,于是推出,矛盾。综上,的通解即为“某个特解+零空间中任意一个向量”。
怎么找到一组特解呢?我们对增广矩阵做Gauss-Jordan,将变成简化行阶梯形矩阵。此时如果全零行对应了非零的数,那么原方程组一定无解,因为行变换是不改变解空间的;如果全零行对应零,那么没有任何作用;接着,我们让所有自由元都取0,代入就可以解得每行主元的取值——这就是一组特解了。
矩阵的秩的唯一性
事实上,一个矩阵高斯消元得到的“上三角”矩阵可能不止一种的。但如果我们加上一些规定,比如在行交换的时候只找最上面的非零行等等,那么高斯消元的结果可以是唯一的。换句话说,高斯消元的过程可以写成一个确定的程序,而一个确定的程序对于确定的输入只会输出唯一的结果。
但这样的“确定性”只是人为的规定,我们想要验证,高斯消元产生的结果是否真的是唯一的。在高斯消元将任意矩阵变为行阶梯形的过程中,是否有可能由于消元顺序的不同而导致不同的pivot数量。这是需要证明的。
高斯消元的每一步——初等行变换——是不会改变方程组的解空间的,因此也不会改变矩阵的零空间。零空间如果不变,那么零空间的维数是恒定的,那么根据,一定也不变。由此我们证明了pivot数量(矩阵的秩)是唯一的。
行阶梯形一定是不唯一的,我们可以随意的给每行乘以系数。而我们发现,简化行阶梯形一定是唯一的。对此,我们先来证明,行阶梯形的主元列的列坐标一定是唯一的。如果存在两个主元列坐标不同的阶梯形,那么我们一定能够找到一个最大的,使得,第列“是否为主元的属性”都相同(即如果和的第列要么都是主元列要么都是自由元列),而第列的“是否为主元的属性”不同。不妨设的第列是主元列,而的第列是自由元列。对于,我们可以通过它的自由元来构造一组的解,其中,其余自由元都取0。由于初等行变换是不改变解空间的,因此我们知道这组解一定也是的解。而我们知道对于,正因为右边的中对应的数为0,而主元列在这一行上也全是0,因此由所有列坐标大于的自由元决定,而根据我们的构造,这些自由元的取值都为0,于是得到,这就产生了矛盾。所以,任何矩阵的阶梯形的主元列必定是完全相同的。
由于阶梯形的主元列是相同的,因此简化行阶梯形的所有的主元列上的数一定是唯一的了。现在要证简化行阶梯形的自由元列上的系数也是唯一的。如果存在两个简化行阶梯形,其中,其中是自由元列的列坐标,那么必定有一个不为0,因此第行存在某个pivot,记为。
对于,有。
对于,有。
相减得
对于取遍所有值,这个等式是恒成立的。因此必须有,这与矛盾。由此证得简化行阶梯形是唯一的。
The Big Picture
现在我们终于完整地认识到:秩是一个矩阵的一个唯一的属性,的秩 = 的秩是对任意矩阵成立的。对于任意的矩阵,都有的秩 = 的行秩 = 的列秩。
我们观察以下四个空间的维数:。我们发现,。的列秩与的零空间维数互补,它们的和始终等于的列数;考虑,得到的列秩(也就是的行秩)与的零空间维数互补,它们的和始终等于的行数。这是线性代数中最基本的一个定理。
若干矩阵乘积的秩一定分别小于等于每个矩阵的秩。
观察列空间,设,,。得到,因此。所以,得到。
将用代换,用代换,得到。由于行秩等于列秩,所以。