求解Ax=0
消元法求解零空间
那么我们如何求解Ax=0呢?还是使用消元法,之前我们说使用消元法求解方程Ax=b时,我们对一种情况是无法处理的,那就是矩阵A不可逆的情况,之前对这种情况的解释是求出的解不唯一,这其实正好对应了现在我们所认识到的“空间”的概念。我们从最简单的零空间(b=0)的计算谈起。
例1:Ax=⎣⎡1232462682810⎦⎤,求Ax=0中的x构成的零空间
先将方程写出,如下
Ax=⎣⎡1232462682810⎦⎤⎣⎢⎢⎡x1x2x3x4⎦⎥⎥⎤=0
首先观察矩阵A我们发现,第三行是前两行的和,这意味着即使主元为0,我们也得继续消元下去。那么按部就班,有
⎣⎡1232462682810⎦⎤⇒⎣⎡100200222244⎦⎤⇒⎣⎡100200220240⎦⎤(阶梯形式)=U
在消元的过程中,我们发现矩阵A的主元(Pivot)数量为2(1和2),主元的个数称为矩阵的秩(Rank),因此在本题中矩阵A的秩为2。
接下来就是回代求解了,由于消元得到的U不是一个严格的上三角矩阵,对角线上的0给我们造成了解不唯一的麻烦,所以这里我们先来声明几个概念
⎣⎡100200220240⎦⎤中,列⎣⎡100⎦⎤和⎣⎡220⎦⎤被称为主列(Pivot Columns,主元所在的列),其余两列⎣⎡200⎦⎤和⎣⎡240⎦⎤被称为自由列(Free Columns),所谓自由列就是表示其对应的未知变量xn(n表示自由列是第n列)可以被任意分配值。因为回代求解时,只有主列对应的未知数的解有确定值。因此矩阵A中的主变量(主元)为x1和x3,x2和x4为自由变量。
(1)我们假设,令[x2x4]=[10],代入方程
{x1+2x2+2x3+2x4=02x3+4x4=0
解得
{x1=−2x3=0
因此当[x2x4]=[10]时,解向量为⎣⎢⎢⎡−2100⎦⎥⎥⎤,这只是零空间中的一个解,这个解表示−2倍的列1+1倍的列2=0,如果想找出更多零向量中的解,我们只需要求它的倍数,所以x=c⎣⎢⎢⎡−2100⎦⎥⎥⎤(c为任意实数),这是一条在四维空间中无限延伸的直线,但它不是整个零空间。
(2)我们再令[x2x4]=[01],代入方程
{x1+2x2+2x3+2x4=02x3+4x4=0
解得
{x1=2x3=−2
因此当[x2x4]=[01]时,解向量为⎣⎢⎢⎡20−21⎦⎥⎥⎤,因此另一条在四维空间中的直线为x=d⎣⎢⎢⎡20−21⎦⎥⎥⎤(d为任意实数)
那么还能为[x2x4]赋其他值吗?很明显其他情况都可以被[10]和[01]的线性组合所涵盖,所以这两个解向量足够代表空间的特征了,我们称这两个解向量为特解,其特殊之处在于我们给自由变量赋值为[10]和[01]。通过特解的任意倍的线性组合,可以构造出整个零空间。因此便得出了矩阵A的零空间
x=c⎣⎢⎢⎡−2100⎦⎥⎥⎤+d⎣⎢⎢⎡20−21⎦⎥⎥⎤(c和d为常数)
算法总结
对于一个m×n的矩阵A,若其秩为r,那么意味着其主变量为r个,而自由变量为n−r个。也就是说,只有r列起作用。我们需要先对矩阵A进行消元,得到r个主元,由于有n个变量x,我们再将其中的n−r个自由变量依次赋值为⎣⎢⎢⎢⎡10⋮0⎦⎥⎥⎥⎤、⎣⎢⎢⎢⎡01⋮0⎦⎥⎥⎥⎤、⎣⎢⎢⎢⎡00⋮1⎦⎥⎥⎥⎤。接着求解方程的特解,将特解的任意倍进行线性组合即可得到矩阵A的零空间。
简化阶梯形式
尽管上面的消元法看上去已经很完美了,但事实上仍有化简的余地,最后得到的U矩阵仍可以被进一步化简。我们以上文中的U=⎣⎡100200220240⎦⎤为例,继续化简的目标是令对角线上的主元为1,并且通过列交换将主元放在一起,把自由列放在一起来构成新的矩阵,操作如下
U=⎣⎡100200220240⎦⎤=⎣⎡100200020−240⎦⎤(向上消元)=⎣⎡100200010−220⎦⎤(提第二行公倍数)=⎣⎡100010200−220⎦⎤(列交换)=R
也就是说最终我们能将上三角矩阵U化简成矩阵R,矩阵R的一般形式为
R=[I0F0]
其中,I表示主列,由于r个主列的主元被化简成了1,因此这部分变成了r维单位矩阵,F表示自由列,共有n−r个自由列。有了矩阵R我们可以改写Ax的表达形式
Ax=Rx=[I0F0][x主元x自由变量]=RN=0
这里的N为零空间矩阵,即各列向量由特解组成的矩阵
N=[−FI]
需要注意的是,这里的单位矩阵和矩阵R中的有所不同,这里的I是n−r维的,是将n−r个自由变量分别赋值为0或1得到的。将上文中的示例代入到R和N,得到
R=⎣⎡100010200−220⎦⎤,N=⎣⎢⎢⎡−20102−201⎦⎥⎥⎤
由于x1和x3是主列,x2和x4是自由列,因此只需交换零空间矩阵中的第2、3行即可得到特解⎣⎢⎢⎡−2100⎦⎥⎥⎤和⎣⎢⎢⎡20−21⎦⎥⎥⎤。**因此将矩阵U化简称矩阵R可以直接求解零空间。**我们用下面一个例题来试验一下:
例 A=⎣⎢⎢⎡1222246836810⎦⎥⎥⎤,求解Ax=0中x构成的零空间。
(1)将A消元为U:$A = \left[\begin{matrix} 1 & 2 & 3 \ 2 & 4 & 6 \ 2 & 6 & 8 \ 2 & 8 & 10\end{matrix}\right] = \left[\begin{matrix} 1 & 2 & 3 \ 0 & 2 & 2 \ 0 & 0 & 0 \ 0 & 0 & 0\end{matrix}\right] = U (r = 2) $
(2)将U化简为R:U=⎣⎢⎢⎡100022003200⎦⎥⎥⎤=⎣⎢⎢⎡100001001100⎦⎥⎥⎤=R
(3)得到零空间矩阵N:N=[−FI]=⎣⎡−1−11⎦⎤
(4)得到零空间:x=c⎣⎡−1−11⎦⎤(c为任意实数)
求解Ax=b
Ax=b的可解性
对于Ax=b我们知道这个方程不一定有解,在之前的章节中说明了Ax=b是否有解取决于b是否在A的列空间中,我们再通过一个例子来说明一下
例 求方程⎣⎡1232462682810⎦⎤⎣⎢⎢⎡x1x2x3x4⎦⎥⎥⎤=⎣⎡b1b2b3⎦⎤的可解条件。
在这个方程中,观察矩阵A,发现矩阵中第三行为第一行和第二行的和。根据之前的Gauss-Jordan消元法,我们可以得到
⎣⎡100200220240b1b2−b1b3−b2−b1⎦⎤
代入方程,会发现最后一行0=b3−b2−b1,这一行方程必须成立,因此这一行就是方程的可解条件。同时,它还反映了b向量的第三个分量是前两个分量之和,这也与矩阵A的特点一致,这也印证了Ax=b是否有解取决于b是否在A的列空间中。
结合之前的章节总结出Ax=b有解条件:
- 列空间角度:当且仅当b属于A的列空间时成立
- 线性组合角度:当且仅当b是A各列的线性组合时成立
- 矩阵变换角度:如果A各行线性组合后得到零行,那么b取相同运算方式也必将得到0
求解Ax=b
接下来介绍通解和特解,通解就是满足方程所有的解,将“无穷解”用一种形式表达出来,对于Ax=b这个方程
通解=矩阵零空间向量+矩阵特解
因为矩阵零空间向量代入方程最后结果等于0,所以它不会影响等式,而是把方程的解向量扩展到一个类似子空间上,使我们求出的解更具有普遍意义,而求解零空间我们在上文也已经介绍,下面我们只需要关注如何求特解即可。在之前求解Ax=0方程的特解时,我们分别将自由变量赋值为0或1,得到
x=c⎣⎢⎢⎡−2100⎦⎥⎥⎤+d⎣⎢⎢⎡20−21⎦⎥⎥⎤(c和d为任意实数)
观察这个表达式会发现,只要将系数c和d定为0就可以得到零空间中的零向量,而且我们不能在求解Ax=0时将自由变元都赋为0。但是在Ax=b中,只要b不是0,我们就可以将自由变元全部赋为0,使用此方法即可得到特解。
接下来补充上述例题中方程的条件
⎣⎡1232462682810⎦⎤⎣⎢⎢⎡x1x2x3x4⎦⎥⎥⎤=⎣⎡156⎦⎤
Gauss-Jordan消元后得到
⎣⎡100200220240140⎦⎤
将[x2x4]=[00]回代方程得到
{x1+2x3=12x3=3
解得特解为⎣⎢⎢⎡−20230⎦⎥⎥⎤
利用上一节的知识我们很容易求出A的零空间为
c1⎣⎢⎢⎡−2100⎦⎥⎥⎤+c2⎣⎢⎢⎡20−21⎦⎥⎥⎤(c1和c2为任意实数)
因此Ax=b的解为
特解+零空间任意向量=⎣⎢⎢⎡−20230⎦⎥⎥⎤+c1⎣⎢⎢⎡−2100⎦⎥⎥⎤+c2⎣⎢⎢⎡20−21⎦⎥⎥⎤(c1和c2为任意实数)
这个解集在几何角度的解释是R4上的一个不过原点的二维平面,显然这个解集无法构成一个向量空间,因为解集中不包含零向量。
矩阵的秩与解的关系
我们在消元求Ax=b的过程中会发现,矩阵的秩对最后解的形式有着重要的影响,下面我们来总结一下其中的规律。
列满秩
对于m×n的矩阵A,列满秩时,意味着没有自由列,r=n<m,此时零空间中只有零向量(不需要求零空间),Ax=b的解要么有解且唯一(特解xp),要么无解。例如
A=⎣⎢⎢⎡12653111⎦⎥⎥⎤r=2=n<m
在消元过程中,由于两列线性无关,因此只有两个主元,逐行减去第一行的若干倍,行三和行四清零,得到第二个主元,然后各行都减去第二个主元的若干倍,最终第二个主元化为1的得到矩阵R
A=⎣⎢⎢⎡12653111⎦⎥⎥⎤=⎣⎢⎢⎡10000100⎦⎥⎥⎤=[I0]=R
行满秩
对于m×n的矩阵A,行满秩时,意味着有m个主元(每一行各一个),r=m<n,此时自由变元有n−r个,必然有解而且有无穷多解,例如
A=[13216151]r=2=m<n
最后我们会消元得到R=[IF]
行列满秩
对于m×n的矩阵A,行列满秩时,意味着矩阵可逆,r=m=n,此时自由变元有0个,经过消元,最终矩阵可化为单位矩阵I,即一个全是主元的方程组,最终只能有一个唯一解。例如
A=[1321]r=2=m=n
最后消元得到R=I
不满秩
对于m×n的矩阵A,不满秩时,意味着通过消元最终会得到R=[I0F0],因此方程的解要么无解,要么无穷多解(特解+零空间所有向量)
小结
综上所述,会发现自由变量总为n−r个,所以通过判断自由变元的个数可以初步判断Ax=b的解的结构:如果没有自由变元,意味着方程的解唯一或者无解;如果存在自由变元,意味着方程的解有无穷多解或者无解。也就是说,自由变元是否存在决定了方程的解是否唯一。另一点是,可以通过观察消元后矩阵A是否存在0行来进一步判断方程是否有解:如果矩阵A中没有零行时,意味着方程一定有解;如果存在零行,则需要考虑方程是否满足可解条件。
除此之外,我们还发现了零空间实际上就是用来判断矩阵A的各列向量是否是线性无关的,如果各列向量是线性无关的,那么零空间中只有零向量,如果各列向量是线性相关的,那么零空间中除了零向量还有其他向量。因此零空间反映的就是A各列向量的线性组合。
关于Ax=b的另一种解释
当我们求解方程时,例如
{2x−y=0−x+2y=3
矩阵表达如下
[2−1−12][xy]=[03]
除了使用消元法或判断矩阵是否满秩以外,我们还可以从列空间的角度来看这个方程,改写一些这个矩阵表达如下
x[2−1]+y[−12]=[03]
那么我们判断这个方程是否有解的条件实际上就是判断向量[03]是否在以向量[2−1]和向量[−12]构成的列空间中,换句话说,向量[03]是否可以表达成向量[2−1]和向量[−12]的线性组合。由于向量[2−1]和向量[−12]是线性相关的,因此可以张成一个二维平面,而向量[03]只是其中的一个二维向量,因此可以推断出方程一定有解。