§1.1.2

矩阵的秩、行列式、迹的含义及相互关系?

核心概念

矩阵的秩 (Rank) 是矩阵列向量(或行向量)构成的线性空间的最大维度,直观地衡量了矩阵所代表的线性变换在“压缩”信息后的“有效维度”。一个 m×nm \times n 矩阵的秩最大为 min(m,n)\min(m, n)

矩阵的行列式 (Determinant) 是一个与方阵相关的标量值。在几何上,一个 n×nn \times n 矩阵的行列式的绝对值 det(A)|det(A)| 表示该矩阵对应的线性变换对 nn 维空间中单位超立方体“体积”的缩放比例。行列式的正负号表示空间定向(手性)是否被翻转。

矩阵的迹 (Trace) 是方阵主对角线上元素之和。它虽然定义简单,但在线性代数中具有重要的性质,例如它是矩阵所有特征值的总和,并且在循环置换下保持不变。

原理与推导

1. 矩阵的秩 (Rank)

  • 定义: 对于一个 m×nm \times n 的矩阵 AA,其秩 rank(A)rank(A) 定义为其列空间(由所有列向量张成的向量空间)的维度。等价地,它也是行空间(由所有行向量张成的向量空间)的维度。 rank(A) = \dim(\text{col_space}(A)) = \dim(\text{row_space}(A)) 对于任意矩阵 ARm×nA \in \mathbb{R}^{m \times n},我们有 rank(A)min(m,n)rank(A) \le \min(m, n)

    • 满秩 (Full Rank): 当 rank(A)=min(m,n)rank(A) = \min(m, n) 时,称矩阵为满秩。
      • 如果 mnm \ge nrank(A)=nrank(A) = n,称为列满秩。
      • 如果 mnm \le nrank(A)=mrank(A) = m,称为行满秩。
  • 几何解释: 考虑线性变换 T(x)=AxT(\vec{x}) = A\vec{x}。输入向量 x\vec{x} 来自 nn 维空间 Rn\mathbb{R}^n,输出向量 AxA\vec{x} 存在于 mm 维空间 Rm\mathbb{R}^m。所有可能的输出向量构成的集合就是 AA 的列空间。因此,rank(A)rank(A) 就是这个线性变换输出空间的维度。

    • 例如,一个 3×33 \times 3 矩阵的秩为 2,意味着它将整个 3D 空间 "拍扁" 成一个 2D 的平面。所有输入向量经过变换后,都会落在这个平面上。
  • 算法复杂度: 计算秩最稳定和常用的方法是奇异值分解 (Singular Value Decomposition, SVD)。对于一个 m×nm \times n 矩阵,SVD 的计算复杂度通常是 O(min(m2n,mn2))O(\min(m^2n, mn^2))。秩等于非零奇异值的数量。

2. 矩阵的行列式 (Determinant)

  • 定义与公式: 只对方阵 (n×nn \times n) 定义。

    • 对于 2×22 \times 2 矩阵 A=(abcd)A = \begin{pmatrix} a & b \\ c & d \end{pmatrix},行列式为 det(A)=adbcdet(A) = ad - bc
    • 对于 n×nn \times n 矩阵,可以使用拉普拉斯展开(按任意一行或一列展开): det(A)=j=1n(1)i+jaijMijdet(A) = \sum_{j=1}^{n} (-1)^{i+j} a_{ij} M_{ij} 其中 aija_{ij} 是第 ii 行第 jj 列的元素,MijM_{ij} 是去掉第 ii 行和第 jj 列后得到的 (n1)×(n1)(n-1) \times (n-1) 子矩阵的行列式(称为余子式)。
  • 几何解释:

    • 考虑一个 2×22 \times 2 矩阵 A=(v1v2)A = \begin{pmatrix} \vec{v}_1 & \vec{v}_2 \end{pmatrix},其中 v1,v2\vec{v}_1, \vec{v}_2 是列向量。这个矩阵作用于标准基向量 e1=[1,0]T\vec{e}_1 = [1, 0]^Te2=[0,1]T\vec{e}_2 = [0, 1]^T 上,会得到 v1\vec{v}_1v2\vec{v}_2。原来的单位正方形(由 e1,e2\vec{e}_1, \vec{e}_2 围成,面积为1)被变换为由 v1,v2\vec{v}_1, \vec{v}_2 围成的平行四边形。这个平行四边形的有向面积就是 det(A)det(A)
    • 如果 det(A)>0det(A) > 0,定向不变(v2\vec{v}_2v1\vec{v}_1 的逆时针方向)。
    • 如果 det(A)<0det(A) < 0,定向翻转(v2\vec{v}_2v1\vec{v}_1 的顺时针方向)。
    • 如果 det(A)=0det(A) = 0,两个向量共线,平行四边形被压成一条线,面积为0。
    • 这个概念可以推广到 nn 维空间,其中 det(A)det(A) 代表了 nn 维“超体积”的缩放因子。
  • 与特征值的关系: 行列式等于矩阵所有特征值 λi\lambda_i 的乘积。 det(A)=i=1nλidet(A) = \prod_{i=1}^{n} \lambda_i

3. 矩阵的迹 (Trace)

  • 定义与公式: 只对方阵 (n×nn \times n) 定义。迹是主对角线元素的和。 tr(A)=i=1nAiitr(A) = \sum_{i=1}^{n} A_{ii}

  • 重要性质:

    • 线性性: tr(A+B)=tr(A)+tr(B)tr(A+B) = tr(A) + tr(B)tr(cA)=ctr(A)tr(cA) = c \cdot tr(A)
    • 循环不变性: 这是迹最关键的性质之一。对于尺寸匹配的矩阵 A,B,CA, B, Ctr(ABC)=tr(BCA)=tr(CAB)tr(ABC) = tr(BCA) = tr(CAB) 注意,不等于 tr(ACB)tr(ACB)。这个性质在机器学习的很多梯度推导中至关重要。 推导 tr(AB)=tr(BA)tr(AB) = tr(BA): 设 ARm×n,BRn×mA \in \mathbb{R}^{m \times n}, B \in \mathbb{R}^{n \times m}tr(AB)=i=1m(AB)ii=i=1mj=1nAijBjitr(AB) = \sum_{i=1}^{m} (AB)_{ii} = \sum_{i=1}^{m} \sum_{j=1}^{n} A_{ij}B_{ji} tr(BA)=j=1n(BA)jj=j=1ni=1mBjiAijtr(BA) = \sum_{j=1}^{n} (BA)_{jj} = \sum_{j=1}^{n} \sum_{i=1}^{m} B_{ji}A_{ij} 由于标量乘法满足交换律,且求和顺序可以交换,所以 tr(AB)=tr(BA)tr(AB) = tr(BA)
  • 与特征值的关系: 迹等于矩阵所有特征值 λi\lambda_i 的和。 tr(A)=i=1nλitr(A) = \sum_{i=1}^{n} \lambda_i

相互关系

  1. 秩与行列式:

    • 对于一个 n×nn \times n 的方阵 AA,它是满秩的(rank(A)=nrank(A) = n当且仅当 det(A)0det(A) \neq 0
    • 推导/解释:
      • rank(A)<n    Arank(A) < n \iff A 的列向量线性相关。
      • 列向量线性相关     \iff 变换后的空间维度小于 nn(例如,3D空间被压缩成一个平面或一条线)。
      • 空间维度被压缩     \iff 变换后的“体积”为零。
      • 变换后的体积为零     det(A)=0\iff det(A) = 0
    • 因此,奇异矩阵 (Singular Matrix)非满秩矩阵行列式为零的矩阵不可逆矩阵 这几个概念对于方阵来说是等价的。
  2. 秩与迹:

    • 一般情况下,秩和迹没有直接的、简单的数值关系。一个秩为1的矩阵可以有任意大小的迹。
    • 特殊情况: 如果一个矩阵 PP投影矩阵(即 P2=PP^2=P),那么 rank(P)=tr(P)rank(P) = tr(P)。这在统计学(如线性回归的帽子矩阵)和机器学习中很有用。
  3. 行列式与迹 (通过特征值):

    • 它们是连接矩阵与它的特征值的两座核心桥梁。
    • det(A)=i=1nλidet(A) = \prod_{i=1}^{n} \lambda_i
    • tr(A)=i=1nλitr(A) = \sum_{i=1}^{n} \lambda_i
    • 这两个关系揭示了矩阵的深层代数结构。它们是矩阵特征多项式 p(λ)=det(AλI)p(\lambda) = det(A - \lambda I) 的系数的函数。具体来说,tr(A)tr(A)λn1\lambda^{n-1} 的系数相关,det(A)det(A) 是常数项(在某些定义下是 (1)ndet(A)(-1)^n \cdot det(A))。

代码实现

python
1import numpy as np
2
3# 创建一个 3x3 的满秩矩阵
4A = np.array([
5 [1, 2, 3],
6 [0, 4, 5],
7 [1, 0, 6]
8])
9
10# 创建一个 3x3 的奇异(秩亏)矩阵
11# 第三行是第一行和第二行的线性组合 (row3 = row1 * 2 + row2)
12B = np.array([
13 [1, 2, 3],
14 [0, 4, 5],
15 [2, 8, 11] # 2*row1 + row2 = [2,4,6] + [0,4,5] = [2,8,11]
16])
17
18def analyze_matrix(name, mat):
19 """
20 一个辅助函数,用于计算并打印矩阵的秩、行列式和迹
21 """
22 print(f"--- 分析矩阵 {name} ---")
23 print(f"矩阵:\n{mat}\n")
24
25 # 1. 计算秩
26 # np.linalg.matrix_rank 使用 SVD 方法计算,这是数值最稳定的方式
27 rank = np.linalg.matrix_rank(mat)
28 print(f"秩 (Rank): {rank}")
29 # 为什么这样做: 秩是衡量矩阵信息量的核心指标,首先计算它。
30
31 # 检查是否为方阵,只有方阵才有行列式和迹
32 if mat.shape[0] == mat.shape[1]:
33 # 2. 计算行列式
34 # np.linalg.det 计算行列式
35 det = np.linalg.det(mat)
36 print(f"行列式 (Determinant): {det:.4f}")
37 # 为什么这样做: 行列式直接关联到矩阵是否可逆(奇异)。
38
39 # 3. 计算迹
40 # np.trace 计算迹,即对角线元素之和
41 trace = np.trace(mat)
42 print(f"迹 (Trace): {trace}")
43 # 为什么这样做: 迹是另一个重要的矩阵不变量,与特征值之和相关。
44
45 # 4. 计算特征值以验证关系
46 eigenvalues, _ = np.linalg.eig(mat)
47 print(f"特征值: {eigenvalues}")
48 print(f"特征值之和: {np.sum(eigenvalues):.4f} (应约等于迹)")
49 print(f"特征值之积: {np.prod(eigenvalues):.4f} (应约等于行列式)")
50 # 为什么这样做: 这是验证迹和行列式与特征值关系的最佳方式。
51 else:
52 print("非方阵,无法计算行列式和迹。")
53 print("-" * 20 + "\n")
54
55# 分析满秩矩阵 A
56analyze_matrix("A (满秩)", A)
57
58# 分析奇异矩阵 B
59analyze_matrix("B (奇异)", B)

工程实践

  • 秩 (Rank):

    • 推荐系统: 在矩阵分解(如SVD)中,我们用两个低秩矩阵的乘积来近似高维稀疏的用户-物品评分矩阵。这里的“秩”是一个关键超参数,决定了模型的复杂度和表达能力。
    • 数据降维 (PCA): PCA的本质是找到数据协方差矩阵的主要特征向量,这等价于对数据进行低秩近似。保留的 компоненты (主成分) 数量与数据在新空间中的“有效秩”有关。
    • 多重共线性检验: 在线性回归中,如果特征矩阵 XX 不是列满秩的,那么 XTXX^T X 将是奇异的,无法求逆,导致参数估计不稳定。计算 XX 的秩可以诊断此问题。
  • 行列式 (Determinant):

    • 概率与统计: 在变量替换中计算概率密度函数 (PDF) 时,需要乘以雅可比矩阵 (Jacobian Matrix) 的行列式。这在 VAEs (变分自编码器) 和 Normalizing Flows 等生成模型中是核心计算步骤。
    • 数值稳定性: 行列式接近于0的矩阵被称为病态矩阵 (ill-conditioned matrix)。求解线性方程组 Ax=bAx=b 时,如果 AA 病态,输入 bb 的微小扰动可能导致解 xx 的巨大变化。不过,直接计算行列式来判断病态并不可靠(可能溢出或下溢),通常使用条件数 (Condition Number)
  • 迹 (Trace):

    • 梯度计算: 在机器学习中,很多损失函数可以写成矩阵的迹的形式。例如,Frobenius 范数的平方 XF2=tr(XTX)||\mathbf{X}||_F^2 = tr(\mathbf{X}^T\mathbf{X})。利用迹的循环性质 tr(ABC)=tr(BCA)tr(ABC)=tr(BCA),可以极大简化对矩阵变量求导的计算。这是矩阵求导 (Matrix Calculus) 中的一个“神技”。
    • 期望计算: 在高斯过程中,模型证据 (marginal likelihood) 的计算涉及到核矩阵的迹。
    • 正则化: 某些正则化项可能包含迹,例如,在流形学习中,拉普拉斯特征映射的目标函数就包含迹的优化。

常见误区与边界情况

  • 误区1: 秩等于非零行的数量。

    • 错误。秩是线性无关的行(或列)的最大数量。矩阵 [[1, 1], [2, 2]] 有两个非零行,但第二行是第一行的两倍,它们线性相关,所以秩为1。
  • 误区2: 任何矩阵都有行列式。

    • 错误。只有方阵 (n×nn \times n) 才有行列式。对于非方阵,讨论其是否“可逆”或“奇异”是没有意义的,但可以讨论其是否“满秩”。
  • 误区3: 用 det(A) == 0 来判断奇异性。

    • 理论上正确,实践中危险。由于浮点数精度问题,一个理论上奇异的矩阵在计算后其行列式可能是一个非常小的非零数(如 1e-18)。反之,一个病态但非奇异的矩阵,其行列式可能非常小。在数值计算中,判断奇异性或病态更稳健的方法是计算条件数或检查奇异值(SVD的结果),看是否存在非常接近于0的奇异值。
  • 误区4: 迹的性质混淆。

    • tr(AB)=tr(BA)tr(AB) = tr(BA) 总是成立(只要矩阵维度允许相乘)。
    • tr(ABC)tr(ABC) 不一定等于 tr(BAC)tr(BAC)。必须是循环置换,如 tr(ABC)=tr(BCA)=tr(CAB)tr(ABC) = tr(BCA) = tr(CAB)
  • 面试追问:

    • : 如果一个大矩阵的行列式非常大或非常小,意味着什么?
    • : 行列式的值本身的大小并不能直接说明太多问题。例如,对于对角矩阵 A=diag(c,c,...,c)A = diag(c, c, ..., c),其行列式为 cnc^n。如果 c=10,n=100c=10, n=100,行列式会是巨大的 1010010^{100};如果 c=0.1,n=100c=0.1, n=100,行列式会是极小的 1010010^{-100}。但这两种矩阵本身可能都是良态的。行列式的值与矩阵的尺度(scaling)和维度高度相关。关键在于它是否接近于零,而不是它离1有多远。
    • : 如何在不直接计算行列式的情况下,判断一个矩阵是否奇异?
    • : 1. 高斯消元法: 在进行行变换时,如果出现一个全零行,则矩阵是奇异的。2. 奇异值分解 (SVD): 计算矩阵的奇异值,如果存在一个或多个奇异值为0(或在数值上非常接近0),则矩阵是奇异的。这是最可靠的数值方法。3. 求解齐次线性方程组: 如果 Ax=0Ax=0 存在非零解 xx,则矩阵 AA 是奇异的。
相关题目