跳到主要内容

矩阵

矩阵是一个按行列排列的矩形数组,用大写粗体字母表示。一个 m×nm \times n 矩阵有 mm 行、nn 列:

A=[a11a12…a1na21a22…a2n⋮⋮⋱⋮am1am2…amn]A = \begin{bmatrix} a_{11} & a_{12} & \dots & a_{1n} \\ a_{21} & a_{22} & \dots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{m1} & a_{m2} & \dots & a_{mn} \end{bmatrix}

其中 aija_{ij} 表示第 ii 行第 jj 列的元素。

矩阵可以看作多个列向量或行向量的组合。例如:

A=[a1a2…an]A = \begin{bmatrix} \bm{a}_1 & \bm{a}_2 & \dots & \bm{a}_n \end{bmatrix}

其中每个 aj\bm{a}_j 是矩阵的第 jj 列的元素。

B=[b1b2⋮bn]B = \begin{bmatrix} \bm{b}_1 \\ \bm{b}_2 \\ \vdots \\ \bm{b}_n \end{bmatrix}

其中每个 bi\bm{b}_i 是矩阵的第 ii 行的元素。

零矩阵:所有元素都为 0 的矩阵,记作 OO 或 0\mathbf{0}:

O2×2=[0000]O_{2 \times 2} = \begin{bmatrix} 0 & 0 \\ 0 & 0 \end{bmatrix}

单位矩阵:对角线为 1、其余为 0 的方阵,记作 II:

I2=[1001],I3=[100010001]I_2 = \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix}, \quad I_3 = \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix}

单位矩阵在矩阵乘法中相当于"11",任何矩阵乘以单位矩阵仍为自身。

1. 矩阵加减与数乘​

加法与减法

同型矩阵(行数、列数相同)按对应元素相加减:

[a11a12a21a22]±[b11b12b21b22]=[a11±b11a12±b12a21±b21a22±b22]\begin{bmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \end{bmatrix} \pm \begin{bmatrix} b_{11} & b_{12} \\ b_{21} & b_{22} \end{bmatrix} = \begin{bmatrix} a_{11} \pm b_{11} & a_{12} \pm b_{12} \\ a_{21} \pm b_{21} & a_{22} \pm b_{22} \end{bmatrix}

数乘

标量与矩阵每个元素相乘:

k⋅[a11a12a21a22]=[k⋅a11k⋅a12k⋅a21k⋅a22]k \cdot \begin{bmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \end{bmatrix} = \begin{bmatrix} k \cdot a_{11} & k \cdot a_{12} \\ k \cdot a_{21} & k \cdot a_{22} \end{bmatrix}

2. 矩阵乘法​

m×nm \times n 矩阵 AA 与 n×pn \times p 矩阵 BB 相乘,得到 m×pm \times p 矩阵 C=ABC = AB,其中:

cij=∑k=1naik⋅bkjc_{ij} = \sum_{k=1}^{n} a_{ik} \cdot b_{kj}

即 CC 的第 ii 行第 jj 列元素等于 AA 的第 ii 行与 BB 的第 jj 列逐元素相乘再求和。

二维示例:

[a11a12a21a22][b11b12b21b22]=[a11b11+a12b21a11b12+a12b22a21b11+a22b21a21b12+a22b22]\begin{bmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \end{bmatrix} \begin{bmatrix} b_{11} & b_{12} \\ b_{21} & b_{22} \end{bmatrix} = \begin{bmatrix} a_{11}b_{11} + a_{12}b_{21} & a_{11}b_{12} + a_{12}b_{22} \\ a_{21}b_{11} + a_{22}b_{21} & a_{21}b_{12} + a_{22}b_{22} \end{bmatrix}
矩阵乘法的性质
  • 矩阵乘法不满足交换律:一般 AB≠BAAB \neq BA
  • 满足结合律:(AB)C=A(BC)(AB)C = A(BC)
  • 满足分配律:A(B+C)=AB+ACA(B + C) = AB + AC,(A+B)C=AC+BC(A + B)C = AC + BC

3. 转置​

将矩阵的行列互换,记作 ATA^T:

A=[a11a12a21a22a31a32]⇒AT=[a11a21a31a12a22a32]A = \begin{bmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \\ a_{31} & a_{32} \end{bmatrix} \quad \Rightarrow \quad A^T = \begin{bmatrix} a_{11} & a_{21} & a_{31} \\ a_{12} & a_{22} & a_{32} \end{bmatrix}
转置的性质
  • (AT)T=A(A^T)^T = A:两次转置还原
  • (A+B)T=AT+BT(A + B)^T = A^T + B^T:和的转置等于转置的和
  • (kA)T=kAT(kA)^T = kA^T:数乘后转置等于转置后数乘
  • (AB)T=BTAT(AB)^T = B^T A^T:乘积的转置等于反向转置的乘积

4. 逆矩阵​

方阵 AA 的逆矩阵 A−1A^{-1} 满足:

AA−1=A−1A=IAA^{-1} = A^{-1}A = I

仅当 det⁡(A)≠0\det(A) \neq 0(满秩)时逆矩阵存在。

逆矩阵的性质
  • (A−1)−1=A(A^{-1})^{-1} = A:两次求逆还原
  • (AB)−1=B−1A−1(AB)^{-1} = B^{-1} A^{-1}:乘积的逆等于反向逆的乘积
  • (AT)−1=(A−1)T(A^T)^{-1} = (A^{-1})^T:转置的逆等于逆的转置
  • (kA)−1=1kA−1(k≠0)(kA)^{-1} = \frac{1}{k} A^{-1} \quad (k \neq 0)

二维矩阵的逆公式:

[abcd]−1=1ad−bc[d−b−ca]\begin{bmatrix} a & b \\ c & d \end{bmatrix}^{-1} = \frac{1}{ad - bc} \begin{bmatrix} d & -b \\ -c & a \end{bmatrix}

其中分母 ad−bcad-bc 就是该矩阵的行列式。

高斯消元求逆

对于高维矩阵,逆矩阵没有简单的公式,通用方法是高斯消元法(Gauss-Jordan elimination)。

核心思路:构造增广矩阵 [A ∣ I][A \,|\, I],通过初等行变换将左边化为单位矩阵,右边即得到 A−1A^{-1}:

[A ∣ I]→行变换[I ∣ A−1][A \,|\, I] \xrightarrow{\text{行变换}} [I \,|\, A^{-1}]

以 3×33 \times 3 矩阵为例:

[a11a12a13100a21a22a23010a31a32a33001]→消元[100b11b12b13010b21b22b23001b31b32b33]\left[\begin{array}{ccc|ccc} a_{11} & a_{12} & a_{13} & 1 & 0 & 0 \\ a_{21} & a_{22} & a_{23} & 0 & 1 & 0 \\ a_{31} & a_{32} & a_{33} & 0 & 0 & 1 \end{array}\right] \xrightarrow{\text{消元}} \left[\begin{array}{ccc|ccc} 1 & 0 & 0 & b_{11} & b_{12} & b_{13} \\ 0 & 1 & 0 & b_{21} & b_{22} & b_{23} \\ 0 & 0 & 1 & b_{31} & b_{32} & b_{33} \end{array}\right]

此时右边矩阵 B=(bij)B = (b_{ij}) 就是 A−1A^{-1}。

三种初等行变换:

  1. 交换两行
  2. 某行乘以非零标量
  3. 某行加上另一行的倍数

消元步骤:先从上到下将左矩阵化为上三角(前向消元),再从下到上化为单位矩阵(后向消元)。每步同时操作右边矩阵。

5. 秩(Rank)​

矩阵的秩 rank⁡(A)\operatorname{rank}(A) 是其线性无关的列(或行)的最大个数,即列空间(或行空间)的维数。

rank⁡(A)=dim⁡(colspace(A))=dim⁡(rowspace(A))\operatorname{rank}(A) = \dim(\text{colspace}(A)) = \dim(\text{rowspace}(A))

对于 m×nm \times n 矩阵,rank⁡(A)≤min⁡(m,n)\operatorname{rank}(A) \leq \min(m, n)。

满秩:方阵的秩等于其阶数,即 rank⁡(A)=n\operatorname{rank}(A) = n。此时矩阵可逆(det⁡(A)≠0\det(A) \neq 0),各列向量线性无关。

降秩:rank⁡(A)<n\operatorname{rank}(A) < n,矩阵不可逆(det⁡(A)=0\det(A) = 0),列向量线性相关。降秩变换会将空间"压缩"到更低的维度。

秩的直观理解
  • 秩告诉你矩阵代表的变换保留了输入空间的多少个维度
  • 满秩 3×33 \times 3 矩阵将整个 3D 空间映射到完整的 3D 空间
  • 秩为 2 的 3×33 \times 3 矩阵会将所有点映射到某个平面上
  • 矩阵乘以向量 AvA\bm{v} 的结果总是在 rank⁡(A)\operatorname{rank}(A) 维的空间内

6. 迹(Trace)​

矩阵的迹 tr⁡(A)\operatorname{tr}(A) 是其主对角线元素之和(仅方阵有迹):

tr⁡(A)=∑i=1naii\operatorname{tr}(A) = \sum_{i=1}^{n} a_{ii}

例如:

tr⁡(abcd)=a+d\operatorname{tr}\begin{pmatrix} a & b \\ c & d \end{pmatrix} = a + d
迹的性质
  • tr⁡(A+B)=tr⁡(A)+tr⁡(B)\operatorname{tr}(A + B) = \operatorname{tr}(A) + \operatorname{tr}(B)
  • tr⁡(kA)=k⋅tr⁡(A)\operatorname{tr}(kA) = k \cdot \operatorname{tr}(A)
  • tr⁡(AB)=tr⁡(BA)\operatorname{tr}(AB) = \operatorname{tr}(BA):交换律虽然对矩阵乘法不成立,但迹相等
  • tr⁡(A)=∑λi\operatorname{tr}(A) = \sum \lambda_i:迹等于所有特征值之和

7. 正交矩阵​

正交矩阵

满足 AT=A−1A^T = A^{-1}(即 ATA=IA^T A = I)的方阵称作正交矩阵。

8. 行列视角​

矩阵与向量的乘法可以从列或行的角度来理解。

8.1 列视角:右乘列向量​

设 AA 为 m×nm \times n 矩阵,将其按列拆分:

A=[a1a2…an]A = \begin{bmatrix} \bm{a}_1 & \bm{a}_2 & \dots & \bm{a}_n \end{bmatrix}

其中每个 aj\bm{a}_j 是 mm 维列向量。右乘一个 nn 维列向量 x=(x1,x2,…,xn)T\bm{x} = (x_1, x_2, \dots, x_n)^T:

Ax=[a1a2…an][x1x2⋮xn]=x1a1+x2a2+⋯+xnanA\bm{x} = \begin{bmatrix} \bm{a}_1 & \bm{a}_2 & \dots & \bm{a}_n \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \\ \vdots \\ x_n \end{bmatrix} = x_1 \bm{a}_1 + x_2 \bm{a}_2 + \dots + x_n \bm{a}_n

即 AxA\bm{x} 是 AA 的各列以 xjx_j 为权重的线性组合。

图形学中的应用

右乘列向量在图形学中无处不在:

  • 模型变换:MvM \bm{v} 中,矩阵 MM 的列就是变换后的基向量。例如二维旋转矩阵 R=[cos⁡θ−sin⁡θsin⁡θcos⁡θ]R = \begin{bmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{bmatrix} 的第一列是旋转后的 xx 轴方向,第二列是旋转后的 yy 轴方向。
  • MVP 变换:P⋅V⋅M⋅vP \cdot V \cdot M \cdot \bm{v} 中,每一步都是将向量 v\bm{v} 表达为当前矩阵列向量的线性组合。
  • 坐标转换:从局部坐标变换到世界坐标,本质上就是把顶点坐标作为权重,对模型的三个轴向量做线性组合。

8.2 行视角:左乘行向量​

将 AA 按行拆分:

A=[b1b2⋮bm]A = \begin{bmatrix} \bm{b}_1 \\ \bm{b}_2 \\ \vdots \\ \bm{b}_m \end{bmatrix}

其中每个 bi\bm{b}_i 是 nn 维行向量。左乘一个 mm 维行向量 y=(y1,y2,…,ym)\bm{y} = (y_1, y_2, \dots, y_m):

yA=[y1y2…ym][b1b2⋮bm]=y1b1+y2b2+⋯+ymbm\bm{y} A = \begin{bmatrix} y_1 & y_2 & \dots & y_m \end{bmatrix} \begin{bmatrix} \bm{b}_1 \\ \bm{b}_2 \\ \vdots \\ \bm{b}_m \end{bmatrix} = y_1 \bm{b}_1 + y_2 \bm{b}_2 + \dots + y_m \bm{b}_m

即 yA\bm{y} A 是 AA 的各行以 yiy_i 为权重的线性组合。

应用场景
  • 行变换与消元:高斯消元法中的初等行变换(某行乘以标量、某行加上另一行的倍数),本质就是对矩阵的行做线性组合。
  • 双线性形式:uAv\bm{u} A \bm{v} 中,可以先将 uA\bm{u} A 看作行的线性组合,再与 v\bm{v} 做内积。
  • 法线变换:法线需要乘以逆转置矩阵 (M−1)T(M^{-1})^T,若以行向量左乘,形式更自然。

8.3 两种视角的统一​

右乘列向量和左乘行向量是对同一个线性变换的两种解读:

  • 右乘:用列向量的分量控制列空间的组合 → 回答"输出向量落在哪些方向?"
  • 左乘:用行向量的分量控制行空间的组合 → 回答"输入向量的哪些维度被加权?"

结合使用两种视角,可以更灵活地理解和推导矩阵变换公式。

9. 特征值与特征向量​

特征值与特征向量

对于 n×nn \times n 方阵 AA,若存在非零向量 v\bm{v} 和标量 λ\lambda 满足:

Av=λvA\bm{v} = \lambda \bm{v}

则称 λ\lambda 为 AA 的特征值(eigenvalue),v\bm{v} 为对应的特征向量(eigenvector)。

从几何上看,矩阵 AA 作用在特征向量 v\bm{v} 上,只是将其拉伸或压缩(乘 λ\lambda),不改变方向。这意味着特征向量是变换 AA 的"主轴方向",特征值是该方向的缩放因子。

求解方法​

将定义式移项:

(A−λI)v=0(A - \lambda I)\bm{v} = \bm{0}

要使非零解存在,(A−λI)(A - \lambda I) 必须是奇异矩阵,即:

det⁡(A−λI)=0\det(A - \lambda I) = 0

这个方程称为特征方程,左边是关于 λ\lambda 的 nn 次多项式。

以 2×22 \times 2 矩阵为例:

A=[abcd]⇒det⁡(a−λbcd−λ)=(a−λ)(d−λ)−bc=0A = \begin{bmatrix} a & b \\ c & d \end{bmatrix} \quad \Rightarrow \quad \det\begin{pmatrix} a-\lambda & b \\ c & d-\lambda \end{pmatrix} = (a-\lambda)(d-\lambda) - bc = 0

解出 λ1,λ2\lambda_1, \lambda_2 后,分别代回 (A−λI)v=0(A - \lambda I)\bm{v} = \bm{0} 即可求出对应的特征向量。

特征值的性质
  • tr⁡(A)=∑i=1nλi\operatorname{tr}(A) = \sum_{i=1}^{n} \lambda_i:迹等于所有特征值之和
  • det⁡(A)=∏i=1nλi\det(A) = \prod_{i=1}^{n} \lambda_i:行列式等于所有特征值之积
  • 若 λ\lambda 是 AA 的特征值,则 λk\lambda^k 是 AkA^k 的特征值
  • 若 AA 可逆,则 1/λ1/\lambda 是 A−1A^{-1} 的特征值
  • 实对称矩阵(A=ATA = A^T)的特征值全是实数,且不同特征值对应的特征向量正交
图形学中的应用
  • 主轴与包围盒:对模型顶点坐标计算协方差矩阵,其特征向量就是点云的三个主轴方向,用于生成 OBB(有向包围盒)。
  • 惯量张量:物理模拟中刚体的转动惯量是一个 3×33 \times 3 矩阵,特征向量是惯量主轴,绕主轴旋转最稳定。
  • 法线变换:当模型做了非均匀缩放后,法线需要乘逆转置矩阵 (M−1)T(M^{-1})^T——这本质上是利用特征分解在法线方向做矫正。
  • 谱分解:实对称矩阵可以分解为 A=λ1v1v1T+⋯+λnvnvnTA = \lambda_1 \bm{v}_1\bm{v}_1^T + \dots + \lambda_n \bm{v}_n\bm{v}_n^T,将矩阵拆成各主轴方向独立贡献的和。