MIT线性代数——3.3:Ax=b的完整解(下)

书接上文

MIT线性代数——3.3:Ax=b的完整解(上)

3.3.3 获得通解

例如我们有一个等式 A ⋅ x = b A \cdot x = b Ax=b,我们是不是可以写成 A ⋅ x = b + 0 A \cdot x = b + 0 Ax=b+0,那么我们可以将 x x x看作两个向量的和—— x = x n u l l s p a c e + x p a t i c u l a r x = x_{nullspace} + x_{paticular} x=xnullspace+xpaticular,我们让 A ⋅ ( x n u l l s p a c e + x p a t i c u l a r ) = b A \cdot ( x_{nullspace} + x_{paticular}) = b A(xnullspace+xpaticular)=b,即 A ⋅ x n u l l s p a c e + A ⋅ x p a t i c u l a r = b + 0 A \cdot x_{nullspace} + A \cdot x_{paticular} = b + 0 Axnullspace+Axpaticular=b+0

有同学可能知道我们要干嘛了,我们可以把普通的等式 A × x = b A \times x = b A×x=b 看成:
①    A ⋅ x p a t i c u l a r = b ① \; A \cdot x_{paticular} = b Axpaticular=b
②    A ⋅ x n u l l s p a c e = 0 ② \; A \cdot x_{nullspace} = 0 Axnullspace=0

通过上一篇文章,我们知道了,针对 ① 来说,我们可以求得一个特解 x p a t i c u l a r x_{paticular} xpaticular,当然这个解一定符合要求,但是一定就只有 x p a t i c u l a r x_{paticular} xpaticular 这个解吗?通过上述的两个公式我们可以看出,特解 x p a t i c u l a r x_{paticular} xpaticular 与 A 的零向量空间里的任意一个向量的和,依旧是解。也就是说,如果只看特解的话只有一个,但是实际上我们有无限多的解,通过零空间的向量加上特解,我们便获得了全部的解。
传送门—> 如何获得零空间向量

3.3.4 举例

增广

[ 1 3 0 2 0 0 1 4 1 3 1 6 ] ⋅ x = [ 1 6 7 ] \left[ \begin{matrix} 1&3&0&2\\ 0&0&1&4\\ 1&3&1&6\\ \end{matrix} \right] \cdot x = \left[ \begin{matrix} 1\\ 6\\ 7 \end{matrix} \right] 101303011246x=167

增广后
[ 1 3 0 2 1 0 0 1 4 6 1 3 1 6 7 ] \left[ \begin{matrix} 1&3&0&2&1\\ 0&0&1&4&6\\ 1&3&1&6&7\\ \end{matrix} \right] 101303011246167

此时我们看到第二行第一个数 i 2 , 1 = 0 i_{2,1} = 0 i2,1=0 ,那就不用管第二行了

继续,row3 - row2 - row1就全变成0了,即:
[ 1 3 0 2 1 0 0 1 4 6 0 0 0 0 0 ] \left[ \begin{matrix} 1&3&0&2&1\\ 0&0&1&4&6\\ 0&0&0&0&0\\ \end{matrix} \right] 100300010240160

这时候,第一行的主元为 i 1 , 1 i_{1,1} i1,1,第二行的主元为 i 2 , 3 i_{2,3} i2,3,并且主元为1,其所在列的其余数字都为零,那么我们便获得了化简后的行阶梯矩阵 r r e f rref rref 的一个增广矩阵 [ R d ] \bigl[ \begin{matrix}R & d\end{matrix}\bigr] [Rd]

求特解

那么问题从 A x = b Ax = b Ax=b 转换成了 R x = d Rx = d Rx=d,即:
[ 1 3 0 2 0 0 1 4 0 0 0 0 ] ⋅ [ x 1 x 2 x 3 x 4 ] = [ 1 6 0 ] \left[ \begin{matrix} 1&3&0&2\\ 0&0&1&4\\ 0&0&0&0\\ \end{matrix} \right] \cdot \left[ \begin{matrix} x_1\\ x_2\\ x_3\\ x_4 \end{matrix} \right] = \left[ \begin{matrix} 1\\ 6\\ 0 \end{matrix} \right] 100300010240x1x2x3x4=160

记得我们怎么简单理解这个公式的吗?把 x 1 x_1 x1~ x 4 x_4 x4认为是对R中四个列向量的线性组合的系数, [ 1 6 0 ] T \bigl[\begin{matrix}1&6&0\end{matrix}\bigr]^T [160]T 就是用 R R R 里的这几个列向量的组合表示成的一个新的向量。

记住,主元所在的列向量是至关重要的,因为 R R R 中其他的向量都可以用主元所在的向量来表示。因为主元为1,其所在的向量其他维度都为0,所以 i 1 , 1 i_{1,1} i1,1 这个主元能够表示所有自由向量的第一个维度(这里不太好用文字表示,你可以认为第二列这个列向量的第一个维度的值‘3’以及第四个向量的‘2’都可以用第一个主元所在的向量来表示。同理,自由向量的第二个维度可以让第二个主元所在的列表示

不说那么多了,总之就是一句话,除了主元所在的列,其他的列向量,不重要
所以我们将自由向量的线性组合的系数置零,即 x 2 = 0 , x 4 = 0 x_2=0, x_4=0 x2=0,x4=0,只需要让主元所在的两个向量线性组合就行了。
很明显,我们让 x 1 = 1 , x 3 = 6 x_1 = 1, x_3 = 6 x1=1,x3=6,问题迎刃而解,呼之欲出,特解为:
[ 1 0 6 0 ] \left[ \begin{matrix} 1\\ 0\\ 6\\ 0 \end{matrix} \right] 1060

零向量

所有能让 A x n u l l s p a c e = 0 Ax_{nullspace} = 0 Axnullspace=0 x n u l l s p a c e x_{nullspace} xnullspace 是零向量,这些向量的线性组合形成的一个空间,就是这个矩阵的零空间。
那么你就使劲想办法能够让 A A A 或者 R R R 等于0。当然 0 0 0 向量也在我们考虑的范围内,你要找到的是哪些非零向量能让 A A A 或者 R R R 等于0。

先插入点题外话:

前方有点小高能,有些地方不是很清楚,大家如果不想看可以跳过这一小节
一个矩阵可以用“横看成岭侧成峰,远近高低各不同”来形容。

矩阵你可以按照一列一列向量来看,那它就是以其中的一些或者全部的列向量为基底,组合成的一个向量空间,如果 b b b 是一个列向量,那么某个矩阵 A × b A \times b A×b 可以理解为把向量 b 放在 A 这个矩阵空间内,在 A 的基底下来表示,
如果b为 [ 1 2 4 8 ] T \bigl[\begin{matrix}1&2&4&8\end{matrix}\bigr]^T [1248]T,A为
[ ① ② ③ ④ a b c d e f g h i j l l ] \left[ \begin{matrix} ①&②&③&④\\ \textcolor{orange}a&\textcolor{red}b&\textcolor{green}c&\textcolor{pink}d\\ \textcolor{orange}e&\textcolor{red}f&\textcolor{green}g&\textcolor{pink}h\\ \textcolor{orange}i&\textcolor{red}j&\textcolor{green}l&\textcolor{pink}l \end{matrix} \right] aeibfjcgldhl
你可以认为A的空间的基底是 ①、②、③、④, A ⋅ b A \cdot b Ab 的结果就表示着让4倍的向量 ① 加上2倍的向量 ② 加上4倍的向量 ③ 加上8倍的向量 ④ 最后所构成的一个向量;

你也可以横着看,一行一行都是一个向量,这些向量所在的空间是以每个维度上的单位单位向量为基底的。
我们来看一个公式x+2y+3z=0.

  • 从平面几何来看,这个是一个三维空间里的平面,过零点,法向量是(1,2,3),这个平面内所有的向量都与法向量(1,2,3)垂直。而且最重要的一点,从原点指向平面内所有的点(x,y,z),所构成的向量依然在平面内,类似于下图。如果不是过零点的平面,这种性质是不存在的。
    matlab不太会用,大家看看意思就行。这个平面图是对的,但是向量不太对,大家看看这个垂直关系就好了
  • 从矩阵来看,我们可以得到
    [ 1 2 3 ] ⋅ [ x y z ] = 0 \left[ \begin{matrix} 1&2&3 \end{matrix} \right] \cdot \left[ \begin{matrix} x\\ y\\ z \end{matrix} \right] = 0 [123]xyz=0

[ x y z ] T \bigl[ \begin{matrix} x&y&z \end{matrix} \bigr]^T [xyz]T 这个向量,与 [ 1 2 3 ] \bigl[ \begin{matrix} 1&2&3 \end{matrix} \bigr] [123] 这个向量垂直。 [ x y z ] T \bigl[ \begin{matrix} x&y&z \end{matrix} \bigr]^T [xyz]T就是所有的与法向量垂直的向量,那么这些向量集合到一起,构成的空间是啥?他们构成的,就是上图的那个平面。

继续看个例子:

之前说的都是一个方程,现在变成两方程了。把这两个方程变一变
[ 1 1 1 1 2 − 1 ] [ x y z ] = [ 3 4 ] \left[ \begin{matrix} 1&1&1\\ 1&2&-1 \end{matrix} \right] \left[ \begin{matrix} x\\ y\\ z \end{matrix} \right] = \left[ \begin{matrix} 3\\ 4 \end{matrix} \right] [111211]xyz=[34]

拆成两个方程
[ 1 1 1 1 2 − 1 ] x p a t i c u l a r = [ 3 4 ] \left[ \begin{matrix} 1&1&1\\ 1&2&-1 \end{matrix} \right] x_{paticular}= \left[ \begin{matrix} 3\\ 4 \end{matrix} \right] [111211]xpaticular=[34]

[ 1 1 1 1 2 − 1 ] x n u l l s p a c e = [ 0 0 ] \left[ \begin{matrix} 1&1&1\\ 1&2&-1 \end{matrix} \right] x_{nullspace}= \left[ \begin{matrix} 0\\ 0 \end{matrix} \right] [111211]xnullspace=[00]

我们主要看看第二个方程,那么我们根据按照行向量来看的话
设 a = [ 1 1 1 ] 设 a =\bigl[ \begin{matrix} 1&1&1\\ \end{matrix} \bigr] a=[111]、b = [ 1 2 − 1 ] \bigl[ \begin{matrix} 1&2&-1\\ \end{matrix} \bigr] [121]这两个向量与 x n u l l s p a c e x_{nullspace} xnullspace的乘积都为零,用上面的思想来看,就是所有的 x n u l l s p a c e x_{nullspace} xnullspace构成的解集空间与这两个向量都垂直,并且都处于过原点的平面,那么所有的 x n u l l s p a c e x_{nullspace} xnullspace构成的解集一定是两个法向量分别为a和b的平面的交集(在正常有解的情况下),这个零向量空间是一条直线。 当我们求零向量空间时,都是求的一个或者多个零向量的特殊解,通过对这几个特殊解的线性组合,获得零向量空间。那么对于上面这道题来说,一个特殊的零向量,一定是一个点,通过这个点乘以系数,便可以得到整个零向量空间,也就是那一条直线。

你通过计算获得通解,也就是完整解:
发现这是一个向量,与一条直线的向量组合。

(我这里说的不是特别明白,sorry~,如果不懂就跳过,不影响下面的😀)

那么横着看向量,我们就成功地把矩阵同空间几何更好地联系到了一起。

求零向量

我们上面啰啰嗦嗦那么多,其实就是为了让你确认一个思想,求零向量,其实是求的一个空间。
还是用我们求特解时候的那个矩阵。
通过行变换,我们最终会得到一个化简后的行阶梯矩阵:
[ 1 3 0 2 0 0 1 4 0 0 0 0 ] \left[ \begin{matrix} 1&3&0&2\\ 0&0&1&4\\ 0&0&0&0\\ \end{matrix} \right] 100300010240

而且我们还能够知道这里面有两个主元,那么想要求得零向量,我们直接利用赋值法,因为理论上来讲,只要有主元,我们就能得到任何在其空间内的向量,那么两个主元向量能够通过线性组合,获得两个自由向量的线性组合的相反量,我们直接给两个自由向量提供系数0和1,以及1和0,从而获得两个解。
① [ 1 3 0 2 0 0 1 4 0 0 0 0 ] ⋅ [ x 1 0 x 3 1 ] = 0 ① \left[ \begin{matrix} 1&3&0&2\\ 0&0&1&4\\ 0&0&0&0\\ \end{matrix} \right] \cdot \left[ \begin{matrix} x_1\\ 0\\ x_3\\ 1 \end{matrix} \right] = 0 100300010240x10x31=0
② [ 1 3 0 2 0 0 1 4 0 0 0 0 ] ⋅ [ x 1 1 x 3 0 ] = 0 ② \left[ \begin{matrix} 1&3&0&2\\ 0&0&1&4\\ 0&0&0&0\\ \end{matrix} \right] \cdot \left[ \begin{matrix} x_1\\ 1\\ x_3\\ 0 \end{matrix} \right] = 0 100300010240x11x30=0
具体解的过程就不必再详细叙述了,我们这里可以获得两个零向量
① [ − 2 0 − 4 1 ] ② [ − 3 1 0 0 ] ① \left[ \begin{matrix} -2\\ 0\\ -4\\ 1\\ \end{matrix} \right] ② \left[ \begin{matrix} -3\\ 1\\ 0\\ 0\\ \end{matrix} \right] 20413100
对这两个向量进行任意的组合,我们便获得了一个向量空间。
c 1 [ − 2 0 − 4 1 ] + c 2 [ − 3 1 0 0 ] c_1 \left[ \begin{matrix} -2\\ 0\\ -4\\ 1\\ \end{matrix} \right] + c_2 \left[ \begin{matrix} -3\\ 1\\ 0\\ 0\\ \end{matrix} \right] c12041+c23100

通解

通过上面的操作,我们获得了通解:
x = x p a t i c u l a r + x n u l l s p a c e x = x_{paticular}+x_{nullspace} x=xpaticular+xnullspace
即:

x = [ 1 0 6 0 ] + c 1 [ − 2 0 − 4 1 ] + c 2 [ − 3 1 0 0 ] x= \left[ \begin{matrix} 1\\ 0\\ 6\\ 0 \end{matrix} \right] + c_1 \left[ \begin{matrix} -2\\ 0\\ -4\\ 1 \end{matrix} \right] + c_2 \left[ \begin{matrix} -3\\ 1\\ 0\\ 0 \end{matrix} \right] x=1060+c12041+c23100

3.3.5 满秩

例子

我们先来看个题目

如上题,我们要找到 b 1 , b 2 , b 3 b_1,b_2,b_3 b1,b2,b3 之间的关系,来让方程有解。通过增广,以及行变换,最后一行为0,如果要让方程有解, b 1 + b 2 + b 3 b_1+b_2+b_3 b1+b2+b3 必须等于0。

但是通过这个例子我们也注意到,这个矩阵化简后,秩 r = 列 数 n r = 列数n r=n,它没有自由元,也就不会有零向量空间。
如果 b 1 + b 2 + b 3 = 0 b_1+b_2+b_3 = 0 b1+b2+b3=0这个方程只可能有一个解 ,零向量此时为 0 0 0
x = [ 2 b 1 − b 2 b 2 − b 1 ] + 0 x = \left[ \begin{matrix} 2b_1-b_2 \\ b_2 - b_1 \end{matrix} \right] + 0 x=[2b1b2b2b1]+0
如果 b 1 + b 2 + b 3 ≠ 0 b_1+b_2+b_3 ≠ 0 b1+b2+b3=0则这个方程无解

列满秩矩阵

如上,我们称列数等于秩的矩阵为列满秩矩阵,它行变换的最终化简形式为

R = [ I 0 ] = [ n × n 的 单 位 矩 阵 m − n 行 的 0 ] R= \left[ \begin{matrix} I\\ 0 \end{matrix} \right] = \left[ \begin{matrix} n \times n的单位矩阵\\ m - n 行的0 \end{matrix} \right] R=[I0]=[n×nmn0]
所有的满秩矩阵有以下特性:

  1. 所有的列都是主元列
  2. 没有自由元和特殊解(零向量)
  3. 没有零向量或者说零向量真的成0了
  4. 如果有解,那么它只有一个解

行满秩矩阵


对于这样的矩阵,我们通过化简后得到:

对于这样的,行数小于列数,并且秩等于行数的矩阵,我们称之为行满秩矩阵,它有如下特性:

  1. 所有的行都有主元,并且化简后的行阶梯矩阵没有都是零的一行
  2. 无论 A x = b Ax=b Ax=b里的这个b是啥(前提是b的行数一定要等于A的行数),都有解,这个怎么理解呢?因为b的行数等于A的行数m,并且秩也等于m,那么主元列一定能通过线性组合获得特解 x p a t i c u l a r x_{paticular} xpaticular,而且秩小于列数,一定有自由元,那么就一定存在零向量空间,此时一定有解。
    关于这个证明我发现了一个大佬的博客,写的很好
    —>关于矩阵的秩的重要结论

如果A是行满秩的矩阵,那么方程组要么有唯一解,要么有无穷多解。

如果A是行满秩的矩阵,因为矩阵的列秩等于矩阵的行秩,所以矩阵的列秩等于矩阵的行数,所以矩阵的列向量的线性组合一定能得到所有该维数的列向量。怎么理解呢?比如A是2x4的矩阵,A的秩为2,那么组成A的四个列向量的秩为2,这四个列向量都是2维的,那这四个列向量是不是能线性组合成任意的二维列向量,所以一定有解。

A的形式要么是矮且胖要么是方阵(矩阵的列不可能小于矩阵的行数),如果矩阵A矮且胖的话,那么对线性方程组的约束的个数(矩阵的行数)小于未知数的个数,那就是无穷多解。矩阵A是方阵,根据克拉默法则我们也能得出是唯一解。

大佬还找到了证明过程:

3. 列空间就是 R m R^m Rm

满秩总结

我看到在Quora上面有一个回答,总结的挺好的。

翻译如下:
如果你的矩阵是 m × n m \times n m×n的并且m < n,那么当

  • 矩阵的秩r = m时
  • 即矩阵的所有行都线性无关时
    矩阵为行满秩矩阵。

如果这个矩阵m > n,那么当

  • 矩阵的秩r = n时,
  • 即矩阵的所有列线性无关时
    矩阵为满秩(列满秩)矩阵。

如果m = n,只要r=m或者n,这个矩阵的行向量和列向量都是线性无关的。