跳到正文

矩阵入门:从高斯消元到特征值

矩阵是线性代数最核心的工具。它不仅仅是数字的排列,更是线性变换的数学表示。本文从零开始,梳理矩阵的基本概念与运算。

一、什么是矩阵

一个 m×nm \times n 矩阵由 mm 行、nn 列共 mnmn 个元素组成:

A=[a11a12a1na21a22a2nam1am2amn]A = \begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1n} \\ a_{21} & a_{22} & \cdots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{m1} & a_{m2} & \cdots & a_{mn} \end{bmatrix}

矩阵可以理解为Rn\mathbb{R}^nRm\mathbb{R}^m 的线性映射 T(x)=AxT(\mathbf{x}) = A\mathbf{x}

特殊矩阵

名称定义
零矩阵所有元素为 0
方阵m=nm = n
单位矩阵 II主对角元为 1,其余为 0
对角矩阵非主对角元全为 0
对称矩阵AT=AA^T = A
上三角矩阵主对角线以下全为 0

二、矩阵运算

2.1 加法与数乘

同型矩阵逐元素相加;数乘则每个元素乘以标量:

(A+B)ij=aij+bij,(cA)ij=caij(A + B)_{ij} = a_{ij} + b_{ij}, \qquad (cA)_{ij} = c \cdot a_{ij}

2.2 矩阵乘法

AAm×pm \times pBBp×np \times n,乘积 C=ABC = ABm×nm \times n

cij=k=1paikbkjc_{ij} = \sum_{k=1}^{p} a_{ik}\, b_{kj}

注意

矩阵乘法不满足交换律!一般 ABBAAB \neq BA

2.3 转置

(AT)ij=aji(A^T)_{ij} = a_{ji}

重要性质:(AB)T=BTAT(AB)^T = B^T A^T

2.4 逆矩阵

若存在 BB 使得 AB=BA=IAB = BA = I,则称 BBAA 的逆,记作 A1A^{-1}

可逆的充要条件det(A)0\det(A) \neq 0(行列式不为零)。


三、初等行变换与高斯消元

三种初等行变换

  1. 交换两行RiRjR_i \leftrightarrow R_j
  2. 某行乘非零常数RiλRiR_i \leftarrow \lambda R_i
  3. 一行加上另一行的倍数RiRi+λRjR_i \leftarrow R_i + \lambda R_j

每种初等变换对应一个初等矩阵左乘。

高斯消元示例

求解方程组:

{2x+yz=83xy+2z=112x+y+2z=3\begin{cases} 2x + y - z = 8 \\ -3x - y + 2z = -11 \\ -2x + y + 2z = -3 \end{cases}

写出增广矩阵

[2118312112123]\left[\begin{array}{ccc|c} 2 & 1 & -1 & 8 \\ -3 & -1 & 2 & -11 \\ -2 & 1 & 2 & -3 \end{array}\right]

消元过程

Step 1R2R2+32R1R_2 \leftarrow R_2 + \frac{3}{2}R_1

[21180121212123]\left[\begin{array}{ccc|c} 2 & 1 & -1 & 8 \\ 0 & \frac{1}{2} & \frac{1}{2} & 1 \\ -2 & 1 & 2 & -3 \end{array}\right]

Step 2R3R3+R1R_3 \leftarrow R_3 + R_1

[21180121210215]\left[\begin{array}{ccc|c} 2 & 1 & -1 & 8 \\ 0 & \frac{1}{2} & \frac{1}{2} & 1 \\ 0 & 2 & 1 & 5 \end{array}\right]

Step 3R3R34R2R_3 \leftarrow R_3 - 4R_2

[21180121210011]\left[\begin{array}{ccc|c} 2 & 1 & -1 & 8 \\ 0 & \frac{1}{2} & \frac{1}{2} & 1 \\ 0 & 0 & -1 & 1 \end{array}\right]

回代z=1z = -1y=3y = 3x=2x = 2


四、行列式

计算

2×22 \times 2 矩阵:

det[abcd]=adbc\det\begin{bmatrix} a & b \\ c & d \end{bmatrix} = ad - bc

n×nn \times n 矩阵,可按任意一行(或一列)Laplace 展开

det(A)=j=1n(1)i+jaijdet(Mij)\det(A) = \sum_{j=1}^{n} (-1)^{i+j} a_{ij} \det(M_{ij})

其中 MijM_{ij} 是划去第 ii 行第 jj 列的余子式

重要性质

  • det(AB)=det(A)det(B)\det(AB) = \det(A) \cdot \det(B)
  • det(AT)=det(A)\det(A^T) = \det(A)
  • det(A1)=1det(A)\det(A^{-1}) = \frac{1}{\det(A)}
  • 一行(列)全为 0 → 行列式为 0
  • 两行(列)成比例 → 行列式为 0
  • 行交换一次 → 行列式变号

五、秩

矩阵的 rank(A)\operatorname{rank}(A) 是其线性无关行(或列)的最大数量。

计算方法:化为行最简形(RREF),非零行数即为秩。

秩定理rank(A)=rank(AT)\operatorname{rank}(A) = \operatorname{rank}(A^T)

秩-零化度定理(对 m×nm \times n 矩阵):

rank(A)+dimker(A)=n\operatorname{rank}(A) + \dim\ker(A) = n


六、向量空间

核与像

  • 零空间(核)ker(A)={xAx=0}\ker(A) = \{\mathbf{x} \mid A\mathbf{x} = \mathbf{0}\}
  • 列空间(像)Im(A)={AxxRn}\operatorname{Im}(A) = \{A\mathbf{x} \mid \mathbf{x} \in \mathbb{R}^n\}

四个基本子空间

子空间符号所在空间维数
列空间Col(A)\operatorname{Col}(A)Rm\mathbb{R}^mrr
行空间Row(A)\operatorname{Row}(A)Rn\mathbb{R}^nrr
零空间Nul(A)\operatorname{Nul}(A)Rn\mathbb{R}^nnrn - r
左零空间Nul(AT)\operatorname{Nul}(A^T)Rm\mathbb{R}^mmrm - r

其中 r=rank(A)r = \operatorname{rank}(A)


七、特征值与特征向量

Av=λvA\mathbf{v} = \lambda \mathbf{v}v0\mathbf{v} \neq \mathbf{0}),则:

  • λ\lambda 称为 特征值
  • v\mathbf{v} 称为 特征向量

求解

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

这个关于 λ\lambda 的多项式称为特征多项式

示例:求 A=[2112]A = \begin{bmatrix} 2 & 1 \\ 1 & 2 \end{bmatrix} 的特征值。

det(AλI)=2λ112λ=(2λ)21=λ24λ+3=0\det(A - \lambda I) = \begin{vmatrix} 2-\lambda & 1 \\ 1 & 2-\lambda \end{vmatrix} = (2-\lambda)^2 - 1 = \lambda^2 - 4\lambda + 3 = 0

解得 λ1=3\lambda_1 = 3λ2=1\lambda_2 = 1

对应特征向量:

  • λ1=3\lambda_1 = 3:解 (A3I)v=0(A - 3I)\mathbf{v} = 0,得 v1=[11]\mathbf{v}_1 = \begin{bmatrix} 1 \\ 1 \end{bmatrix}
  • λ2=1\lambda_2 = 1:解 (AI)v=0(A - I)\mathbf{v} = 0,得 v2=[11]\mathbf{v}_2 = \begin{bmatrix} 1 \\ -1 \end{bmatrix}

重要性质

  • tr(A)=λi\operatorname{tr}(A) = \sum \lambda_i(迹等于所有特征值之和)
  • det(A)=λi\det(A) = \prod \lambda_i(行列式等于所有特征值之积)
  • 实对称矩阵的特征值全为实数
  • 属于不同特征值的特征向量线性无关

八、矩阵对角化

AAnn 个线性无关的特征向量,则 AA 可对角化:

A=PDP1A = PDP^{-1}

其中 D=diag(λ1,,λn)D = \operatorname{diag}(\lambda_1, \ldots, \lambda_n)PP 的列是对应的特征向量。

对角化的好处

Ak=PDkP1=P[λ1kλnk]P1A^k = PD^kP^{-1} = P \begin{bmatrix} \lambda_1^k & & \\ & \ddots & \\ & & \lambda_n^k \end{bmatrix} P^{-1}

这大大简化了矩阵幂的计算——例如解线性差分方程、Markov 链等。


九、C++ 实现:高斯消元

cpp
#include <bits/stdc++.h>
using namespace std;

const double EPS = 1e-9;

// 高斯消元,返回解向量
// a 是 n×(n+1) 增广矩阵
vector<double> gauss(vector<vector<double>> a) {
    int n = a.size();
    for (int col = 0, row = 0; col < n; col++) {
        // 选主元(列最大值)
        int pivot = row;
        for (int i = row + 1; i < n; i++)
            if (fabs(a[i][col]) > fabs(a[pivot][col]))
                pivot = i;

        if (fabs(a[pivot][col]) < EPS) continue; // 奇异

        swap(a[row], a[pivot]);

        // 消去下方各行
        for (int i = row + 1; i < n; i++) {
            double factor = a[i][col] / a[row][col];
            for (int j = col; j <= n; j++)
                a[i][j] -= factor * a[row][j];
        }
        row++;
    }

    // 回代
    vector<double> x(n, 0);
    for (int i = n - 1; i >= 0; i--) {
        double sum = a[i][n];
        for (int j = i + 1; j < n; j++)
            sum -= a[i][j] * x[j];
        x[i] = sum / a[i][i];
    }
    return x;
}

竞赛中常用 高斯-约旦消元 一步到位求行最简形,避免回代。


总结

概念本质
矩阵线性变换的坐标表示
行列式变换对体积的缩放因子
变换后空间的维数
被映射为零的向量集合
特征值/向量变换中方向不变的向量及其缩放比
对角化在最优基下化简矩阵

线性代数的美在于:所有看似抽象的代数操作,都有直观的几何解释。理解了这一点,矩阵就不再是一堆数字,而是一个有生命的变换。


参考

用 ❤️ 和 VitePress 构建