© 2015-2020 Jacob Ström, Kalle Åström, and Tomas Akenine-Möller

正在加载并构建本章……

第 9 章:线性映射





本章讨论 线性映射 (linear mapping)。映射 (mapping) 就是一个函数, 它接受一个向量作为输入,输出另一个向量。线性映射 是一种 特殊的函数,它既简单 又强大,因此非常有用。

例 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)
也被使用。例如函数 $y = x^2$,如 图 9.3 所示,是一条规则,对于 实数集合 $\mathbb{R}$ 中的每个元素,给出 实数集合 $\mathbb{R}$ 中的另一个元素。因此,在本例中,$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$ 对应两个 $y$ 值,即 $+1$ 和 $-1$。
交互图 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$ 是 $M$ 的子集。

线性代数中,函数的输入和输出是向量 而非标量。设我们有一个坐标系 $\vc{e}_1,\vc{e}_2$,且 $\begin{pmatrix}x_1 \\ x_2 \\\end{pmatrix}$ 是 向量 $\vc{x}$ 的坐标。我们现在可以有一个函数 $\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$ 前的系数类似于旋转矩阵(见 定义 6.10), 旋转 $\pi/3$ 弧度。 该 映射交互图 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第 6 章 中所定义的 二维旋转矩阵。当 映射 可以写成矩阵 形式,即 $\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)
第一个条件的直观描述是:先对和取函数值,还是先分别取函数值再求和,结果应该相同。第二个条件说明:将输入放大一定倍数,与将输出放大相同倍数,结果相同。

例 9.2: 购物车与价格
假设一家商店只出售 penne 包装、Arrabiata 酱罐和巧克力棒。 购物车中的物品可以建模为一个向量空间。 我们将两辆购物车中所有物品放入同一辆购物车,定义为两辆购物车的加法。 我们将标量与购物车相乘,定义为该标量乘以购物车中物品的数量。 注意,在这里,用非整数或负数乘以购物车在实践上存在问题,这使模型在实际中不那么有用。 引入一组 购物车。令 $\vc{e}_1$ 对应包含一包 penne 的购物车,令 $\vc{e}_2$ 对应包含一罐 Arrabiata 酱的购物车,令 $\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}$ 是一包 penne 的价格,$a_{12}$ 是一罐 Arrabiata 酱的价格,$a_{13}$ 是一块巧克力的价格。价格 $y$ 现在可以表示为 $y = \mx{A} \vc{x}$。

在现实生活中,该映射通常是 非线性 的,例如商店可能有「买 3 付 2」的促销活动。但将该 映射 建模为 线性 映射,往往是一个合理且有用的模型。 同样(正如数学建模中常见的那样),数学模型与现实之间存在差异。 数学分析的结果必须始终结合理性与批判性思维来使用。 即使一包 penne 的购物车成本为 10,也不意味着你总能以每件 10 的价格向商店出售 penne 包装。

定理 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}$ 均为二维 映射 的情况进行证明,但对 $\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(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}'$,其 坐标为 $\vc{x}' = x_1' \vc{e}_1 + x_2' \vc{e}_2$,或写成向量 形式 $\vc{x}' = \begin{pmatrix}x'_1\\x'_2\end{pmatrix}$,以及 另一个输入 $\vc{x}''$,或写成向量形式 $\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$ 可以写成 $\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$ 的像,即 $x$ 轴。将其逆时针旋转 90 度 后,它与 $y$ 轴平行,坐标为 $(0, 1)$。因此第一个 列向量 为 $\vc{a}_{,1}= \begin{pmatrix} 0 \\ 1 \end{pmatrix}$。

第二个 列向量 将是第二个 向量 的像,即 $y$ 轴。将 $y$ 轴逆时针旋转 90 度 后,它落在 $(-1, 0)$ 上。因此第二个 列向量 为 $\vc{a}_{,1} = \begin{pmatrix} -1 \\ 0 \end{pmatrix}$,我们可以写出 $\mx{A}$ 为
\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(\vc{x})$ 的 陪域 也必须是 $\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 中, 我们将一个点投影到 $x$ 轴上(令 $y$ 坐标为零),$\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: 映射的类型 I
考虑 映射 $\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}$,输出向量 $\begin{pmatrix}e^{a_1}\\e^{a_2}\end{pmatrix}$ 将不同于 $\begin{pmatrix}e^{b_1}\\e^{b_2}\end{pmatrix}$,除非 $\vc{a} =\vc{b}$。然而,该 映射 不是 满射,因为不可能 使 $y_1$ 与 $y_2$ 取负值(对所有 $x$ 的实数值,$e^x > 0$)。在本例中,值域 $V_F$ 仅为 象限 $y_1 > 0, y_2 > 0$,而不等于 陪域 $M =\mathbb{R}^2$。由于该 映射 不是 满射,它也不是 双射

例 9.6: 映射的类型 II
考察 映射 $\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}$ 将产生两个不同的输出向量 $\begin{pmatrix}2 a_1\\3a_2\end{pmatrix} \neq \begin{pmatrix}2b_1\\3b_2\end{pmatrix}$,除非 $\vc{a} = \vc{b}$。

此外,所有输出向量 $\begin{pmatrix}y_1\\y_2\end{pmatrix}$(整个 陪域 $M = \mathbb{R}^2$)都可通过输入 $\begin{pmatrix}x_1\\ x_2\end{pmatrix}= \begin{pmatrix}\frac{y_1}{2}\\\frac{y_2}{3}\end{pmatrix}$ 到达。这 意味着该 映射 也是 满射。由于该 映射 既是 单射 又是 满射,它是 双射
事实证明,双射线性映射 具有许多有用性质。例如,求逆 映射 很简单,我们将在下面的定理中看到。

定理 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$ 是 双射,这意味着 方程 $F(\vc{x}) = \vc{y}$ 对每个 $\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}$,而该方程对每个 $\vc{y}$ 都有唯一解,等价于 说 $\mx{A}$ 可逆,这由 定理 6.9 给出。

ii $\rightarrow$ iii:根据 定理 9.2,$F(\vc{e}_1)$ 正是 $\mx{A}$ 的第一列。同样,$F(\vc{e}_2)$ 是 $\mx{A}$ 的第二 列,依此类推。定理 6.9 告诉我们,若 $\mx{A}$ 可逆,则 $\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 + u_2 \vc{e}_2 + \ldots + u_n\vc{e}_n$ 与 $\vc{v} = v_1 \vc{e}_1 + v_2 \vc{e}_2 + \ldots + 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) = 0, \,(u_2-v_2)=0, \, \ldots, \, (u_n-v_n)=0$。因此 $\vc{u} = \vc{v}$,且 $F$ 是 单射

然后我们证明 $\vc{y} = F(\vc{x})$ 是 满射,即我们可以通过适当选取 $\vc{x}$ 到达每个 $\vc{y}$。

我们可以写出 $\vc{x} = x_1\vc{e}_1 + x_2\vc{e}_2 + \ldots + 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), F(\vc{e}_2), \ldots, F(\vc{e}_n)$ 构成 $\mathbb{R}^n$ 中的一个 ,这些向量张成 $\mathbb{R}^n$,因此我们可达 $\mathbb{R}^n$ 中的任意 $\vc{y}$。故 $F$ 是 满射。由于 $F$ 既是 满射 又是 单射,它是 双射,证明完毕。
$\square$


由这一证明,可得下面的定理。

定理 9.5: 逆映射矩阵
对于具有变换矩阵 $\mx{A}$ 的 双射 线性映射 $\vc{y} = F(\vc{x})$, 逆 映射 $\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$,从而 $0 + \lambda = 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$。因此 $\mx{A}$ 的第二列为 $(0, 1, 0) + (-1)(0.5, 1.0, 0.25) = (-0.5, 0, -0.25)$。第三个单位向量 $\vc{e}_3 = (0, 0, 1)$ 对应 $\lambda = 0$,故 $\mx{A}$ 的最后一列为 $(0, 0, 1) - 0\vc{r} = (0, 0, 1)$。

总之,我们现在构造了一个线性映射 $\vc{y} = \mx{A}\vc{x}$,它将点 $\vc{x}$ 映射为其阴影 $\vc{y}$。矩阵 $\mx{A}$ 等于
\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)
这在下图中有应用。立方体的每个点只需用上面的矩阵 $\mx{A}$ 通过 $\vc{y} = \mx{A}\vc{x}$ 投影到平面上。用投影坐标而非原始坐标绘制立方体的每个面,即可画出立方体的阴影。
$O$
$\vc{n}$
$\vc{r}$
$P$
$P'$
$\vc{x}$
$\vc{y}=\mx{A}\vc{x}$
交互图 9.8: 在本交互图中,我们将展示如何利用线性映射产生阴影效果。我们首先构造一个线性映射,将点 $P$ 投影到 $P$',即沿向量 $\vc{r}$ 方向到平面上的投影。
交互图 9.8: 在本交互图中,我们将展示如何利用线性映射产生阴影效果。我们首先构造一个线性映射,将点 $\hid{P}$ 投影到 $\hid{P}$',即沿向量 $\hid{\vc{r}}$ 方向到平面上的投影。
有了这个阴影例子,我们可以考察该映射是否为双射

例 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{y}$,都不可能恢复 $\vc{x}$。另一方面,若该映射双射,则用 $\vc{x} = \inv{\mx{A}}\vc{y}$ 恢复 $\vc{x}$ 就很简单。


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