向量空间与子空间

向量空间与子空间

学习目标

完成本节后,你将能够: - 理解向量空间的公理化定义 - 识别子空间 - 理解列空间和零空间 - 掌握秩-零化度定理

1. 向量空间

### 1.1 定义

向量空间 \(V\) 是在加法和数乘下封闭的集合。

通俗理解:向量空间是一个"安全空间"——你把空间中的元素线性组合,结果仍然在空间中。

### 1.2 常见向量空间

  • \(\mathbb{R}^n\):所有 n 元实数组
  • \(M_{m\times n}\):所有 m×n 矩阵
  • \(P_n\):所有次数 ≤ n 的多项式
  • \(C[a,b]\):区间 [a,b] 上的连续函数

> **洞察**:向量不一定只是数字列表。**函数也是向量**!"把函数加起来"和"给函数乘一个数"就是加法和数乘。

2. 子空间

### 2.1 定义

子集 \(S \subseteq V\) 是子空间,如果: 1. \(\mathbf{0} \in S\) 2. \(\mathbf{u}, \mathbf{v} \in S \implies \mathbf{u}+\mathbf{v} \in S\) 3. \(\mathbf{v} \in S, c \in \mathbb{R} \implies c\mathbf{v} \in S\)

即:对线性组合封闭的、包含零元的子集。

快速检查:不过原点的直线不是子空间。

### 2.2 例子与反例

是子空间: - \(\mathbb{R}^2\) 中过原点的直线 - \(\mathbb{R}^3\) 中过原点的平面 - 所有对称矩阵的集合

不是子空间: - \(\mathbb{R}^2\) 中第一象限(数乘 -1 后跑出) - 单位圆上的点(加法不封闭) - \(y = 1\) 的直线(不过原点)

3. 列空间 C(A)

### 3.1 定义

\(C(A) = \{A\mathbf{x} : \mathbf{x} \in \mathbb{R}^n\}\) = 所有列的线性组合。

核心意义:\(A\mathbf{x} = \mathbf{b}\) 有解 ⇔ \(\mathbf{b} \in C(A)\)

### 3.2 如何判断某向量是否在列空间中?

def in_column_space(A, b):
    """检查 b 是否在 A 的列空间中"""
    rank_A = np.linalg.matrix_rank(A)
    rank_Ab = np.linalg.matrix_rank(np.hstack([A, b.reshape(-1, 1)]))

A = np.array([[1, 2], [2, 4]]) # 两列共线 b1 = np.array([3, 6]) # 在列空间中 b2 = np.array([3, 3]) # 不在

print(in_column_space(A, b1)) # True print(in_column_space(A, b2)) # False ```

4. 零空间 N(A)

### 4.1 定义

\(N(A) = \{\mathbf{x} : A\mathbf{x} = \mathbf{0}\}\)

核心意义:给出解的自由度。如果 \(A\mathbf{x}_p = \mathbf{b}\) 且 \(\mathbf{x}_n \in N(A)\),则 \(\mathbf{x}_p + \mathbf{x}_n\) 也是解。

### 4.2 计算零空间

def null_space(A):
    """计算矩阵 A 的零空间基"""
    u, s, vh = np.linalg.svd(A)
    rank = np.sum(s > max(A.shape) * 1e-10)

A = np.array([[1, 2, 3], [2, 4, 6]]) # rank = 1 null_basis = null_space(A) print("零空间基:", null_basis) print("dim N(A) =", null_basis.shape[1]) # 应该是 2 print("验证 A @ null_basis[:,0] ≈ 0:") print(A @ null_basis[:, 0]) ```

5. 秩-零化度定理

\[\dim C(A) + \dim N(A) = \text{列数}\]

即:\(\text{rank}(A) + \text{nullity}(A) = n\)

直觉理解:输入空间的 \(n\) 个维度中,\(r\) 个映射到列空间("存活"),\(n-r\) 个被压缩到零("消失")。

6. 本节习题

  1. 判断 \(S = \{[x,y,z] : x + y + z = 0\}\) 是否为 \(\mathbb{R}^3\) 的子空间
  2. 判断 \(S = \{[x,y,z] : x + y + z = 1\}\) 是否为 \(\mathbb{R}^3\) 的子空间
  3. 找出 \(A = \begin{bmatrix} 1 & 2 & 1 \\ 2 & 4 & 2 \end{bmatrix}\) 的列空间和零空间
  4. 证明:两个子空间的交集仍是子空间
  5. 对于 4×6 的秩为 3 的矩阵,列空间和零空间的维度分别是什么?

总结

- 向量空间对线性组合封闭 - 子空间是空间中的"平坦子集" - 列空间衡量"有多少 b 有解" - 零空间衡量"解的自由度" - 秩-零化度定理:\(r + (n-r) = n\)