线性组合、张成空间与基
学习目标
完成本节后,你将能够: - 深刻理解线性组合 - 理解张成空间和张成集 - 判断线性无关性 - 理解基的定义和性质
1. 线性无关与线性相关
线性无关:向量组 \(\{\mathbf{v}_1, \ldots, \mathbf{v}_k\}\) 线性无关,如果线性组合为零的唯一方式是所有系数为零:
\[c_1\mathbf{v}_1 + \cdots + c_k\mathbf{v}_k = \mathbf{0} \implies c_1 = \cdots = c_k = 0\]
几何意义:没有冗余方向。每个向量都贡献了一个新的维度。
> **直觉 (3Blue1Brown)**:线性无关的向量组中,每个向量都指向一个"新的方向",不可以用其他向量的线性组合来表示。线性相关的向量组中,至少有一个向量是"多余的"——它在其他向量张成的空间中。
### 1.1 如何判断?
设 \(A = [\mathbf{v}_1 \; \cdots \; \mathbf{v}_k]\),则检验 \(A\mathbf{c} = \mathbf{0}\) 是否只有零解。
def is_independent(vectors): A = np.column_stack(vectors) rank = np.linalg.matrix_rank(A) return rank == A.shape[1]
# 例1:标准基 v1, v2, v3 = np.array([1,0,0]), np.array([0,1,0]), np.array([0,0,1]) print("标准基:", is_independent([v1, v2, v3])) # True
# 例2:冗余向量 v4 = np.array([1, 2, 3]) # = v1 + 2*v2 + 3*v3 print("加上v4:", is_independent([v1, v2, v3, v4])) # False ```
2. 基 (Basis)
### 2.1 定义
一组向量 \(\mathcal{B} = \{\mathbf{b}_1, \ldots, \mathbf{b}_n\}\) 是向量空间 \(V\) 的一组基,如果:
- \(\mathcal{B}\) 线性无关
- \(\mathcal{B}\) 张成 \(V\)
核心思想:基是描述空间的"最经济的方式"——不多不少,刚好够用。
> **直觉 (3Blue1Brown)**:基向量是构建整个空间的"基本原料"。任何向量都可以表示为基向量的线性组合,而且表示方式**唯一**。
### 2.2 标准基
\(\mathbb{R}^n\) 的标准基是 \(\{\mathbf{e}_1, \ldots, \mathbf{e}_n\}\),其中 \(\mathbf{e}_i\) 在第 \(i\) 个位置为 1,其他位置为 0。
例如 \(\mathbb{R}^2\) 的标准基:\(\mathbf{e}_1 = [1,0], \mathbf{e}_2 = [0,1]\)
### 2.3 坐标
向量相对于基 \(\mathcal{B}\) 的坐标是表达它所需要的系数。
# 例:在非标准基下的坐标
# 基 B = {[1,1], [1,-1]}
b1 = np.array([1, 1])
b2 = np.array([1, -1])# 向量 v = [3, 1] 在标准基下的坐标 v = np.array([3, 1])
# 在B基下的坐标:解 B * [c1, c2]^T = v coords = np.linalg.solve(B, v) print(f"v 在 B 基下的坐标: {coords}") # [2, 1] 即 2*b1 + 1*b2
# 验证 print(f"2*b1 + 1*b2 = {2*b1 + b2}") # [3, 1] = v ```
3. 维度
定义:向量空间的维度 = 基中向量的个数。
重要结论:同一空间的所有基大小相同。所有对 \(\mathbb{R}^n\) 的描述都认同其维度是 \(n\)。
### 3.1 维度的直观
- 一条直线的维度为 1
- 一个平面的维度为 2
- \(\mathbb{R}^n\) 的维度为 \(n\)
- "所有 2×2 矩阵"的集合维度为 4
4. 秩 (Rank)
矩阵 \(A\) 的秩 = \(A\) 中线性无关的**列**的最大个数 = \(C(A)\) 的维度。
A1 = np.array([[1, 0, 0],
[0, 1, 0],
[0, 0, 0]])A2 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) print("秩:", np.linalg.matrix_rank(A2)) # 2(因为第三行=2*第二行-第一行) ```
5. 本节习题
- 判断 \(\{[1,2], [2,4]\}\) 是否线性无关
- 证明:如果 \(\{\mathbf{v}_1, \mathbf{v}_2\}\) 线性无关,则 \(\{\mathbf{v}_1 + \mathbf{v}_2, \mathbf{v}_1 - \mathbf{v}_2\}\) 也线性无关
- 为什么 \(\mathbb{R}^3\) 中任意 4 个向量必然线性相关?
- 找出 \(\mathbb{R}^3\) 中过原点的直线的一组基
- 用 Python 写出一般秩的计算程序,不借助 np.linalg.matrix_rank
总结
- 线性无关 = 没有冗余方向 - 基 = 线性无关的张成集 - 维度 = 基的大小(刻画空间"大小") - 秩 = 矩阵中独立列的数量