跳至主要内容
数学
线性代数 · 从零开始

让矩阵,动起整个平面

屏幕上的图片被旋转、拉伸或者推斜时,图上的每一个点都同时移动。一条规则放进一个点、给出另一个点,就像一个函数:函数页面里一个输入只给出一个输出,这里只是把数换成了点。如果要逐个记录每一个点去了哪里,这份记录永远也写不完。幸运的是,有一类变换只需要两个箭头就够了:它们让网格线保持笔直、平行、间距均匀,并且原点不动。两个箭头就够了。这样的箭头叫作向量,它们能带动整幅图。

点 (2, 1) 表示从原点向右走 2,再向上走 1。这里其实用到了两个基本方向。假设我们改变这两个方向,并让每个点仍然按原来的倍数组合它们,整个图形会怎样变化呢?我们先把这两个方向画清楚,再看矩阵中的两列怎样记录它们的新位置。

01用两个方向,定位平面上的每一个点

向量表示一个有方向的位移:(1,0)(1,0) 表示向右 1、向上 0;(0,1)(0,1) 表示向右 0、向上 1。先从原点画出这两个箭头。接下来记录每个箭头:把横坐标写在上,纵坐标写在下,组成一列。再把两列并排放在一起,就得到一个长方形的数表,叫作矩阵。横着读的是行,竖着读的是列。下面用相同颜色把每一列和对应的箭头连起来。

标准基向量
e₁ (1, 0)e₂ (0, 1)-2-2-1-11122xy0浅灰坐标轴保持不动 · 原网格每格为 1
I =
10\begin{matrix}1\\0\end{matrix}
01\begin{matrix}0\\1\end{matrix}
第一列 → e₁第二列 → e₂

标准正交归一基

ortho
正交:两个方向互相垂直,夹角是 90°。
normal
归一:每个向量的模(长度)都是 1。
基
两个独立的方向。分别伸缩再相加,就能到达任意一点,而且每个点的这对系数都是唯一的。
(xy)=x(10)⏟e1+y(01)⏟e2\begin{pmatrix}x\\y\end{pmatrix}=x\underbrace{\begin{pmatrix}1\\0\end{pmatrix}}_{\mathbf e_1}+y\underbrace{\begin{pmatrix}0\\1\end{pmatrix}}_{\mathbf e_2}

沿着 II 的每一列往下读:第一列就是 e1e_1,第二列就是 e2e_2。这是单位矩阵。把它当成变换,它让两个基向量都留在原位,因此所有点都保持不变。

I(xy)=(xy)I\begin{pmatrix}x\\y\end{pmatrix}=\begin{pmatrix}x\\y\end{pmatrix}

02改变两列,整个平面随之改变

在初始示例中,第一列让 e1e_1 去往 u=(2,1)u=(2,1),第二列让 e2e_2 去往 v=(1,2)v=(1,2)。我们规定其他点仍然使用原来的两个倍数:例如,一份 e1e_1 加一份 e2e_2,变成一份 uu 加一份 vv。虚线箭头先标出目标,点击播放,就能跟随这同一个相加过程,看整幅图怎样移动。

先找出两个目标向量0%
0%
P′ (1, 1)u (1, 0)v (0, 1)-5-4-3-3-2-2-1-111223345xy0浅灰坐标轴保持不动 · 原网格每格为 1
移动中的点 P′=(11)P'=\begin{pmatrix}1\\1\end{pmatrix}阴影面积 1

目标矩阵

A =
u=(21)u=\begin{pmatrix}2\\1\end{pmatrix}v=(12)v=\begin{pmatrix}1\\2\end{pmatrix}
u 与 v 相互独立,可以作为一组新基。但它们并不垂直,长度也不是 1:基不一定是正交归一的。

跟随一个点

x 和 y 表示分别取多少份基向量。试试负数:那一步会朝相反方向走。

1
1
A(11)=1 (21)+1 (12)=(33)A\begin{pmatrix}1\\1\end{pmatrix}=1\,\begin{pmatrix}2\\1\end{pmatrix}+1\,\begin{pmatrix}1\\2\end{pmatrix}=\begin{pmatrix}3\\3\end{pmatrix}

上式算出终点。图中的彩色实线表示一段位移,另一种颜色的虚线从这段的终点继续,表示加上第二段位移。两段合起来,就是同一个加法过程。

究竟是什么变了?

浅灰笛卡尔坐标轴是固定的尺子。我们主动移动点和彩色网格,尺子不动。示例中的 P=(1,1)P = (1, 1) 变成固定坐标轴上的 P′=(3,3)P' = (3, 3);相对于新的基,这个像仍然是“一份 uu 加一份 vv”。只给原地不动的点换一种坐标描述,是另一件事。

A=(abcd),A(xy)=x(ac)+y(bd)A=\begin{pmatrix}a&b\\c&d\end{pmatrix},\qquad A\begin{pmatrix}x\\y\end{pmatrix}=x\begin{pmatrix}a\\c\end{pmatrix}+y\begin{pmatrix}b\\d\end{pmatrix}

这就是为什么两列能决定整个变换:任意向量都能写成原来两个基向量的倍数之和。线性变换保留这种加法和倍数关系。因此直线仍是直线(或退化成点),网格线保持平行或发生重合与退化,原点始终不动。

读一个矩阵,先看它的两列

A =
21\begin{matrix}2\\1\end{matrix}
12\begin{matrix}1\\2\end{matrix}
第一列 → u第二列 → v

第一列是 (1, 0) 的落点,第二列是 (0, 1) 的落点。其余所有点,都按原来的倍数相加而得到。两个目标方向独立时,它们撑起新的网格;它们共线时,一个维度就被压掉了。

屏幕只显示无限平面的一小部分。这些是线性变换:它们保留向量加法和数乘,并让原点保持不动。平移则属于另一类变换。