◎ 图解:矩阵作用于网格,将其拉伸、旋转,或者将高维信息压缩到低维矩阵是什么?
在 Excel 用户眼里,矩阵是一张表。
在程序员眼里,矩阵是二维数组 float[][]。
但在几何世界里,矩阵 $\mathbf{A}$ 是一个动词。
$$\boldsymbol{y} = \mathbf{A}\boldsymbol{x}$$
请不要把它读作“A 乘以 x”。请把它读作:矩阵 $\mathbf{A}$ 作用于向量 $\boldsymbol{x}$,将其变成了 $\boldsymbol{y}$。 这就像函数 $y = f(x)$ 一样,$\mathbf{A}$ 就是那个 $f$。它代表了一种线性变换(Linear Transformation)。
核心视角 1:列向量的线性组合
这是 Day 1 最重要的直觉。如果整篇文章你只能记住一句话,请记住这句:
矩阵与向量的乘积,是矩阵列向量的线性组合。
设矩阵 $\mathbf{A} = [\boldsymbol{c}_1, \boldsymbol{c}_2, \dots, \boldsymbol{c}_n]$,向量 $\boldsymbol{x} = [x_1, x_2, \dots, x_n]^\mathsf{T}$。 那么 $\mathbf{A}\boldsymbol{x}$ 到底在算什么?
$$ \mathbf{A}\boldsymbol{x} = \begin{pmatrix} | & | & & | \\ \boldsymbol{c}_1 & \boldsymbol{c}_2 & \cdots & \boldsymbol{c}_n \\ | & | & & | \end{pmatrix} \begin{pmatrix} x_1 \\ x_2 \\ \vdots \\ x_n \end{pmatrix} = x_1 \boldsymbol{c}_1 + x_2 \boldsymbol{c}_2 + \cdots + x_n \boldsymbol{c}_n $$
几何直觉炸裂时刻:
- $\mathbf{A}$ 里的列向量 $\boldsymbol{c}_1, \boldsymbol{c}_2$,其实是变换后的新基底。
- $\mathbf{A}\begin{pmatrix} 1 \\ 0 \end{pmatrix} = \boldsymbol{c}_1$:第一列是基向量 $\boldsymbol{i}$ 变换后的去向。
- $\mathbf{A}\begin{pmatrix} 0 \\ 1 \end{pmatrix} = \boldsymbol{c}_2$:第二列是基向量 $\boldsymbol{j}$ 变换后的去向。
- $\boldsymbol{x}$ 里的坐标 $(x_1, x_2)$,是指令。
- $\mathbf{A}\boldsymbol{x}$ 的意思是:沿着新基底 $\boldsymbol{c}_1$ 走 $x_1$ 步,再沿着新基底 $\boldsymbol{c}_2$ 走 $x_2$ 步,你现在在哪?
核心视角 2:CR 分解与数据压缩
既然 $\mathbf{A}\boldsymbol{x}$ 是列向量的组合,那我们不得不面对一个尴尬的事实:如果这些列向量很多是“多余”的呢?
想象一个 $1000 \times 1000$ 的大矩阵,但它所有的列,其实都只是第一列的倍数(比如全是一样的列)。 这时候,存储 100 万个数字就太蠢了。我们只需要存一列,然后告诉别人“把这列复制 1000 遍”。
这就是 CR 分解 (Column-Row Decomposition) 的精髓:
所有矩阵 $\mathbf{A}$ 都可以被拆解为“列矩阵”乘以“行矩阵”。
$$\mathbf{A} = \mathbf{C} \mathbf{R}$$
- $\mathbf{C}$ (Columns):提取 $\mathbf{A}$ 中所有线性无关的列(骨架)。
- $\mathbf{R}$ (Rows):提取 $\mathbf{A}$ 的行阶梯形(Row Echelon Form)中的非零行(系数)。
举个栗子
看这个 $3 \times 3$ 矩阵,一眼就能看出列 2 是列 1 的 2 倍,列 3 是列 1 的 3 倍: $$ \mathbf{A} = \begin{pmatrix} 1 & 2 & 3 \\ 4 & 8 & 12 \\ 7 & 14 & 21 \end{pmatrix} $$ 它的秩 $r=1$。我们可以把它拆分为:
$$ \mathbf{A} = \underbrace{\begin{pmatrix} 1 \\ 4 \\ 7 \end{pmatrix}}_{\mathbf{C} \ (3 \times 1)} \underbrace{\begin{pmatrix} 1 & 2 & 3 \end{pmatrix}}_{\mathbf{R} \ (1 \times 3)} $$
这就是压缩! 原矩阵需要存 9 个数。 CR 分解后,只需要存 $3+3=6$ 个数。 如果 $\mathbf{A}$ 是 $1000 \times 1000$ 且秩为 1,原本要存 1,000,000 个数,现在只要存 $1000+1000=2000$ 个数。
几何意义:
- $\mathbf{C}$ 提供了调色盘(基底)。
- $\mathbf{R}$ 提供了配方(如何混合这些基底)。 矩阵乘法 $\mathbf{A} = \mathbf{C}\mathbf{R}$ 本质上就是用 $\mathbf{R}$ 里的配方,去混合 $\mathbf{C}$ 里的颜料,最后还原出整张图像 $\mathbf{A}$。
矩阵乘法:运动的叠加
有了 CR 分解的铺垫,再看通用的矩阵乘法 $\mathbf{C} = \mathbf{A}\mathbf{B}$,就容易理解了。它可以看作是连续运动(复合变换)。
$$\mathbf{C}\boldsymbol{x} = \mathbf{A}(\mathbf{B}\boldsymbol{x})$$
- 先做 $\mathbf{B}$ 变换。
- 再做 $\mathbf{A}$ 变换。
- $\mathbf{C}$ 就是这一套组合拳的最终效果。
这也解释了为什么矩阵乘法不满足交换律 ($\mathbf{A}\mathbf{B} \neq \mathbf{B}\mathbf{A}$)。 想象一下:
- 动作 A:脱鞋。
- 动作 B:穿袜子。 先 A 后 B(脱鞋穿袜),和先 B 后 A(穿袜脱鞋),结果可是天壤之别!
✍️ 课后实战
习题 1:构造旋转矩阵 请构造一个 $2 \times 2$ 矩阵 $\mathbf{A}$,使得它能把所有向量逆时针旋转 90 度。
点击查看解析 / Click to Reveal
【思路】 别去背公式!用我们今天的“列向量视角”。
- 旧基底 $\boldsymbol{i} = \begin{pmatrix} 1 \\ 0 \end{pmatrix}$ 旋转 90 度后去哪了?变成了 $\begin{pmatrix} 0 \\ 1 \end{pmatrix}$。 这就是 $\mathbf{A}$ 的第一列。
- 旧基底 $\boldsymbol{j} = \begin{pmatrix} 0 \\ 1 \end{pmatrix}$ 旋转 90 度后去哪了?变成了 $\begin{pmatrix} -1 \\ 0 \end{pmatrix}$。 这就是 $\mathbf{A}$ 的第二列。
【解】 $$\mathbf{A} = \begin{pmatrix} 0 & -1 \\ 1 & 0 \end{pmatrix}$$
习题 2:理解秩 1 矩阵(CR 分解特例) 设列向量 $\boldsymbol{u} = \begin{pmatrix} 1 \\ 2 \end{pmatrix}$,$\boldsymbol{v} = \begin{pmatrix} 3 \\ 4 \end{pmatrix}$。 计算 $\mathbf{A} = \boldsymbol{u}\boldsymbol{v}^\mathsf{T}$。并思考:矩阵 $\mathbf{A}$ 作用在任意向量 $\boldsymbol{x}$ 上,结果有什么几何特点?
点击查看解析 / Click to Reveal
【解】 $$\mathbf{A} = \begin{pmatrix} 1 \\ 2 \end{pmatrix} \begin{pmatrix} 3 & 4 \end{pmatrix} = \begin{pmatrix} 3 & 4 \\ 6 & 8 \end{pmatrix}$$
几何观察: $\mathbf{A}\boldsymbol{x} = (\boldsymbol{u}\boldsymbol{v}^\mathsf{T})\boldsymbol{x} = \boldsymbol{u}(\boldsymbol{v}^\mathsf{T}\boldsymbol{x})$。 注意 $\boldsymbol{v}^\mathsf{T}\boldsymbol{x}$ 是一个标量(内积,记为 $k$)。 所以 $\mathbf{A}\boldsymbol{x} = k \boldsymbol{u}$。 这意味着:无论输入 $\boldsymbol{x}$ 是什么,输出永远都在 $\boldsymbol{u}$ 这一条直线上!这就是为什么 $\mathbf{A}$ 的秩只有 1。
CR 分解视角: 其实 $\mathbf{A} = \boldsymbol{u}\boldsymbol{v}^\mathsf{T}$ 就是最简单的 CR 分解!
- $\boldsymbol{u}$ 就是列矩阵 $\mathbf{C}$。
- $\boldsymbol{v}^\mathsf{T}$ 就是行矩阵 $\mathbf{R}$。 它完美展示了如何用两个向量来“压缩”一个矩阵。
线性代数重构计划 (The Plan)
- Day 0: 为什么你算对了所有的题,却依然不懂线性代数?
- Day 1: 别把矩阵当数字表 —— 线性变换与数据压缩
- Day 2: 空间的解剖学 —— 四大子空间与正交性
- Day 3: 信息的维度 —— 秩、分块与“打洞”绝技
- Day 4: 算子的灵魂 —— 特征值、几何重数与对角化
- Day 5: 无法对角化的妥协 —— Jordan 标准形与最简结构
- Day 6: 缠绕的算子 —— 可交换矩阵与不变子空间
- Day 7: 矩阵的基因 —— 奇异值分解 (SVD)