#!/usr/bin/env python # coding: utf-8 # # 2.4 线性无关和生成空间 # 如果 $\mathbf A^{-1}$ 存在,那么方程 $\bf Ax=b$ 对于任意 $b$ 必须只有一个解 $\mathbf A^{-1}\mathbf b$。 # # 如果对于某个 $\mathbf b$ 存在多解,那么一定是无穷多的解。 # 因为如果 $\bf x,y$ 是方程的解,那么 $\forall \alpha \in \mathbb R, \mathbf z = \alpha \mathbf x + (1-\alpha)\mathbf y$ 都是方程的解。 # ### 线性组合和生成空间 # 对于一组向量的集合 $\{\mathbf v^{(1)}, \dots, \mathbf v^{(n)}\}$,其线性组合为 # # $$ # \sum_{i} c_i \mathbf v^{(i)} # $$ # # 集合 $\{\mathbf v^{(1)}, \dots, \mathbf v^{(n)}\}$ 的生成空间(`span`)就是所有这些线性组合得到的向量组成的集合。 # 我们将 $\mathbf{Ax}$ 改写为 # # $$\mathbf{Ax}=\sum_{i}x_i \mathbf A_{:,i}$$ # # 因此 $b$ 可以看成是 $\mathbf A$ 的列向量组的线性组合(`linear combination`)。 # # 为了使得所有的 $b\in \mathbb R^{m}$ 都有解,那么 $\mathbf A$ 的列向量组的生成空间应当是全空间 $\mathbb R^{m}$。 # # 为此,这些列向量组的个数 $n$ 应当至少有 $m$ 个,即 $n \geq m$。 # ### 线性无关 # $n \geq m$ 只是必要条件而不是充分条件,因为这些列向量可以存在冗余。 # # 这种冗余叫做线性相关性。 # # 一组线性无关的向量组定义为:其中任何一个向量,不能使用其它向量的线性组合表示。 # # 对于 $\mathbb R^{m}$ 的向量组,其中线性无关的向量最多只有 $m$ 个。 # # 向一组向量中加入一个这组向量的线性组合,并不会向其生成空间中加入新的向量。 # # 因此,为了使得所有的 $b\in \mathbb R^{m}$ 都有解,$\mathbf A$ 的列向量组应当有 $m$ 个线性无关解。 # # 为了使得方程只有一个解,我们需要限制列的个数,所以 $n \leq m$。 # # 综合上面的结果,为了使得 $\mathbf A^{-1}$ 存在,我们需要有 $\bf A$ 满足 $m=n$ 即方阵,以及所有的列向量都是线性无关的。 # # 有线性相关的列向量的方阵叫做奇异的。 # # 当然,如果 $\mathbf A^{-1}$ 不存在,线性方程组 $\bf Ax=b$ 还是可能有解的。 # ### 左逆和右逆 # 之前我们讨论的逆是矩阵的左逆,事实上,矩阵可以定义右逆为: # # $$ # \mathbf{AA}^{-1} = \mathbf I # $$ # # 对于方阵,左逆和右逆是相等的。