矩阵是线性代数最核心的工具。它不仅仅是数字的排列,更是线性变换的数学表示。本文从零开始,梳理矩阵的基本概念与运算。
一、什么是矩阵
一个 矩阵由 行、 列共 个元素组成:
矩阵可以理解为从 到 的线性映射 。
特殊矩阵
| 名称 | 定义 |
|---|---|
| 零矩阵 | 所有元素为 0 |
| 方阵 | |
| 单位矩阵 | 主对角元为 1,其余为 0 |
| 对角矩阵 | 非主对角元全为 0 |
| 对称矩阵 | |
| 上三角矩阵 | 主对角线以下全为 0 |
二、矩阵运算
2.1 加法与数乘
同型矩阵逐元素相加;数乘则每个元素乘以标量:
2.2 矩阵乘法
为 , 为 ,乘积 为 :
注意
矩阵乘法不满足交换律!一般 。
2.3 转置
重要性质:。
2.4 逆矩阵
若存在 使得 ,则称 为 的逆,记作 。
可逆的充要条件:(行列式不为零)。
三、初等行变换与高斯消元
三种初等行变换:
- 交换两行:
- 某行乘非零常数:
- 一行加上另一行的倍数:
每种初等变换对应一个初等矩阵左乘。
高斯消元示例
求解方程组:
写出增广矩阵:
消元过程:
Step 1:
Step 2:
Step 3:
回代:,,。
四、行列式
计算
对 矩阵:
对 矩阵,可按任意一行(或一列)Laplace 展开:
其中 是划去第 行第 列的余子式。
重要性质
- 一行(列)全为 0 → 行列式为 0
- 两行(列)成比例 → 行列式为 0
- 行交换一次 → 行列式变号
五、秩
矩阵的秩 是其线性无关行(或列)的最大数量。
计算方法:化为行最简形(RREF),非零行数即为秩。
秩定理:
秩-零化度定理(对 矩阵):
六、向量空间
核与像
- 零空间(核):
- 列空间(像):
四个基本子空间
| 子空间 | 符号 | 所在空间 | 维数 |
|---|---|---|---|
| 列空间 | |||
| 行空间 | |||
| 零空间 | |||
| 左零空间 |
其中 。
七、特征值与特征向量
若 (),则:
- 称为 特征值
- 称为 特征向量
求解
这个关于 的多项式称为特征多项式。
示例:求 的特征值。
解得 ,。
对应特征向量:
- :解 ,得
- :解 ,得
重要性质
- (迹等于所有特征值之和)
- (行列式等于所有特征值之积)
- 实对称矩阵的特征值全为实数
- 属于不同特征值的特征向量线性无关
八、矩阵对角化
若 有 个线性无关的特征向量,则 可对角化:
其中 , 的列是对应的特征向量。
对角化的好处:
这大大简化了矩阵幂的计算——例如解线性差分方程、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;
}竞赛中常用 高斯-约旦消元 一步到位求行最简形,避免回代。
总结
| 概念 | 本质 |
|---|---|
| 矩阵 | 线性变换的坐标表示 |
| 行列式 | 变换对体积的缩放因子 |
| 秩 | 变换后空间的维数 |
| 核 | 被映射为零的向量集合 |
| 特征值/向量 | 变换中方向不变的向量及其缩放比 |
| 对角化 | 在最优基下化简矩阵 |
线性代数的美在于:所有看似抽象的代数操作,都有直观的几何解释。理解了这一点,矩阵就不再是一堆数字,而是一个有生命的变换。
参考
- Gilbert Strang, Introduction to Linear Algebra
- MIT 18.06 — 经典线性代数公开课
- 3Blue1Brown 线性代数的本质 — 强烈推荐的几何直觉