© 2015-2020 Jacob Ström、Kalle Åström 与 Tomas Akenine-Möller

正在加载并构建本章……

第 9 章:线性映射





本章讨论线性映射映射就是以一个向量为输入、以另一个向量为输出的函数。线性映射是一类特殊函数:形式简单,却十分强大,因此用途广泛。

例 9.1: 图像压缩
线性映射在实际工程问题中十分常见,图像或视频压缩便是一例。编码时,图像会被划分成若干块,例如图 9.1所示的 $4 \times 4$ 像素块。

我们不直接编码块中每个像素的亮度,而是先对每个块施加一次线性映射。第一步,把 $4\times 4$ 块的各列依次堆叠起来,得到一个 16 维向量 $\vc{x}$。再让它乘以变换矩阵 $\mx{A}$,得到新的 16 维向量 $\vc{y} =\mx{A}\vc{x}$,随后将其重新排成一个 $4 \times 4$ 图像块。由图可见,变换后的各块彼此相似得多:块中的第一个值变化很大,但其余大多数值都接近零(图中为灰色)。因此,这些值可以忽略(置零),或只用很少的比特来表示。解码器得到的 $\hat{\vc{y}}$ 是 $\vc{y}$ 的近似值,因为其中一些值可能已被置零或作了其他近似。然后,解码器执行逆变换 $\hat{\vc{x}} =\mx{A}^{-1} \hat{\vc{y}}$,恢复像素亮度的近似值。

真实的编码器比图中所示更复杂,还包含许多优化。例如,实现线性映射时通常不会直接进行矩阵乘法,而会采用数学上等价但速度更快的方法。
图 9.1: 图像编码器的简化示意图。图像被划分为若干块,每个块都经过一次线性映射。变换后,块中出现许多接近零的值(图中为灰色),因而更容易压缩。
图 9.1: 图像编码器的简化示意图。图像被划分为若干块,每个块都经过一次线性映射。变换后,块中出现许多接近零的值(图中为灰色),因而更容易压缩。
交互式图解 9.2展示了图像不同区域的变化程度如何改变。
交互式图解 9.2: 左:原始图像。中:将要变换的 $4 \times 4$ 像素区域。右:变换后的结果。在图像上拖动鼠标(在移动设备上点按并拖动),即可改变所变换的 $4\times 4$ 区域。请注意,与原始像素相比,变换后区域的变化小得多;变化程度降低,意味着压缩后所需的比特更少。
交互式图解 9.2: 左:原始图像。中:将要变换的 $\hid{4 \times 4}$ 像素区域。右:变换后的结果。在图像上拖动鼠标(在移动设备上点按并拖动),即可改变所变换的 $\hid{4\times 4}$ 区域。请注意,与原始像素相比,变换后区域的变化小得多;变化程度降低,意味着压缩后所需的比特更少。
9.1 引言


本章先回顾普通实数(标量)的映射(即函数),再转向向量映射

定义 9.1: 映射
映射 $F$ 是一条规则:它把集合 $N$ 中的每个元素对应到集合 $M$ 中的一个元素,
\begin{equation} F: N \rightarrow M. \end{equation} (9.1)
这看起来或许有些抽象,但其实你早已接触过映射,只是当时称它为函数。同一件事还可以写成
\begin{equation} y = F(x). \end{equation} (9.2)
也常使用如下形式:
\begin{equation} F: x \rightarrow y, x \in N. \end{equation} (9.3)
例如,图 9.3中的函数 $y = x^2$ 是一条规则:它把每个实数 $x$ 对应到实数 $x^2$。因此,本例中 $N$ 和 $M$ 都等于 $\mathbb{R}$。
$y = x^2$
交互式图解 9.3: 函数 $y=x^2$ 是一个从实数集 $N = \mathbb{R}$ 到实数集 $M = \mathbb{R}$ 的映射。
交互式图解 9.3: 函数 $\hid{y=x^2}$ 是一个从实数集 $\hid{N = \mathbb{R}}$ 到实数集 $\hid{M = \mathbb{R}}$ 的映射。
在线性代数中,传统上使用映射一词,而不用函数,但两者含义相同:从元素 $x$ 出发,得到元素 $y$。我们称 $x$ 映射到 $y$。注意,每个 $x$ 只能映射到一个 $y$。因此,图 9.4中的曲线不可能是函数 $y=f(x)$ 的图像,因为例如 $x=1$ 同时对应 $+1$ 和 $-1$ 两个 $y$ 值。
交互式图解 9.4: 上述曲线不可能是函数 $y=f(x)$ 的图像,因为某些 $x$ 值(例如 $x=1$)对应两个 $y$ 值。
交互式图解 9.4: 上述曲线不可能是函数 $\hid{y=f(x)}$ 的图像,因为某些 $\hid{x}$ 值(例如 $\hid{x=1}$)对应两个 $\hid{y}$ 值。
集合 $N$ 称为该映射定义域,集合 $M$ 称为陪域。陪域中实际能由该映射到达的子集称为映射的值域,也称为映射的,记作 $V_F$。下面的定义对此作了归纳。

定义 9.2: 映射的定义域、陪域与值域
设有映射 $y = F(x)$,其中 $x \in N$、$y \in M$。则 $N$ 是该映射的定义域,$M$ 是该映射的陪域。该映射的值域(或称)是集合 $V_F$,其中
\begin{equation} V_F = \{F(x) | x \in N\}. \end{equation} (9.4)
竖线应读作“使得”或“具有……性质”。本例中的表达式可读作:“$V_F$ 是所有满足 $x$ 属于集合 $N$ 的元素 $F(x)$ 所成的集合。”对于 $y=x^2$,值域是包含零的非负实数集,即 $V_F = \mathbb{R}_{\geq 0}$。因此,本例只能到达陪域的一个子集,也就是 $V_F\subset M$。

在线性代数中,函数的输入和输出都是向量,而非标量。设坐标系的基为 $\vc{e}_1,\vc{e}_2$,向量 $\vc{x}$ 的坐标为 $\begin{pmatrix}x_1 \\ x_2 \\\end{pmatrix}$。现在可以定义函数 $\vc{y} = F(\vc{x})$,把每个 $\vc{x}$ 映射到一个新向量 $\vc{y} = \begin{pmatrix}y_1 \\ y_2 \\\end{pmatrix}$。例如,
\begin{equation} \begin{cases} y_1 = x_1 \\ y_2 = 0 \end{cases} \end{equation} (9.5)
我们无法为这个映射画出简单的函数图像,因为那需要四个维数(输入占两个,输出占两个)。不过,把输入和输出画在同一幅图中,往往能帮助我们直观理解映射。交互式图解 9.5展示了上述映射。你可以移动红色输入箭头 $\vc{x}$,观察蓝色输出箭头 $\vc{y}$ 如何移动。
$\vc{x}$
$\vc{y}$
$\vc{e}_1$
$\vc{e}_2$
交互式图解 9.5: 从 $\vc{x}$(红色向量)到 $\vc{y}$(蓝色向量)的映射示例。可以看到,向量被投影到 $x$ 轴上。
交互式图解 9.5: 本例中函数 $\hid{F}$ 的值域(即像)是 $x$ 轴(以绿色标出),因为函数的所有输出都落在 $\hid{x}$ 轴上。
可以看到,这个映射把任意输入向量投影到 $\vc{e}_1$ 轴上。平面内的任何向量都可以作为输入,所以定义域是 $\mathbb{R}^2$。输出是二维向量,因此陪域也是 $\mathbb{R}^2$;但值域(即像)只有 $\vc{e}_1$ 轴。在图示的第二步中,值域以绿色标出。

下面来看一个稍有趣些的映射:
\begin{equation} \begin{cases} y_1 = \cos(\frac{\pi}{3}) x_1 - \sin(\frac{\pi}{3}) x_2, \\ y_2 = \sin(\frac{\pi}{3}) x_1 + \cos(\frac{\pi}{3}) x_2. \end{cases} \end{equation} (9.6)
可以看到,$x_1$ 与 $x_2$ 前的系数组成了旋转 $\pi/3$ 弧度的旋转矩阵(参见定义 6.10)。交互式图解 9.6展示了这个映射;输入向量仍以红色标出,输出向量以蓝色标出。
$\vc{x}$
$\vc{y}$
$\vc{e}_1$
$\vc{e}_2$
交互式图解 9.6: 从 $\vc{x}$(红色向量)到 $\vc{y}$(蓝色向量)的映射示例。可以看到,向量绕原点旋转了 $\frac{\pi}{3}$。
交互式图解 9.6: 从 $\hid{\vc{x}}$(红色向量)到 $\hid{\vc{y}}$(蓝色向量)的映射示例。可以看到,向量绕原点旋转了 $\hid{\frac{\pi}{3}}$。
我们已经知道,向量映射就是以一个向量为输入、以另一个向量为输出的函数。接下来将研究何时可以用矩阵来表示这类映射。
9.2 变换矩阵


试用交互式图解 9.6可以看到,输出向量就是输入向量旋转 $\frac{\pi}{3}$ 后的副本。事实上,可以把 式(9.6)写成矩阵形式:
\begin{equation} \begin{pmatrix} y_1 \\ y_2 \end{pmatrix} = \left(\begin{array}{rr} \cos \frac{\pi}{3} & -\sin \frac{\pi}{3} \\ \sin \frac{\pi}{3} & \cos \frac{\pi}{3} \end{array}\right) \begin{pmatrix} x_1 \\ x_2 \end{pmatrix} \end{equation} (9.7)
也可简写为
\begin{equation} \vc{y} = \mx{A} \vc{x}. \end{equation} (9.8)
不难看出,矩阵 $\mx{A}$ 正是 定义 6.10所定义的二维旋转矩阵。当映射能写成矩阵形式 $\vc{y}=\mx{A}\vc{x}$ 时,称 $\mx{A}$ 为该映射的变换矩阵

交互式图解 9.3中的例子也能写成矩阵形式:
\begin{equation} \begin{pmatrix} y_1 \\ y_2 \end{pmatrix} = \left(\begin{array}{rr} 1 & 0 \\ 0 & 0 \end{array}\right) \begin{pmatrix} x_1 \\ x_2 \end{pmatrix}, \end{equation} (9.9)
本例的变换矩阵为 $\left(\begin{array}{rr} 1 & 0 \\ 0 & 0 \end{array}\right)$。于是自然会问:是否每个向量映射都能写成 $\vc{y} = \mx{A} \vc{x}$,其中 $\mx{A}$ 的系数都是常数?答案是否定的。例如,映射
\begin{equation} \begin{cases} y_1 = x_1 x_2 + x_2\\ y_2 = x_1 + e^{x_2} \end{cases} \end{equation} (9.10)
不能写成 $\vc{y} = \mx{A}\vc{x}$。当然,我们可以写成 $\begin{pmatrix} y_1 \\ y_2 \end{pmatrix} = \left(\begin{array}{rr} x_2 & 1 \\ 1 & \frac{e^{x_2}}{x_2} \end{array}\right) \begin{pmatrix} x_1 \\ x_2 \end{pmatrix}$, 但这违反了 $\mx{A}$ 的系数必须为常数、即不得依赖 $\vc{x}$ 的要求。为了研究哪些映射能写成这种形式,我们先引入线性映射的概念。

定义 9.3: 线性映射
若映射 $F$ 满足
\begin{equation} \begin{cases} F( \vc{x}' + \vc{x}'') = F(\vc{x}') + F(\vc{x}''), \\ F( \lambda \vc{x} ) = \lambda F(\vc{x}). \\ \end{cases} \end{equation} (9.11)
则称 $F$ 为线性映射
直观地说,第一条条件表示“先求和再映射”与“先分别映射再求和”的结果相同。第二条条件表示,把输入放大某个倍数,与把输出放大同样倍数,结果相同。

例 9.2: 从购物车到价格
假设一家商店只出售袋装通心粉、罐装阿拉比亚塔酱和巧克力。购物车中的内容可以建模为一个向量空间:两个购物车相加,就是把二者的商品放入同一个购物车;购物车乘以标量,就是把其中各类商品的数量都乘以该标量。当然,让购物车乘以非整数或负数在现实中会遇到问题,这也限制了模型的实际用途。 我们再引入一组“基购物车”:令 $\vc{e}_1$ 表示装有一袋通心粉的购物车,$\vc{e}_2$ 表示装有一罐阿拉比亚塔酱的购物车,$\vc{e}_3$ 表示装有一块巧克力的购物车。那么,每辆购物车 $\vc{x}$ 都可用三个坐标 $(x_1,x_2,x_3)$ 描述,使得 $\vc{x} = x_1 \vc{e}_1 + x_2 \vc{e}_2 + x_3 \vc{e}_3$。

从购物车 $\vc{x}$ 到价格 $y\in\R$ 存在一个映射。引入矩阵 $\vc{A} = \begin{pmatrix}a_{11} & a_{12} & a_{13} \end{pmatrix}$,其中 $a_{11}$、$a_{12}$、$a_{13}$ 分别是一袋通心粉、一罐阿拉比亚塔酱和一块巧克力的价格。于是总价可写成 $y=\mx{A}\vc{x}$。

现实中的这个映射往往是非线性的,例如商店可能推出“买三付二”的促销。不过,把它建模为线性映射通常仍然合理而有用。这里再次体现了数学模型与现实之间的差异——这在数学建模中十分常见。运用数学分析的结论时,必须始终保持理性与批判性思考。即使一袋通心粉的购物车价格是 10,也不意味着你总能按每袋 10 的价格把通心粉卖回商店。

定理 9.1: 线性映射的矩阵形式
映射 $\vc{y}=F(\vc{x})$ 能写成 $\vc{y}=\mx{A}\vc{x}$ 的矩阵形式,当且仅当它是线性的。

要证明该定理,需要证明两个方向:每个线性映射都能写成 $\vc{y}=\mx{A}\vc{x}$;每个形如 $\vc{y}=\mx{A}\vc{x}$ 的映射都是线性的。下面只证明 $\vc{x}$ 和 $\vc{y}$ 都是二维向量的情形;任意维数的证明完全类似。

设 $N$ 与 $M$ 中使用基 $\vc{e}_1,\vc{e}_2$。输入 $\vc{x}$ 与输出 $\vc{y}$ 可在此基下写成
\begin{align} \vc{x} & = x_1 \vc{e}_1 + x_2 \vc{e}_2,\\ \vc{y} & = y_1 \vc{e}_1 + y_2 \vc{e}_2.\\ \end{align} (9.12)
把 $\vc{x}$ 的表达式代入 $\vc{y}=F(\vc{x})$,得到
\begin{equation} \vc{y} = F(\vc{x}) = F(x_1 \vc{e}_1 + x_2 \vc{e}_2), \end{equation} (9.13)
由于 $F$ 是线性的,可以依次使用线性的两条条件:
\begin{equation} \vc{y} = F(x_1 \vc{e}_1) + F(x_2 \vc{e}_2) = x_1F(\vc{e}_1) + x_2F(\vc{e}_2). \end{equation} (9.14)
$F$ 把一个向量映射为另一个向量,因此 $F(\vc{e}_1)$ 也可以在该基下表示。设它在基 $\vc{e}_1,\vc{e}_2$ 下的坐标为 $\begin{pmatrix}a_{11} \\ a_{21} \end{pmatrix}$,则
\begin{equation} F(\vc{e}_1) = a_{11}\vc{e}_1 + a_{21}\vc{e}_2. \end{equation} (9.15)
同理,设
\begin{equation} F(\vc{e}_2) = a_{12}\vc{e}_1 + a_{22}\vc{e}_2. \end{equation} (9.16)
于是可继续展开 $F(\vc{x})$:
\begin{equation} \vc{y} = x_1(a_{11}\vc{e}_1 + a_{21}\vc{e}_2) + x_2(a_{12}\vc{e}_1 + a_{22}\vc{e}_2) = \\ (x_1 a_{11} + x_2 a_{12})\vc{e}_1 + (x_1 a_{21} + x_2 a_{22})\vc{e}_2 \\ \end{equation} (9.17)
式(9.12)第二行比较可知,$y_1=a_{11}x_1+a_{12}x_2$,$y_2=a_{21}x_1+a_{22}x_2$。因此
\begin{equation} \begin{pmatrix} y_1 \\ y_2 \end{pmatrix} = \left(\begin{array}{rr} a_{11} & a_{12} \\ a_{21} & a_{22} \end{array}\right) \begin{pmatrix} x_1 \\ x_2 \end{pmatrix} \end{equation} (9.18)
\begin{equation} \vc{y} = \mx{A}\vc{x}. \end{equation} (9.19)
下面证明逆命题:若 $\vc{y}=\mx{A}\vc{x}$,则该映射是线性的。设输入 $\vc{x}'=x_1'\vc{e}_1+x_2'\vc{e}_2=\begin{pmatrix}x'_1\\x'_2\end{pmatrix}$,另有输入 $\vc{x}''=\begin{pmatrix}x''_1\\x''_2\end{pmatrix}$。由定理 6.1中矩阵运算性质 $(vii)$,第一条线性条件直接成立:
\begin{equation} F(\vc{x}' + \vc{x}'') = \mx{A}(\vc{x}' + \vc{x}'') = \mx{A}\vc{x}' + \mx{A}\vc{x}'' = F(\vc{x}') + F(\vc{x}''). \end{equation} (9.20)
第二条条件同样由矩阵代数得到:
\begin{equation} F(\lambda \vc{x'}) = \mx{A}(\lambda \vc{x}') = \lambda \mx{A} \vc{x}' = \lambda F(\vc{x'}) \end{equation} (9.21)
因为标量 $\lambda$ 可置于矩阵任一侧($\mx{A}\lambda=\lambda\mx{A}$)。证毕。
$\square$


我们经常需要求出某个线性映射的矩阵 $\mx{A}$。下面的定理对此非常有用。

定理 9.2: 基向量的像
对于在基 $\vc{e}_1,\vc{e}_2,\ldots,\vc{e}_n$ 下写成 $\vc{y}=\mx{A}\vc{x}$ 的线性映射 $\vc{y}=F(\vc{x})$,矩阵 $\mx{A}$ 的各列就是各基向量的像: $\vc{a}_{,1}=F(\vc{e}_1),\ \vc{a}_{,2}=F(\vc{e}_2),\ldots,\vc{a}_{,n}=F(\vc{e}_n)$。

这里只证明 $N=M=3$ 的情形;其他 $M$、$N$ 的证明类似。

第一个基向量 $\vc{e}_1=1\vc{e}_1+0\vc{e}_2+0\vc{e}_3$,因而坐标为 $(1,0,0)$。在 $\vc{y}=\mx{A}\vc{x}$ 中代入 $\vc{x}=\begin{pmatrix}1\\0\\0\end{pmatrix}$,得到
\begin{equation} \begin{pmatrix} y_1 \\ y_2 \\ y_3\end{pmatrix} = \left(\begin{array}{rrr} a_{11} & a_{12} & a_{13}\\ a_{21} & a_{22} & a_{23}\\ a_{31} & a_{32} & a_{33}\\ \end{array}\right) \begin{pmatrix} 1 \\ 0 \\ 0 \end{pmatrix} = \left(\begin{array}{r} 1 a_{11} + 0 a_{12} + 0 a_{13}\\ 1 a_{21} + 0 a_{22} + 0 a_{23}\\ 1 a_{31} + 0 a_{32} + 0 a_{33}\\ \end{array}\right) = \begin{pmatrix} a_{11} \\ a_{21} \\ a_{31} \end{pmatrix}, \end{equation} (9.22)
这正是 $\mx{A}$ 的第一列。因此,基向量 $\vc{e}_1$ 的像 $F(\vc{e}_1)$ 就是 $\mx{A}$ 的第一列,记作 $\vc{a}_{,1}$。同理,第二个基向量 $\vc{e}_2=0\vc{e}_1+1\vc{e}_2+0\vc{e}_3$ 的坐标为 $(0,1,0)$,其像为
\begin{equation} \left(\begin{array}{rrr} a_{11} & a_{12} & a_{13}\\ a_{21} & a_{22} & a_{23}\\ a_{31} & a_{32} & a_{33}\\ \end{array}\right) \begin{pmatrix} 0 \\ 1 \\ 0 \end{pmatrix} = \left(\begin{array}{r} 0 a_{11} + 1 a_{12} + 0 a_{13}\\ 0 a_{21} + 1 a_{22} + 0 a_{23}\\ 0 a_{31} + 1 a_{32} + 0 a_{33}\\ \end{array}\right) = \begin{pmatrix} a_{12} \\ a_{22} \\ a_{32} \end{pmatrix}, \end{equation} (9.23)
这就是矩阵 $\mx{A}$ 的第二列 $\vc{a}_{,2}$。对第三个基向量同样可得
\begin{equation} \left(\begin{array}{rrr} a_{11} & a_{12} & a_{13}\\ a_{21} & a_{22} & a_{23}\\ a_{31} & a_{32} & a_{33}\\ \end{array}\right) \begin{pmatrix} 0 \\ 0 \\ 1 \end{pmatrix} = \left(\begin{array}{r} 0 a_{11} + 0 a_{12} + 1 a_{13}\\ 0 a_{21} + 0 a_{22} + 1 a_{23}\\ 0 a_{31} + 0 a_{32} + 1 a_{33}\\ \end{array}\right) = \begin{pmatrix} a_{13} \\ a_{23} \\ a_{33} \end{pmatrix}, \end{equation} (9.24)
这就是 $\mx{A}$ 的第三列。上述论证可推广到任意的 $M$ 和 $N$。
$\square$


利用这一事实,只需观察各基向量在映射下如何变化,就能轻松求出线性映射的矩阵 $\mx{A}$。

例 9.3: 求线性映射的矩阵
线性映射 $\vc{y}=F(\vc{x})$ 将二维向量 $\vc{x}$ 逆时针旋转 $90$ 度。在标准正交基 $\vc{e}_1=(1,0)$、$\vc{e}_2=(0,1)$ 下,求矩阵形式 $\vc{y}=\mx{A}\vc{x}$ 的变换矩阵 $\mx{A}$。

矩阵 $\mx{A}$ 的第一列是第一个基向量 $\vc{e}_1$ 的像。$\vc{e}_1$ 沿 $x$ 轴方向,逆时针旋转 $90$ 度后与 $y$ 轴同向,坐标为 $(0,1)$。因此第一列为 $\vc{a}_{,1}=\begin{pmatrix}0\\1\end{pmatrix}$。

第二列是第二个基向量的像。$\vc{e}_2$ 沿 $y$ 轴方向,逆时针旋转 $90$ 度后坐标为 $(-1,0)$。因此第二列为 $\vc{a}_{,2}=\begin{pmatrix}-1\\0\end{pmatrix}$,从而
\begin{equation} \mx{A} = \left(\begin{array}{rr} 0 & -1 \\ 1 & 0 \\ \end{array}\right) . \end{equation} (9.25)
这一过程见交互式图解 9.7
$\textcolor{#aa0000}{\vc{e}_1 = \left(\begin{array}{c} 1 \\ 0\\ \end{array}\right)}$
$\textcolor{#0000aa}{\vc{F}(\vc{e}_1) = \left(\begin{array}{c} 0 \\ 1\\ \end{array}\right)}$
$\begin{array}{rr} \textcolor{#0000aa}{0} & \hid{-1} \\ \textcolor{#0000aa}{1} & \hid{0} \\ \end{array}$
$\begin{array}{rr} \textcolor{#0000aa}{0} & \hid{-1} \\ \textcolor{#0000aa}{1} & \hid{0} \\ \end{array}$
$\begin{array}{rr} \hid{0} & \textcolor{#00aa00}{-1} \\ \hid{1} & \textcolor{#00aa00}{0} \\ \end{array}$
$\textcolor{#aa0000}{\vc{e}_2 = \left(\begin{array}{c} 0 \\ 1\\ \end{array}\right)}$
$\textcolor{#00aa00}{\vc{F}(\vc{e}_2) = \left(\begin{array}{r} -1 \\ 0\\ \end{array}\right)}$
$\vc{y} = \left(\begin{array}{rr} \hid{0} & \hid{-1} \\ \hid{1} & \hid{0} \\ \end{array}\right) \vc{x}$
交互式图解 9.7: 为求逆时针旋转 $90$ 度的变换矩阵 $\mx{A}$,先考察红色标出的第一个基向量 $\vc{e}_1=\left(\begin{array}{c}1\\0\\\end{array}\right)$。
交互式图解 9.7: 为求逆时针旋转 $\hid{90}$ 度的变换矩阵 $\hid{\mx{A}}$,先考察红色标出的第一个基向量 $\hid{\vc{e}_1=\left(\begin{array}{c}1\\0\\\end{array}\right)}$。
9.3 复合线性映射


设有线性映射 $\vc{y}=F(\vc{x})$,并把输出向量 $\vc{y}$ 输入另一个线性映射 $\vc{z}=G(\vc{y})$。要使这一步可行,$G$ 的定义域必须等于 $F$ 的陪域。例如,若 $G(\vc{y})$ 接受二维向量,即 $G$ 的定义域为 $\mathbb{R}^2$,则 $F$ 的输出也必须是二维向量,也就是说 $F$ 的陪域也必须是 $\mathbb{R}^2$。此时称映射
\begin{equation} \vc{z} = G(F(\vc{x})) \end{equation} (9.26)
为复合映射。

定理 9.3: 线性映射的复合
若 $\vc{y}=F(\vc{x})$ 与 $\vc{z}=G(\vc{y})$ 都是线性映射,则复合映射 $\vc{z}=G(F(\vc{x}))$ 也是线性的。

由于 $\vc{y}=F(\vc{x})$ 是线性映射,可写成矩阵形式 $\vc{y}=\mx{A}\vc{x}$;同理,$\vc{z}=G(\vc{y})$ 可写成 $\vc{z}=\mx{B}\vc{y}$。于是
\begin{equation} \vc{z} = \mx{B}\vc{y} = \mx{B}(\mx{A}\vc{x}) = (\mx{B}\mx{A})\vc{x} = \mx{C}\vc{x}, \end{equation} (9.27)
其中新矩阵 $\mx{C}=\mx{B}\mx{A}$。这正是形如 $\vc{z}=\mx{C}\vc{x}$ 的矩阵方程。根据定理 9.1,从 $\vc{x}$ 到 $\vc{z}$ 的映射也必为线性映射。
$\square$


例 9.4: 线性映射的复合
求一个映射 $F$:先将二维向量旋转 $30$ 度,再把 $x$ 坐标乘以 2。

把问题分成两部分。先求将向量旋转 $30$ 度的映射 $\vc{y}=G(\vc{x})$,再求把 $x$ 坐标加倍的映射 $\vc{z}=H(\vc{y})$。

设 $\mx{A}$ 为 $G$ 的变换矩阵。由 定义 6.10,旋转 $\phi$ 的矩阵为 $ \left(\begin{array}{rr} \cos \phi & -\sin \phi \\ \sin \phi & \cos \phi \end{array}\right).$ 令 $\phi=\frac{\pi}{6}$,得到
\begin{equation} \mx{A} = \left(\begin{array}{rr} \frac{\sqrt{3}}{2} & -\frac{1}{2} \\ \frac{1}{2} & \frac{\sqrt{3}}{2} \end{array}\right). \end{equation} (9.28)
设 $\mx{B}$ 为 $H$ 的变换矩阵。它要把 $x$ 坐标加倍,同时保持 $y$ 坐标不变,因此取
\begin{equation} \mx{B} = \left(\begin{array}{rr} 2 & 0 \\ 0 & 1 \end{array}\right). \end{equation} (9.29)
最后,复合映射 $\vc{z}=H(G(\mx{x}))$ 的变换矩阵 $\mx{C}$ 为
\begin{equation} \mx{C} = \mx{B}\mx{A} =\left(\begin{array}{rr} 2 & 0 \\ 0 & 1 \end{array}\right) \left(\begin{array}{rr} \frac{\sqrt{3}}{2} & -\frac{1}{2} \\ \frac{1}{2} & \frac{\sqrt{3}}{2} \end{array}\right) = \left(\begin{array}{rr} \sqrt{3} & -1 \\ \frac{1}{2} & \frac{\sqrt{3}}{2} \end{array}\right). \end{equation} (9.30)
9.4 逆映射


某些映射会把多个输入 $\vc{x}$ 映射到同一个值 $F(\vc{x})$。例如,在交互式图解 9.5中,我们把点的 $y$ 坐标置零,从而将其投影到 $x$ 轴。于是 $\vc{x}_1=(1,5)$ 和 $\vc{x}_2=(1,2)$ 都映射到同一点 $(1,0)=F(\vc{x}_1)=F(\vc{x}_2)$。但有些映射的结果具有唯一性:若 $\vc{x}_1\neq\vc{x}_2$,则必有 $F(\vc{x}_1)\neq F(\vc{x}_2)$。这样的映射称为单射

定义 9.4: 单射
若任意两个不同的向量 $\vc{x}_1\neq\vc{x}_2$ 总会产生两个不同的像 $F(\vc{x}_1)\neq F(\vc{x}_2)$,则称映射 $y=F(x)$ 是单射
等价地说,若单射的两个像 $F(\vc{x}_1)$ 与 $F(\vc{x}_2)$ 相等,则必有 $\vc{x}_1=\vc{x}_2$。

对于某些映射 $\vc{y}=F(\vc{x})$,只要适当选择 $\vc{x}$,就能到达陪域中的每个 $\vc{y}$。当映射的值域覆盖整个陪域时,称该映射为满射。既是单射又是满射的映射称为双射

定义 9.5: 满射
设映射 $\vc{y}=F(\vc{x})$,其中 $\vc{x}\in N$、$\vc{y}\in M$。若值域 $V_F$ 等于陪域 $M$,即 $V_F=M$,则该映射是满射。

定义 9.6: 双射
若一个映射既是单射又是满射,则称它为双射。
下面通过几个例子判断映射是单射、满射还是双射。

例 9.5: 映射的类型(一)
考察映射 $\vc{y}=F(\vc{x})$:
\begin{equation} \begin{pmatrix} y_1 \\ y_2 \end{pmatrix} = F\left(\begin{pmatrix} x_1 \\ x_2 \end{pmatrix}\right) = \left(\begin{array}{r} e^{x_1} \\ e^{x_2} \end{array}\right) , \end{equation} (9.31)
其中 $\vc{x}$ 属于定义域 $N=\mathbb{R}^2$,输出 $\vc{y}$ 属于陪域 $M=\mathbb{R}^2$。该映射是单射,因为对于不同输入 $\vc{a}$ 与 $\vc{b}$,除非 $\vc{a}=\vc{b}$,否则输出 $\begin{pmatrix}e^{a_1}\\e^{a_2}\end{pmatrix}$ 与 $\begin{pmatrix}e^{b_1}\\e^{b_2}\end{pmatrix}$ 不同。但它不是满射,因为 $e^x>0$ 对所有实数 $x$ 都成立,所以 $y_1$ 与 $y_2$ 不可能取负值。其值域 $V_F$ 仅为象限 $y_1>0,\ y_2>0$,并不等于陪域 $M=\mathbb{R}^2$。既然不是满射,它也不是双射。

例 9.6: 映射的类型(二)
判断映射 $\vc{y}=F(\vc{x})$
\begin{equation} \begin{pmatrix} y_1 \\ y_2 \end{pmatrix} = F\left(\begin{pmatrix} x_1 \\ x_2 \end{pmatrix}\right) = \left(\begin{array}{r} 2 x_1 \\ 3 x_2 \end{array}\right) \end{equation} (9.32)
是否为双射。本例的定义域 $N$ 和陪域 $M$ 都是实数平面 $\mathbb{R}^2$。

先判断它是否为单射。答案显然是肯定的,因为除非 $\vc{a}=\vc{b}$,否则两个不同的输入 $\vc{a}$、$\vc{b}$ 会产生不同的输出 $\begin{pmatrix}2a_1\\3a_2\end{pmatrix}\neq\begin{pmatrix}2b_1\\3b_2\end{pmatrix}$。

对任意输出向量 $\begin{pmatrix}y_1\\y_2\end{pmatrix}$,取输入 $\begin{pmatrix}x_1\\x_2\end{pmatrix}=\begin{pmatrix}\frac{y_1}{2}\\\frac{y_2}{3}\end{pmatrix}$ 即可到达。因此,整个陪域 $M=\mathbb{R}^2$ 都可到达,该映射也是满射。它既是单射又是满射,故为双射。
双射线性映射具有许多有用的性质。例如,它的逆映射很容易求出,下面的定理将说明这一点。

定理 9.4: 逆映射的等价条件
对于从 $\vc{x}\in\mathbb{R}^n$ 到 $\vc{y}\in\mathbb{R}^n$ 的线性映射 $\vc{y}=F(\vc{x})$,下列三个命题等价:
  1. 映射 $F$ 是双射。
  2. $F$ 的变换矩阵可逆。
  3. 基向量 $\vc{e}_1,\ldots,\vc{e}_n$ 的像 $F(\vc{e}_1),\ldots,F(\vc{e}_n)$ 构成 $\mathbb{R}^n$ 的一组基。

$(i)\Rightarrow(ii)$:若 $F$ 是双射,则对每个 $\vc{y}$,方程 $F(\vc{x})=\vc{y}$ 都有唯一解 $\vc{x}$。具体来说,$F$ 是单射,所以 $F(\vc{u})=F(\vc{v})$ 时必有 $\vc{u}=\vc{v}$;$F$ 又是满射,所以每个 $\vc{y}$ 都能由适当的 $\vc{x}$ 到达。$F$ 的矩阵形式为 $\vc{y}=\mx{A}\vc{x}$。根据 定理 6.9,该方程对每个 $\vc{y}$ 都有唯一解,等价于 $\mx{A}$ 可逆。

$(ii)\Rightarrow(iii)$:根据 定理 9.2,$F(\vc{e}_1)$ 正是 $\mx{A}$ 的第一列,$F(\vc{e}_2)$ 是第二列,依此类推。定理 6.9说明,若 $\mx{A}$ 可逆,则其各列张成 $\mathbb{R}^n$,即构成 $\mathbb{R}^n$ 的一组基。

$(iii)\Rightarrow(i)$:先证明 $(iii)$ 蕴含 $F$ 为单射,即若 $F(\vc{u})=F(\vc{v})$,则必有 $\vc{u}=\vc{v}$。

写成 $\vc{u}=u_1\vc{e}_1+\cdots+u_n\vc{e}_n$、$\vc{v}=v_1\vc{e}_1+\cdots+v_n\vc{e}_n$。已知 $F(\vc{u})=F(\vc{v})$,故 $F(\vc{u})-F(\vc{v})=\vc{0}$,等价于
\begin{equation} F(u_1 \vc{e}_1 + u_2 \vc{e}_2 + \ldots + u_n\vc{e}_n) - F(v_1 \vc{e}_1 + v_2 \vc{e}_2 + \ldots + v_n\vc{e}_n) = \vc{0}. \end{equation} (9.33)
由于 $F$ 是线性的,可写成
\begin{equation} u_1 F(\vc{e}_1) + u_2 F(\vc{e}_2) + \ldots + u_nF(\vc{e}_n) - \Big( v_1 F(\vc{e}_1) + v_2 F(\vc{e}_2) + \ldots + v_nF(\vc{e}_n)\Big) = \vc{0}. \end{equation} (9.34)
合并同类项,得到
\begin{equation} (u_1-v_1) F(\vc{e}_1) + (u_2 - v_2) F(\vc{e}_2) + \ldots + (u_n - v_n) F(\vc{e}_n) = \vc{0}, \end{equation} (9.35)
但 $F(\vc{e}_1),F(\vc{e}_2),\ldots,F(\vc{e}_n)$ 线性无关,根据 定理 5.2,此式只有解 $(u_1-v_1)=\cdots=(u_n-v_n)=0$。因此 $\vc{u}=\vc{v}$,$F$ 是单射。

再证明 $\vc{y}=F(\vc{x})$ 是满射,即可通过适当选择 $\vc{x}$ 到达每个 $\vc{y}$。

将 $\vc{x}$ 写成 $\vc{x}=x_1\vc{e}_1+\cdots+x_n\vc{e}_n$,则 $\vc{y}=F(\vc{x})$ 可写成
\begin{equation} \vc{y} = F(\vc{x}) = F(x_1\vc{e}_1 + x_2\vc{e}_2 + \ldots + x_n\vc{e}_n). \end{equation} (9.36)
由 $F$ 的线性性,上式等于
\begin{equation} \vc{y} = x_1F(\vc{e}_1) + x_2F(\vc{e}_2) + \ldots x_n F(\vc{e}_n), \end{equation} (9.37)
由于 $F(\vc{e}_1),\ldots,F(\vc{e}_n)$ 构成 $\mathbb{R}^n$ 的一组基,它们张成整个 $\mathbb{R}^n$,所以能到达任意 $\vc{y}\in\mathbb{R}^n$。故 $F$ 是满射。$F$ 同时为单射与满射,因此是双射。证毕。
$\square$


由上述证明立即得到下面的定理。

定理 9.5: 逆映射矩阵
设双射线性映射 $\vc{y}=F(\vc{x})$ 的变换矩阵为 $\mx{A}$,则逆映射 $\vc{x}=F^{-1}(\vc{y})$ 也是线性的,其变换矩阵为 $\inv{\mx{A}}$。

我们要寻找满足 $\inv{F}(F(\vc{x}))=\vc{x}$ 的映射 $\inv{F}$。

将 $\vc{y}=F(\vc{x})$ 写成矩阵形式:
\begin{equation} \vc{y} = \mx{A}\vc{x}. \end{equation} (9.38)
两边左乘 $\inv{\mx{A}}$,得到
\begin{equation} \inv{\mx{A}}\vc{y} = \inv{\mx{A}}\mx{A}\vc{x} = \mx{I} \vc{x} = \vc{x}, \end{equation} (9.39)
\begin{equation} \vc{x} = \inv{\mx{A}} \vc{y}. \end{equation} (9.40)
这正是所求映射:输入 $\vc{y}=\mx{A}\vc{x}$,输出便是 $\vc{x}$。因此 $\inv{\mx{A}}$ 必为 $\inv{F}$ 的变换矩阵;而 $\inv{F}$ 能写成这种矩阵形式,所以它是线性的。
$\square$


交互式图解 9.8展示了如何利用线性映射生成阴影效果。

例 9.7: 阴影
设有一个过原点的平面,其法向量为 $\vc{n}=(0,1,0)$。再设太阳距原点无穷远,光线方向为 $\vc{r}=(0.5,1.0,0.25)$。平面上方有许多点,我们想求它们在平面上的阴影。已知这种阴影投影可以表示为线性映射。

我们当然可以逐点计算阴影,但若能构造线性映射 $\vc{y}=\mx{A}\vc{x}$,只需让点 $\vc{x}$ 乘以矩阵 $\mx{A}$,就能直接得到投影点 $\vc{y}$,会方便得多。由于问题是线性的,这样的构造应当可行。

这里利用 定理 9.2:为求 $\mx{A}$,只需考察三个单位向量如何变化。变换矩阵 $\mx{A}$ 的第一列就是第一个单位向量 $\vc{e}_1=(1,0,0)$ 的像,其余各列同理。因此,只要求出点 $(1,0,0)$ 的阴影落在平面何处,就得到了 $\mx{A}$ 的第一列。

平面可写成 $ax+by+cz+d=0$。已知法向量为 $(0,1,0)$,故方程化为 $y+d=0$;又因原点 $(0,0,0)$ 在平面上,进一步化为 $y=0$。现在,从点 $(p_x,p_y,p_z)$ 出发,沿太阳光方向 $(r_x,r_y,r_z)$ 作直线:
\begin{equation} \begin{pmatrix} x \\ y \\ z \end{pmatrix}= \begin{pmatrix} p_x \\ p_y \\ p_z \end{pmatrix}+ \lambda \begin{pmatrix} r_x \\ r_y \\ r_z \end{pmatrix} = \begin{pmatrix} p_x \\ p_y \\ p_z \end{pmatrix}+ \lambda \begin{pmatrix} 0.5 \\ 1.0 \\ 0.25 \end{pmatrix}. \end{equation} (9.41)
将直线方程代入平面方程,可求得从 $P$ 到交点所需的参数 $\lambda$。代入 $y=0$ 得 $p_y+1.0\lambda=0$。对第一个单位向量 $\vc{e}_1=(1,0,0)$,有 $p_y=0$,故 $\lambda=0$,交点为 $(1,0,0)+0\vc{r}=(1,0,0)$,这就是 $\mx{A}$ 的第一列。对第二个单位向量 $\vc{e}_2=(0,1,0)$,有 $p_y=1$,从而 $1+\lambda=0$,即 $\lambda=-1$。因此第二列为 $(0,1,0)+(-1)(0.5,1.0,0.25)=(-0.5,0,-0.25)$。第三个单位向量 $\vc{e}_3=(0,0,1)$ 对应 $\lambda=0$,故最后一列为 $(0,0,1)-0\vc{r}=(0,0,1)$。

综上,我们构造了线性映射 $\vc{y}=\mx{A}\vc{x}$,将点 $\vc{x}$ 映射到它的阴影 $\vc{y}$。其中
\begin{equation} \mx{A} = \left(\begin{array}{ccc} 1 & -0.5 & 0\\ 0 & 0 & 0\\ 0 & -0.25 & 1\\ \end{array}\right). \end{equation} (9.42)
下图使用了这一矩阵。立方体的每个点都通过 $\vc{y}=\mx{A}\vc{x}$ 投影到平面上。用投影后的坐标而非原坐标绘制立方体各个面,就能画出立方体的阴影。
$O$
$\vc{n}$
$\vc{r}$
$P$
$P'$
$\vc{x}$
$\vc{y}=\mx{A}\vc{x}$
交互式图解 9.8: 本图展示如何利用线性映射生成阴影。首先构造一个线性映射,将点 $P$ 沿向量 $\vc{r}$ 投影到平面上的点 $P'$。
交互式图解 9.8: 本图展示如何利用线性映射生成阴影。首先构造一个线性映射,将点 $\hid{P}$ 沿向量 $\hid{\vc{r}}$ 投影到平面上的点 $\hid{P}'$。
有了这个阴影例子,下面可以判断该映射是否为双射。

例 9.8: 阴影映射的双射性
判断例 9.7中的映射是否为双射。

根据定理 9.4,映射 $\vc{y}=\mx{A}\vc{x}$ 为双射,当且仅当变换矩阵 $\mx{A}$ 可逆。行列式章节的定理 7.10告诉我们,矩阵可逆必须以行列式非零为前提。然而这里的行列式
\begin{equation} \det(\mx{A}) = \left|\begin{array}{ccc} 1 & -0.5 & 0\\ 0 & 0 & 0\\ 0 & -0.25 & 1\\ \end{array}\right| \end{equation} (9.43)
必为零,因为第二行全为零(参见定理 7.1的 $(iv)$ 与 $(vii)$)。因此该映射不可能是双射。

这也符合直觉。已知一组点和太阳光方向,可以计算各点的阴影;但只知道阴影和太阳光方向时,无法恢复原点的位置,因为只知道原点所在的方向,不知道沿该方向的距离。因此,这个操作不可逆;用严格术语说,它不是双射。

例 9.9: 再论图像压缩
例 9.1中,映射 $\vc{y}=\mx{A}\vc{x}$ 是压缩过程的一部分。这个映射是否很可能为双射?

答案是肯定的。为了让压缩有用,只要分配足够多的比特,解码后的图像就应与原图相同。若映射不是双射,信息会在变换步骤 $\vc{y}=\mx{A}\vc{x}$ 中丢失。无论把 $\vc{y}$ 保存得多精确、用多少比特描述它,都无法恢复 $\vc{x}$。反之,若映射是双射,只需用 $\vc{x}=\inv{\mx{A}}\vc{y}$ 即可恢复 $\vc{x}$。


第 8 章:秩(上一章) 第 10 章:特征值与特征向量(下一章)