这是3Blue1Brown《线性代数的本质》系列核心的一集,聚焦于二维平面的变换。强烈建议视频和本文结合着一起理解。
1、如何理解线性变换
1.1 几何视角
想象在一个充满点的二维平面,线性变换是一套移动所有点的规则,但这个移动要遵守特定的规则:
- 所有直线都应保持直线
- 原点必须保持固定
- 保持网格线平行且等距
线性变换会"线性地"扭曲(翻转、旋转、拉扯)这个网格,但不会弯曲直线或移动原点。
1.2 其它直观感受
比如有一张图片,对图片进行旋转、缩放操作。
2、矩阵
- 二维空间中的任何线性变换,都可以通过观察基向量的变化来完全描述。
- 当给出一个向量坐标时,线性变换后,如何算出这个向量的落点坐标。只要计算两个基向量i和j各自的落点,其它一切就推导得出。
矩阵推导过程:
在一个二维标准系中,基向量是 i ^ \hat{i} i^ 和 j ^ \hat{j} j^
i ^ = [ 1 0 ] , j ^ = [ 0 1 ] \hat{i} = \begin{bmatrix} 1 \\ 0 \end{bmatrix},\quad \hat{j} = \begin{bmatrix} 0 \\ 1 \end{bmatrix} i^=[10],j^=[01]
现在有某种线性变换作用在整个空间上,我们记录基向量分别落在:
i ^ = [ a c ] , j ^ = [ b d ] \hat{i} = \begin{bmatrix} a \\ c \end{bmatrix},\quad \hat{j} = \begin{bmatrix} b \\ d \end{bmatrix} i^=[ac],j^=[bd]
把这两个新的基向量并排放在一起,就得到了描述这个变换的矩阵:
a b c d \] \\begin{bmatrix} a \& b \\\\ c \& d \\end{bmatrix} \[acbd
第一列 [a, c] 是新的 i ^ \hat{i} i^的位置
第二列 [b, d]是新的 j ^ \hat{j} j^的位置
那么可以这么理解:矩阵是线性变换的"动作说明书"。看到矩阵,不应该只看到一堆数字,而应该立刻在脑中浮现出它如何拉扯、旋转、挤压整个空间的动画。
3、计算一个向量经过变换后的位置
现在已经知道变换后的基向量在哪,那么任何一个向量的变换结果都可以通过"线性组合"推导出来。
在3Blue1Brown《线性代数的本质》线性组合、张成空间与基 中已知道:
i ^ \hat{i} i^ 和 j ^ \hat{j} j^ 这两个向量构成了坐标系的基。基向量是理解和测量向量世界的"基本单位",任意二维向量 [ x , y ] [x, y] [x,y] 可写为:
x i ^ + y j ^ x\hat{i} + y\hat{j} xi^+yj^
由于变换是线性的,它保持了加法和数乘的关系。因此,变换后的这个向量就等于:
x * (新的 i ^ \hat{i} i^) + y * (新的 j ^ \hat{j} j^),那就是:
a b c d \] \[ x y \] = x \[ a c \] + y \[ b d \] = \[ a x + b y c x + d y \] \\begin{bmatrix} a \& b \\\\ c \& d \\end{bmatrix} \\begin{bmatrix} x \\\\ y \\end{bmatrix} = x \\begin{bmatrix} a \\\\ c \\end{bmatrix} + y \\begin{bmatrix} b \\\\ d \\end{bmatrix} = \\begin{bmatrix} ax + by \\\\ cx + dy \\end{bmatrix} \[acbd\]\[xy\]=x\[ac\]+y\[bd\]=\[ax+bycx+dy
4、常见的线性变换
| 变换类型 | 几何效果 | 基向量变化 | 变换矩阵 | 说明 |
|---|---|---|---|---|
| 恒等变换 | 无任何改变,向量保持原位 | i ^ → [ 1 0 ] , j ^ → [ 0 1 ] \hat{i} \to \begin{bmatrix}1\\0\end{bmatrix},\ \hat{j} \to \begin{bmatrix}0\\1\end{bmatrix} i^→[10], j^→[01] | [ 1 0 0 1 ] \begin{bmatrix}1 & 0 \\ 0 & 1\end{bmatrix} [1001] | 单位矩阵,不进行任何操作 |
| 水平拉伸(因子 k) | 沿 x 轴拉伸 k 倍 | i ^ → [ k 0 ] , j ^ → [ 0 1 ] \hat{i} \to \begin{bmatrix}k\\0\end{bmatrix},\ \hat{j} \to \begin{bmatrix}0\\1\end{bmatrix} i^→[k0], j^→[01] | [ k 0 0 1 ] \begin{bmatrix}k & 0 \\ 0 & 1\end{bmatrix} [k001] | 若 k=2,则图形变宽一倍 |
| 垂直拉伸(因子 k) | 沿 y 轴拉伸 k 倍 | i ^ → [ 1 0 ] , j ^ → [ 0 k ] \hat{i} \to \begin{bmatrix}1\\0\end{bmatrix},\ \hat{j} \to \begin{bmatrix}0\\k\end{bmatrix} i^→[10], j^→[0k] | [ 1 0 0 k ] \begin{bmatrix}1 & 0 \\ 0 & k\end{bmatrix} [100k] | 图形被纵向拉长 |
| 均匀缩放(因子 s) | 整体放大或缩小 s 倍 | i ^ → [ s 0 ] , j ^ → [ 0 s ] \hat{i} \to \begin{bmatrix}s\\0\end{bmatrix},\ \hat{j} \to \begin{bmatrix}0\\s\end{bmatrix} i^→[s0], j^→[0s] | [ s 0 0 s ] \begin{bmatrix}s & 0 \\ 0 & s\end{bmatrix} [s00s] | 相当于乘以标量 s |
| 90° 逆时针旋转 | 所有向量逆时针转 90° | i ^ → [ 0 1 ] , j ^ → [ − 1 0 ] \hat{i} \to \begin{bmatrix}0\\1\end{bmatrix},\ \hat{j} \to \begin{bmatrix}-1\\0\end{bmatrix} i^→[01], j^→[−10] | [ 0 − 1 1 0 ] \begin{bmatrix}0 & -1 \\ 1 & 0\end{bmatrix} [01−10] | 是正交变换,保持长度不变 |
| θ 角度旋转 | 绕原点逆时针旋转 θ 弧度 | i ^ → [ cos θ sin θ ] , j ^ → [ − sin θ cos θ ] \hat{i} \to \begin{bmatrix}\cos\theta\\\sin\theta\end{bmatrix},\ \hat{j} \to \begin{bmatrix}-\sin\theta\\\cos\theta\end{bmatrix} i^→[cosθsinθ], j^→[−sinθcosθ] | [ cos θ − sin θ sin θ cos θ ] \begin{bmatrix}\cos\theta & -\sin\theta \\ \sin\theta & \cos\theta\end{bmatrix} [cosθsinθ−sinθcosθ] | 旋转矩阵是标准公式 |
| 关于 x 轴反射 | 上下翻转 | i ^ → [ 1 0 ] , j ^ → [ 0 − 1 ] \hat{i} \to \begin{bmatrix}1\\0\end{bmatrix},\ \hat{j} \to \begin{bmatrix}0\\-1\end{bmatrix} i^→[10], j^→[0−1] | [ 1 0 0 − 1 ] \begin{bmatrix}1 & 0 \\ 0 & -1\end{bmatrix} [100−1] | y 坐标取反 |
| 关于 y 轴反射 | 左右翻转 | i ^ → [ − 1 0 ] , j ^ → [ 0 1 ] \hat{i} \to \begin{bmatrix}-1\\0\end{bmatrix},\ \hat{j} \to \begin{bmatrix}0\\1\end{bmatrix} i^→[−10], j^→[01] | [ − 1 0 0 1 ] \begin{bmatrix}-1 & 0 \\ 0 & 1\end{bmatrix} [−1001] | x 坐标取反 |
| 剪切变换(Shear) | 水平"倾斜" | i ^ → [ 1 0 ] , j ^ → [ 1 1 ] \hat{i} \to \begin{bmatrix}1\\0\end{bmatrix},\ \hat{j} \to \begin{bmatrix}1\\1\end{bmatrix} i^→[10], j^→[11] | [ 1 1 0 1 ] \begin{bmatrix}1 & 1 \\ 0 & 1\end{bmatrix} [1011] | 网格仍平行,但角度改变 |
| 投影到 x 轴 | 所有点压到 x 轴上 | i ^ → [ 1 0 ] , j ^ → [ 0 0 ] \hat{i} \to \begin{bmatrix}1\\0\end{bmatrix},\ \hat{j} \to \begin{bmatrix}0\\0\end{bmatrix} i^→[10], j^→[00] | [ 1 0 0 0 ] \begin{bmatrix}1 & 0 \\ 0 & 0\end{bmatrix} [1000] | 非可逆变换,信息丢失 |