Skip to content

矩阵类型

特殊的矩阵结构带来了计算捷径和数学保证。本文将涵盖单位矩阵、对角矩阵、对称矩阵、三角矩阵、正交矩阵、正定矩阵、稀疏矩阵和随机矩阵——这些类型出现在协方差估计、图算法、正则化和马尔可夫链中。

  • 并非所有矩阵都一样。不同的结构赋予矩阵特殊的性质,使它们计算更快、更易于分析,或者两者兼得。以下是你最常遇到的类型。

  • 方阵的行数和列数相同(\(n \times n\))。大多数有趣的性质(行列式、特征值、逆)只适用于方阵。

  • 单位矩阵 \(I\) 是一个对角线上为 1、其余位置为 0 的方阵。它是“什么都不做”的变换:对于任何相容的矩阵 \(A\),有 \(AI = IA = A\)

\[ I = \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix} \]
  • 零矩阵 \(O\) 的所有元素都为零。它将每个向量映射到零向量,摧毁所有信息。

  • 对角矩阵除了主对角线外全是零。将一个向量乘以对角矩阵只是独立地缩放每个分量,因此非常高效。

\[ D = \begin{bmatrix} 3 & 0 \\ 0 & 7 \end{bmatrix} \]
  • 对称矩阵等于其自身的转置:\(A = A^T\),即 \(A_{ij} = A_{ji}\)。对称矩阵有一个特殊性质:它们的特征向量总是相互垂直的。协方差矩阵总是对称的。
\[ S = \begin{bmatrix} 3 & -1 \\ -1 & 6 \end{bmatrix} \]
  • 三角矩阵在对角线的一侧全为零。下三角矩阵的上方全为零,上三角矩阵的下方全为零。它们对于通过前代或回代高效求解方程组至关重要。
\[ L = \begin{bmatrix} 2 & 0 & 0 \\ 1 & 3 & 0 \\ -1 & 2 & 4 \end{bmatrix} \qquad U = \begin{bmatrix} 5 & -1 & 2 \\ 0 & 1 & 3 \\ 0 & 0 & -2 \end{bmatrix} \]
  • 三角矩阵的行列式就是其对角线元素的乘积。

  • 正交矩阵满足其转置等于其逆:\(Q^TQ = QQ^T = I\)

  • 这意味着你只需通过转置就能“撤销”这个变换,计算成本很低。它的列是标准正交的(单位长度且相互垂直)。

  • 稀疏矩阵的大部分元素为零,而稠密矩阵的大部分元素非零。

稀疏与稠密:点表示非零元素

  • 在实践中,许多现实世界的矩阵极其稀疏。

  • 一个有百万用户的社交网络可以表示为一个 \(10^6 \times 10^6\) 的矩阵,但每个人只与少数几个人相连,因此几乎所有的元素都是零。

一个小型社交网络及其邻接矩阵:大部分元素为零

  • 置换矩阵是通过重排单位矩阵的行得到的。乘以它会打乱向量的元素。每行和每列恰好有一个 1,其余都是 0。

  • 例如,下面的矩阵将元素 3 移到位置 1,元素 1 移到位置 2,元素 2 移到位置 3:

\[ P = \begin{bmatrix} 0 & 0 & 1 \\ 1 & 0 & 0 \\ 0 & 1 & 0 \end{bmatrix} \]
  • 托普利兹矩阵沿每条对角线(从左上到右下)具有相同的值。注意每条对角线是常数:
\[ T = \begin{bmatrix} a & b & c \\ d & a & b \\ e & d & a \end{bmatrix} \]
  • 这种结构出现在信号处理和卷积中,因为将一个固定滤波器滑动经过一个信号等价于乘以一个托普利兹矩阵。

  • 循环矩阵是一种特殊的托普利兹矩阵,其中每一行都是上一行的循环移位。当一行到达末尾时,会绕回开头:

\[ C = \begin{bmatrix} 1 & 3 & 2 \\ 2 & 1 & 3 \\ 3 & 2 & 1 \end{bmatrix} \]
  • 循环矩阵与离散傅里叶变换(DFT)密切相关,并且是循环卷积如何工作的核心。

  • 埃尔米特矩阵是复数域中对称矩阵的对应物:\(A = A^\ast\)(其中 \(A^\ast\) 是共轭转置)。

  • 对于实矩阵,埃尔米特和对称是一样的。你会在量子计算和信号处理中遇到它们。

  • 酉矩阵是复数域中正交矩阵的对应物:\(U^\ast U = UU^\ast = I\)。正如正交矩阵在实空间中保持长度,酉矩阵在复空间中保持长度。

  • 幂等矩阵满足 \(A^2 = A\)。应用两次变换等同于应用一次,因此它是一个投影。一旦投影过,再次投影不会改变任何东西。

  • 幂零矩阵满足对于某个幂次 \(k\)\(A^k = O\)(零矩阵)。足够多次应用变换后,一切都会坍缩为零。例如:

\[ \begin{bmatrix} 0 & 1 \\ 0 & 0 \end{bmatrix}^2 = \begin{bmatrix} 0 & 0 \\ 0 & 0 \end{bmatrix} \]
  • 布尔矩阵(或二值矩阵)只包含 0 和 1。它表示是/否的关系。例如,在一个 3 个节点的图中,邻接矩阵记录哪些节点相连:
\[ B = \begin{bmatrix} 0 & 1 & 1 \\ 1 & 0 & 0 \\ 1 & 0 & 0 \end{bmatrix} \]
  • 这里,节点 1 连接到节点 2 和 3,但节点 2 和 3 之间没有连接。

  • 范德蒙矩阵由一组数值的连续幂次构成。给定值 \(x_1, x_2, x_3\)

\[ V = \begin{bmatrix} 1 & x_1 & x_1^2 \\ 1 & x_2 & x_2^2 \\ 1 & x_3 & x_3^2 \end{bmatrix} \]
  • 这种结构出现在多项式插值中:找到经过给定点集的唯一多项式。

  • 海森伯格矩阵是“几乎”三角形的,在第一次次对角线以下全为零:

\[ H = \begin{bmatrix} 4 & 2 & 1 \\ 3 & 5 & -1 \\ 0 & 1 & 6 \end{bmatrix} \]
  • 它是高效计算特征值的有用中间形式。先将矩阵化为海森伯格形式可以使迭代算法收敛更快。

编程任务(使用 CoLab 或 notebook)

  1. 创建一个正交矩阵(旋转矩阵),将其与其转置相乘,验证得到单位矩阵。尝试不同的角度。

    import jax.numpy as jnp
    
    theta = jnp.pi / 4
    Q = jnp.array([[jnp.cos(theta), -jnp.sin(theta)],
                   [jnp.sin(theta),  jnp.cos(theta)]])
    
    print(f"Q @ Q.T:\n{Q @ Q.T}")
    print(f"行列式: {jnp.linalg.det(Q):.2f}")
    

  2. 创建一个对称矩阵并验证它等于其转置。然后计算其特征值并检查特征向量是否垂直。

    import jax.numpy as jnp
    
    S = jnp.array([[4.0, 2.0],
                   [2.0, 3.0]])
    
    print(f"是否对称: {jnp.allclose(S, S.T)}")
    
    eigenvalues, eigenvectors = jnp.linalg.eigh(S)
    print(f"特征值: {eigenvalues}")
    print(f"特征向量的点积: {jnp.dot(eigenvectors[:, 0], eigenvectors[:, 1]):.6f}")