线性代数(3):Ax=0和Ax=b

线性代数(3):Ax=0和Ax=b

求解Ax=0

消元法求解零空间

那么我们如何求解Ax=0Ax=0呢?还是使用消元法,之前我们说使用消元法求解方程Ax=bAx=b时,我们对一种情况是无法处理的,那就是矩阵AA不可逆的情况,之前对这种情况的解释是求出的解不唯一,这其实正好对应了现在我们所认识到的“空间”的概念。我们从最简单的零空间(b=0b=0)的计算谈起。

例1:Ax=[1222246836810]Ax = \left[\begin{matrix} 1 & 2 & 2 & 2 \\ 2 & 4& 6 & 8 \\ 3 & 6 & 8 & 10 \end{matrix}\right],求Ax=0Ax=0中的xx构成的零空间

先将方程写出,如下

Ax=[1222246836810][x1x2x3x4]=0Ax = \left[\begin{matrix} 1 & 2 & 2 & 2 \\ 2 & 4& 6 & 8 \\ 3 & 6 & 8 & 10 \end{matrix}\right]\left[\begin{matrix} x_1 \\ x_2 \\ x_3 \\ x_4 \end{matrix}\right] = 0

首先观察矩阵AA我们发现,第三行是前两行的和,这意味着即使主元为00,我们也得继续消元下去。那么按部就班,有

[1222246836810][122200240024][122200240000]()=U\left[\begin{matrix} 1 & 2 & 2 & 2 \\ 2 & 4& 6 & 8 \\ 3 & 6 & 8 & 10 \end{matrix}\right] \Rightarrow \left[\begin{matrix} 1 & 2 & 2 & 2 \\ 0 & 0& 2 & 4 \\ 0 & 0 & 2 & 4 \end{matrix}\right] \Rightarrow \left[\begin{matrix} 1 & 2 & 2 & 2 \\ 0 & 0& 2 & 4 \\ 0 & 0 & 0 & 0 \end{matrix}\right] (阶梯形式)= U

在消元的过程中,我们发现矩阵AA主元(Pivot)数量为221122),主元的个数称为矩阵的秩(Rank),因此在本题中矩阵AA的秩为22

接下来就是回代求解了,由于消元得到的UU不是一个严格的上三角矩阵,对角线上的00给我们造成了解不唯一的麻烦,所以这里我们先来声明几个概念

[122200240000]\left[\begin{array}{c|c|c|c} 1 & 2 & 2 & 2 \\ 0 & 0& 2 & 4 \\ 0 & 0 & 0 & 0 \end{array}\right]中,列[100]\left[\begin{matrix} 1 \\ 0 \\ 0 \end{matrix}\right][220]\left[\begin{matrix} 2 \\ 2 \\ 0 \end{matrix}\right]被称为主列(Pivot Columns,主元所在的列),其余两列[200]\left[\begin{matrix}2 \\ 0 \\ 0 \end{matrix}\right][240]\left[\begin{matrix} 2 \\ 4 \\ 0 \end{matrix}\right]被称为自由列(Free Columns),所谓自由列就是表示其对应的未知变量xnx_nnn表示自由列是第nn列)可以被任意分配值。因为回代求解时,只有主列对应的未知数的解有确定值。因此矩阵AA中的主变量(主元)x1x_1x3x_3x2x_2x4x_4自由变量

(1)我们假设,令[x2x4]=[10]\left[\begin{matrix} x_2 \\ x_4 \end{matrix}\right] = \left[\begin{matrix} 1 \\ 0 \end{matrix}\right],代入方程

{x1+2x2+2x3+2x4=02x3+4x4=0\begin{cases} x_1+2x_2+2x_3+2x_4=0 \\2x_3+4x_4=0 \end{cases}

解得

{x1=2x3=0\begin{cases} x_1=-2 \\x_3= 0 \end{cases}

因此当[x2x4]=[10]\left[\begin{matrix} x_2 \\ x_4 \end{matrix}\right] = \left[\begin{matrix} 1 \\ 0 \end{matrix}\right]时,解向量为[2100]\left[\begin{matrix} -2 \\ 1 \\ 0 \\ 0 \end{matrix}\right],这只是零空间中的一个解,这个解表示2-2倍的列11++11倍的列22=0=0,如果想找出更多零向量中的解,我们只需要求它的倍数,所以x=c[2100](c)x=c\left[\begin{matrix} -2 \\ 1 \\ 0 \\ 0 \end{matrix}\right](c为任意实数),这是一条在四维空间中无限延伸的直线,但它不是整个零空间。

(2)我们再令[x2x4]=[01]\left[\begin{matrix} x_2 \\ x_4 \end{matrix}\right] = \left[\begin{matrix} 0 \\ 1 \end{matrix}\right],代入方程

{x1+2x2+2x3+2x4=02x3+4x4=0\begin{cases} x_1+2x_2+2x_3+2x_4=0 \\2x_3+4x_4=0 \end{cases}

解得

{x1=2x3=2\begin{cases} x_1=2 \\x_3=-2 \end{cases}

因此当[x2x4]=[01]\left[\begin{matrix} x_2 \\ x_4 \end{matrix}\right] = \left[\begin{matrix} 0 \\ 1 \end{matrix}\right]时,解向量为[2021]\left[\begin{matrix} 2 \\ 0 \\ -2 \\ 1 \end{matrix}\right],因此另一条在四维空间中的直线为x=d[2021]dx=d\left[\begin{matrix} 2 \\ 0 \\ -2 \\ 1 \end{matrix}\right](d为任意实数)

那么还能为[x2x4]\left[\begin{matrix} x_2 \\ x_4 \end{matrix}\right]赋其他值吗?很明显其他情况都可以被[10]\left[\begin{matrix} 1 \\ 0 \end{matrix}\right][01]\left[\begin{matrix} 0 \\ 1 \end{matrix}\right]的线性组合所涵盖,所以这两个解向量足够代表空间的特征了,我们称这两个解向量为特解,其特殊之处在于我们给自由变量赋值为[10]\left[\begin{matrix} 1 \\ 0 \end{matrix}\right][01]\left[\begin{matrix} 0 \\ 1 \end{matrix}\right]。通过特解的任意倍的线性组合,可以构造出整个零空间。因此便得出了矩阵AA的零空间

x=c[2100]+d[2021](cd)x=c\left[\begin{matrix} -2 \\ 1 \\ 0 \\ 0 \end{matrix}\right]+d\left[\begin{matrix} 2 \\ 0 \\ -2 \\ 1 \end{matrix}\right](c和d为常数)

算法总结

对于一个m×nm×n的矩阵A,若其秩为rr,那么意味着其主变量为rr个,而自由变量为nrn-r个。也就是说,只有rr列起作用。我们需要先对矩阵AA进行消元,得到rr个主元,由于有nn个变量xx,我们再将其中的nrn-r个自由变量依次赋值为[100][010][001]\left[\begin{matrix} 1 \\ 0 \\ \vdots \\ 0 \end{matrix}\right]、\left[\begin{matrix} 0 \\ 1 \\ \vdots \\ 0 \end{matrix}\right]、\left[\begin{matrix} 0 \\ 0 \\ \vdots \\ 1 \end{matrix}\right]。接着求解方程的特解,将特解的任意倍进行线性组合即可得到矩阵AA的零空间。

简化阶梯形式

尽管上面的消元法看上去已经很完美了,但事实上仍有化简的余地,最后得到的UU矩阵仍可以被进一步化简。我们以上文中的U=[122200240000]U=\left[\begin{matrix} 1 & 2 & 2 & 2 \\ 0 & 0& 2 & 4 \\ 0 & 0 & 0 & 0 \end{matrix}\right]为例,继续化简的目标是令对角线上的主元为1,并且通过列交换将主元放在一起,把自由列放在一起来构成新的矩阵,操作如下

U=[122200240000]=[120200240000]()=[120200120000]()=[102201020000]()=RU=\left[\begin{matrix} 1 & 2 & 2 & 2 \\ 0 & 0& 2 & 4 \\ 0 & 0 & 0 & 0 \end{matrix}\right] = \left[\begin{matrix} 1 & 2 & 0 & -2 \\ 0 & 0& 2 & 4 \\ 0 & 0 & 0 & 0 \end{matrix}\right](向上消元) = \left[\begin{matrix} 1 & 2 & 0 & -2 \\ 0 & 0& 1 & 2 \\ 0 & 0 & 0 & 0 \end{matrix}\right](提第二行公倍数) = \left[\begin{matrix} 1 & 0 & 2 & -2 \\ 0 & 1 & 0 & 2 \\ 0 & 0 & 0 & 0 \end{matrix}\right](列交换) = R

也就是说最终我们能将上三角矩阵UU化简成矩阵RR,矩阵RR的一般形式为

R=[IF00]R = \left[\begin{matrix} I & F \\ 0 & 0\end{matrix}\right]

其中,II表示主列,由于rr个主列的主元被化简成了11,因此这部分变成了rr维单位矩阵,FF表示自由列,共有nrn-r个自由列。有了矩阵RR我们可以改写AxAx的表达形式

Ax=Rx=[IF00][xx]=RN=0Ax = Rx = \left[\begin{matrix} I & F \\ 0 & 0\end{matrix}\right] \left[\begin{matrix} x_{主元} \\ x_{自由变量} \end{matrix}\right] = RN = 0

这里的NN为零空间矩阵,即各列向量由特解组成的矩阵

N=[FI]N = \left[\begin{matrix} -F \\ I \end{matrix}\right]

需要注意的是,这里的单位矩阵和矩阵RR中的有所不同,这里的IInrn-r维的,是将nrn-r个自由变量分别赋值为0011得到的。将上文中的示例代入到RRNN,得到

R=[102201020000],N=[22021001]R = \left[\begin{matrix} 1 & 0 & 2 & -2 \\ 0 & 1 & 0 & 2 \\ 0 & 0 & 0 & 0 \end{matrix}\right],\quad N=\left[\begin{matrix} -2 & 2 \\ 0 & -2 \\ 1 & 0\\ 0 & 1\end{matrix}\right]

由于x1x_1x3x_3是主列,x2x_2x4x_4是自由列,因此只需交换零空间矩阵中的第2、3行即可得到特解[2100]\left[\begin{matrix} -2 \\ 1 \\ 0 \\ 0 \end{matrix}\right][2021]\left[\begin{matrix} 2 \\ 0 \\ -2 \\ 1 \end{matrix}\right]。**因此将矩阵UU化简称矩阵RR可以直接求解零空间。**我们用下面一个例题来试验一下:

A=[1232462682810]A = \left[\begin{matrix} 1 & 2 & 3 \\ 2 & 4 & 6 \\ 2 & 6 & 8 \\ 2 & 8 & 10\end{matrix}\right],求解Ax=0Ax=0xx构成的零空间。

(1)将AA消元为UU:$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)将UU化简为RRU=[123022000000]=[101011000000]=RU = \left[\begin{matrix} 1 & 2 & 3 \\ 0 & 2 & 2 \\ 0 & 0 & 0 \\ 0 & 0 & 0\end{matrix}\right] = \left[\begin{matrix} 1 & 0 & 1 \\ 0 & 1 & 1 \\ 0 & 0 & 0 \\ 0 & 0 & 0\end{matrix}\right] = R

(3)得到零空间矩阵NNN=[FI]=[111]N = \left[\begin{matrix} -F \\ I \end{matrix}\right] = \left[\begin{matrix} -1 \\ -1 \\ 1 \end{matrix}\right]

(4)得到零空间:x=c[111](c)x=c\left[\begin{matrix} -1 \\ -1 \\ 1 \end{matrix}\right](c为任意实数)

求解Ax=b

Ax=b的可解性

对于Ax=bAx=b我们知道这个方程不一定有解,在之前的章节中说明了Ax=bAx=b是否有解取决于bb是否在AA的列空间中,我们再通过一个例子来说明一下

例 求方程[1222246836810][x1x2x3x4]=[b1b2b3]\left[\begin{matrix} 1 & 2 & 2 & 2 \\ 2 & 4 & 6 & 8 \\ 3 & 6 & 8 & 10 \end{matrix}\right]\left[\begin{matrix} x_1 \\ x_2 \\ x_3 \\ x_4 \end{matrix}\right] = \left[\begin{matrix} b_1 \\ b_2 \\ b_3 \end{matrix}\right]的可解条件。

在这个方程中,观察矩阵A,发现矩阵中第三行为第一行和第二行的和。根据之前的Gauss-Jordan消元法,我们可以得到

[1222b10024b2b10000b3b2b1]\left[\begin{array}{cccc|c} 1 & 2 & 2 & 2 & b_1 \\ 0 & 0 & 2 & 4 & b_2-b_1 \\ 0 & 0 & 0 & 0 & b_3- b_2-b_1 \end{array}\right]

代入方程,会发现最后一行0=b3b2b10 = b_3-b_2-b_1,这一行方程必须成立,因此这一行就是方程的可解条件。同时,它还反映了bb向量的第三个分量是前两个分量之和,这也与矩阵AA的特点一致,这也印证了Ax=bAx=b是否有解取决于bb是否在AA的列空间中。

结合之前的章节总结出Ax=bAx=b有解条件:

  • 列空间角度:当且仅当bb属于AA的列空间时成立
  • 线性组合角度:当且仅当bbAA各列的线性组合时成立
  • 矩阵变换角度:如果AA各行线性组合后得到零行,那么bb取相同运算方式也必将得到00

求解Ax=b

接下来介绍通解和特解,通解就是满足方程所有的解,将“无穷解”用一种形式表达出来,对于Ax=bAx=b这个方程

=+通解=矩阵零空间向量+矩阵特解

因为矩阵零空间向量代入方程最后结果等于00,所以它不会影响等式,而是把方程的解向量扩展到一个类似子空间上,使我们求出的解更具有普遍意义,而求解零空间我们在上文也已经介绍,下面我们只需要关注如何求特解即可。在之前求解Ax=0Ax=0方程的特解时,我们分别将自由变量赋值为0011,得到

x=c[2100]+d[2021](cd)x=c\left[\begin{matrix} -2 \\ 1 \\ 0 \\ 0 \end{matrix}\right]+d\left[\begin{matrix} 2 \\ 0 \\ -2 \\ 1 \end{matrix}\right](c和d为任意实数)

观察这个表达式会发现,只要将系数ccdd定为00就可以得到零空间中的零向量,而且我们不能在求解Ax=0Ax=0时将自由变元都赋为00。但是在Ax=bAx=b中,只要bb不是00,我们就可以将自由变元全部赋为00,使用此方法即可得到特解。

接下来补充上述例题中方程的条件

[1222246836810][x1x2x3x4]=[156]\left[\begin{matrix} 1 & 2 & 2 & 2 \\ 2 & 4 & 6 & 8 \\ 3 & 6 & 8 & 10 \end{matrix}\right]\left[\begin{matrix} x_1 \\ x_2 \\ x_3 \\ x_4 \end{matrix}\right] = \left[\begin{matrix} 1 \\ 5 \\ 6 \end{matrix}\right]

Gauss-Jordan消元后得到

[122210024400000]\left[\begin{array}{cccc|c} 1 & 2 & 2 & 2 & 1 \\ 0 & 0 & 2 & 4 & 4 \\ 0 & 0 & 0 & 0 & 0 \end{array}\right]

[x2x4]=[00]\left[\begin{matrix} x_2 \\ x_4 \end{matrix}\right] = \left[\begin{matrix} 0 \\ 0 \end{matrix}\right]回代方程得到

{x1+2x3=12x3=3\begin{cases} x_1+2x_3=1 \\2x_3=3 \end{cases}

解得特解为[20320]\left[\begin{matrix} -2 \\ 0 \\ \frac{3}{2} \\ 0 \end{matrix}\right]

利用上一节的知识我们很容易求出AA的零空间为

c1[2100]+c2[2021](c1c2)c_1\left[\begin{matrix} -2 \\ 1 \\ 0 \\ 0 \end{matrix}\right]+c_2\left[\begin{matrix} 2 \\ 0 \\ -2 \\ 1 \end{matrix}\right](c_1和c_2为任意实数)

因此Ax=bAx=b的解为

+=[20320]+c1[2100]+c2[2021](c1c2)特解+零空间任意向量=\left[\begin{matrix} -2 \\ 0 \\ \frac{3}{2} \\ 0 \end{matrix}\right] + c_1\left[\begin{matrix} -2 \\ 1 \\ 0 \\ 0 \end{matrix}\right]+c_2\left[\begin{matrix} 2 \\ 0 \\ -2 \\ 1 \end{matrix}\right](c_1和c_2为任意实数)

这个解集在几何角度的解释是R4R^4上的一个不过原点的二维平面,显然这个解集无法构成一个向量空间,因为解集中不包含零向量。

矩阵的秩与解的关系

我们在消元求Ax=bAx=b的过程中会发现,矩阵的秩对最后解的形式有着重要的影响,下面我们来总结一下其中的规律。

列满秩

对于m×nm×n的矩阵AA,列满秩时,意味着没有自由列,r=n<mr=n<m,此时零空间中只有零向量(不需要求零空间),Ax=bAx=b的解要么有解且唯一(特解xpx_p),要么无解。例如

A=[13216151]r=2=n<mA = \left[\begin{matrix} 1 & 3 \\ 2 & 1 \\ 6 & 1 \\ 5 & 1 \end{matrix}\right] \quad r=2=n<m

在消元过程中,由于两列线性无关,因此只有两个主元,逐行减去第一行的若干倍,行三和行四清零,得到第二个主元,然后各行都减去第二个主元的若干倍,最终第二个主元化为11的得到矩阵RR

A=[13216151]=[10010000]=[I0]=RA = \left[\begin{matrix} 1 & 3 \\ 2 & 1 \\ 6 & 1 \\ 5 & 1 \end{matrix}\right] = \left[\begin{matrix} 1 & 0 \\ 0 & 1 \\ 0 & 0 \\ 0 & 0 \end{matrix}\right] = \left[\begin{matrix} I \\ 0 \end{matrix}\right]=R

行满秩

对于m×nm×n的矩阵AA,行满秩时,意味着有mm个主元(每一行各一个),r=m<nr = m<n,此时自由变元有nrn-r个,必然有解而且有无穷多解,例如

A=[12653111]r=2=m<nA = \left[\begin{matrix} 1 & 2 & 6 & 5 \\ 3 & 1 & 1 & 1 \end{matrix}\right] \quad r=2=m<n

最后我们会消元得到R=[IF]R=\left[\begin{matrix} I & F \end{matrix}\right]

行列满秩

对于m×nm×n的矩阵AA,行列满秩时,意味着矩阵可逆,r=m=nr = m = n,此时自由变元有00个,经过消元,最终矩阵可化为单位矩阵II,即一个全是主元的方程组,最终只能有一个唯一解。例如

A=[1231]r=2=m=nA = \left[\begin{matrix} 1 & 2 \\ 3 & 1\end{matrix}\right] \quad r=2=m=n

最后消元得到R=IR=I

不满秩

对于m×nm×n的矩阵AA,不满秩时,意味着通过消元最终会得到R=[IF00]R = \left[\begin{matrix} I & F \\ 0 & 0\end{matrix}\right],因此方程的解要么无解,要么无穷多解(特解+零空间所有向量)

小结

综上所述,会发现自由变量总为nrn-r个,所以通过判断自由变元的个数可以初步判断Ax=bAx=b的解的结构:如果没有自由变元,意味着方程的解唯一或者无解;如果存在自由变元,意味着方程的解有无穷多解或者无解。也就是说,自由变元是否存在决定了方程的解是否唯一。另一点是,可以通过观察消元后矩阵AA是否存在00行来进一步判断方程是否有解:如果矩阵AA中没有零行时,意味着方程一定有解;如果存在零行,则需要考虑方程是否满足可解条件。

除此之外,我们还发现了零空间实际上就是用来判断矩阵AA的各列向量是否是线性无关的,如果各列向量是线性无关的,那么零空间中只有零向量,如果各列向量是线性相关的,那么零空间中除了零向量还有其他向量。因此零空间反映的就是AA各列向量的线性组合。

关于Ax=b的另一种解释

当我们求解方程时,例如

{2xy=0x+2y=3\begin{cases} 2x-y=0 \\ -x+2y=3 \end{cases}

矩阵表达如下

[2112][xy]=[03]\left[\begin{matrix} 2 & -1 \\ -1 & 2\end{matrix}\right]\left[\begin{matrix} x \\ y \end{matrix}\right] = \left[\begin{matrix} 0 \\ 3 \end{matrix}\right]

除了使用消元法或判断矩阵是否满秩以外,我们还可以从列空间的角度来看这个方程,改写一些这个矩阵表达如下

x[21]+y[12]=[03]x\left[\begin{matrix} 2 \\ -1 \end{matrix}\right] + y \left[\begin{matrix} -1 \\ 2 \end{matrix}\right] = \left[\begin{matrix} 0 \\ 3 \end{matrix}\right]

那么我们判断这个方程是否有解的条件实际上就是判断向量[03]\left[\begin{matrix} 0 \\ 3 \end{matrix}\right]是否在以向量[21]\left[\begin{matrix} 2 \\ -1 \end{matrix}\right]和向量[12]\left[\begin{matrix} -1 \\ 2 \end{matrix}\right]构成的列空间中,换句话说,向量[03]\left[\begin{matrix} 0 \\ 3 \end{matrix}\right]是否可以表达成向量[21]\left[\begin{matrix} 2 \\ -1 \end{matrix}\right]和向量[12]\left[\begin{matrix} -1 \\ 2 \end{matrix}\right]的线性组合。由于向量[21]\left[\begin{matrix} 2 \\ -1 \end{matrix}\right]和向量[12]\left[\begin{matrix} -1 \\ 2 \end{matrix}\right]是线性相关的,因此可以张成一个二维平面,而向量[03]\left[\begin{matrix} 0 \\ 3 \end{matrix}\right]只是其中的一个二维向量,因此可以推断出方程一定有解。