线性代数的本质

本文为 3Blue1Brown-线性代数的本质 系列视频的笔记。

该系列视频专注于建立线性代数中的几何直觉,而对基本定义、计算方法、公式定理等不做详细介绍,关于这部分内容可以参考普通线性代数教材。

向量究竟是什么

对于向量,有三个不同的理解视角:

  1. 物理学视角:向量是空间中的一个箭头,具有一定的长度方向。在空间中平移向量不会改变其值。
  2. 计算机视角:向量是一个有序数字列表,例如 $\begin{bmatrix} 2 \cr 1 \end{bmatrix}$。
  3. 数学视角:向量用符号表示为 $\mathbf{v}$、$\mathbf{w}$,它可以代表任何东西,只要定义了合理的加法数乘运算。

通过引入坐标系,我们可以整合前两种观点,获得新的向量视角:

向量是坐标系中的一个箭头,起点固定在坐标原点,终点落在某个坐标上。向量的终点坐标就是向量的数值表示。

向量的加法

从数值角度看,向量加法的定义非常直接,即把两个向量的对应坐标分别相加。但这样的定义隐含着怎样的含义呢?为什么要这么定义向量加法?

从几何角度看,向量 $\mathbf{v} + \mathbf{w}$,相当于把 $\mathbf{w}$ 的起点移动到 $\mathbf{v}$ 的终点后,从 $\mathbf{v}$ 的起点指向 $\mathbf{w}$ 的终点的向量。

问题是为什么向量的加法对应着这种几何形式,而不是别的几何形式?比如这样:

有一种思维方式可以很好地解释这个问题,即把向量想象成某种“运动”,那么向量的加法就会非常直观:一个物体先沿着向量 $\mathbf{v}$ 运动,再沿着向量 $\mathbf{w}$ 运动,其“合运动”就是从 $\mathbf{v}$ 的起点到 $\mathbf{w}$ 的终点。

向量的数乘

向量的数乘就是使用一个实数乘以一个向量。从数值角度看,向量数乘的定义非常直接,即把向量的所有坐标分别乘以该实数。

从几何角度看,向量数乘就是把向量的长度缩放(Scaling)某个倍数,同时方向保持不变(如果缩放倍数为负,则向量反向)。缩放的倍数被称为标量(Scalar)

在线性代数中,一个标量几乎总是对应着一种缩放作用

线性组合、张成的空间与基

我们介绍一种新的思维方式来看待向量的坐标:

对于向量 $\begin{bmatrix} 3 \cr -2 \end{bmatrix}$,我们可以把它的两个坐标分别看作两个标量,即 $3$ 和 $-2$。根据上一节的内容,这两个标量分别代表着对两个向量的缩放作用,这两个向量隐含在坐标系中,分别为 $x$ 轴方向和 $y$ 轴方向的单位向量,记作 $\boldsymbol{\hat{\imath}}$,$\boldsymbol{\hat{\jmath}}$。

那么向量的坐标表示可以自然地转化为对单位向量缩放然后求和

$$ \begin{bmatrix}
3 \cr -2
\end{bmatrix} = (3)\boldsymbol{\hat{\imath}} + (-2)\boldsymbol{\hat{\jmath}} $$

由于单位向量的特殊性,我们将 $\boldsymbol{\hat{\imath}}$ 与 $\boldsymbol{\hat{\jmath}}$ 称作 $xy$ 坐标系的基向量

基向可以任意选取,不限于 $\boldsymbol{\hat{\imath}}$ 和 $\boldsymbol{\hat{\jmath}}$。空间中的同一个向量在两组不同的基向量下,其坐标值是不同的,因此,每当我们用数字描述向量时,它总是依赖于我们正在使用的基

把两个向量分别做数乘然后求和,称为这两个向量的线性组合,记作:

$$ a \mathbf{v} + b \mathbf{w} $$

所有可以表示为给定向量线性组合的向量的集合,被称为给定向量张成(span)的空间。对应到上述表达式中,也就是 $a$,$b$ 在实数范围内自由变动时,$a \mathbf{v} + b \mathbf{w}$ 得到的所有向量的集合。

向量的坐标对应着对基向量 $\boldsymbol{\hat{\imath}}$ 和 $\boldsymbol{\hat{\jmath}}$ 的线性组合。

向量的加法和数乘运算是整个线性代数的基石。两个向量张成的空间实际上就是在说,仅通过向量加法和向量数乘这两种基础运算,能够获得的所有可能的向量的集合

大部分情况下,一对向量张成的空间对应整个平面:

然而,当两个初始向量共线时,它们张成的空间就只能是它们所在的直线。更糟糕的情况是,如果两个初始向量都是零向量,那么它们张成的空间只包含一个点,也就是坐标原点。

后两种情况在三维或更高维空间同样存在。在这类情况下,我们的原始向量组合中至少存在一个向量没有对张成的空间作出任何贡献。此时,我们称原始向量组合是线性相关的。

在一组线性相关的向量组合中,某些向量可以通过其余向量的线性组合表示出来,因而去掉这些向量不会影响张成的空间。反之,如果在一组向量中,任意一个向量都不能通过其余向量的线性组合表示出来,那么称这组向量是线性无关的。

在此基础上,我们可以给出的严格定义:向量空间的一组基是张成该空间的一组线性无关的向量

矩阵与线性变换

变换(transformation)本质上是一种函数(function),它接受一个向量作为输入,然后输出一个新的向量。

之所以称之为变换,而不是简单地称作函数,是因为变换隐含着“运动”的含义,而这种运动是能够可视化的:

一些变换可能非常复杂,使空间发生卷曲、缠绕:

但幸运的是,线性变换是一类特殊的、简单的变换,其对空间造成的变形作用从直觉上容易理解。线性变换需要满足如下两条性质:

  1. 空间中所有的直线在变换后仍然保持直线,不能发生弯曲。
  2. 原点必须保持固定。

简而言之,线性变换是保持空间网格线平行且等距分布的变换,正如上述第一张动图所展示的那样。

有了直觉上的认识,那么我们如何用数值来描述线性变换呢?为此,我们需要先了解一个非常关键的推论:线性变换能够维持向量加法和数乘(或者说维持线性组合关系)

假设向量 $\mathbf{v}=\begin{bmatrix} x \cr y \end{bmatrix}$,则 $\mathbf{v}$ 能够表示成基向量 $\boldsymbol{\hat{\imath}}$ 和 $\boldsymbol{\hat{\jmath}}$ 的线性组合,即 $\mathbf{v} = x\boldsymbol{\hat{\imath}} + y\boldsymbol{\hat{\jmath}}$。经历任意线性变换后,该组合关系总是保持不变,即 $\mathbf{v}’ = x\boldsymbol{\hat{\imath}}’ + y\boldsymbol{\hat{\jmath}}'$。

也就是说,在线性变换前后,向量本身虽然发生了变化,但它对当前基向量的组合关系总是保持不变。之所以如此,是因为基向量也同步发生了变换,这个变换巧妙地维持了所有的线性组合关系,而这正是“保持空间网格线平行且等距分布”的自然结果。

上述推论已经给出了描述一个线性变换的全部信息,即:

$$ \mathbf{v}’ = x\boldsymbol{\hat{\imath}}’ + y\boldsymbol{\hat{\jmath}}’ $$

我们只需要追踪变换后的基向量 $\boldsymbol{\hat{\imath}}‘$ 和 $\boldsymbol{\hat{\jmath}}’$,就能得到任意一个变换后的向量 $\mathbf{v}'$。

注意:当讨论 $\mathbf{v}'$ 的坐标时,我们所关注的是它在原始坐标系下的坐标表述,而不是在变换后坐标系下的坐标表述。后者实际上就是向量对当前基的组合关系,总是保持不变,是无意义的。
另一方面,作为观察者,我们总是要基于一个固定不变的参考系(即原始坐标系),不管是变换前还是变换后。如果切换坐标系,那么所有的向量坐标就失去可比性了。

让我们以公式的形式更明确地描述一下这个过程。

假设在某个线性变换中,基向量发生了如下变换:

$$ \boldsymbol{\hat{\imath}} \rightarrow \boldsymbol{\hat{\imath}}’ = \color{green}{\begin{bmatrix} 1 \cr -2 \end{bmatrix}}
\qquad
\boldsymbol{\hat{\jmath}} \rightarrow \boldsymbol{\hat{\jmath}}’ = \color{red}{\begin{bmatrix} 3 \cr 0 \end{bmatrix}}
$$

那么对于任意一个向量 $\mathbf{v}$,它将发生如下变换:

$$ \begin{bmatrix} x \cr y \end{bmatrix} \rightarrow
x \boldsymbol{\hat{\imath}}’ + y \boldsymbol{\hat{\jmath}}’ =
x \color{green}{\begin{bmatrix} 1 \cr -2 \end{bmatrix}}\color{black}{} +
y \color{red}{\begin{bmatrix} 3 \cr 0 \end{bmatrix}}\color{black}{} =
\begin{bmatrix}
\color{green}{1}\color{black}{} x + \color{red}{3}\color{black}{} y \cr
\color{green}{-2}\color{black}{} x + \color{red}{0}\color{black}{} y
\end{bmatrix} $$

由以上的推导可以看出,一个线性变换完全由变换后的基向量 $\boldsymbol{\hat{\imath}}‘$ 和 $\boldsymbol{\hat{\jmath}}’$ 所确定。假设它们的坐标分别为 $\color{green}{\begin{bmatrix} a \cr c \end{bmatrix}}\color{black}{}$ 和 $\color{red}{\begin{bmatrix} b \cr d \end{bmatrix}}\color{black}{}$,我们可以将它们写在一起:

$$ \begin{bmatrix}
\color{green}{a}\color{black}{} & \color{red}{b}\color{black}{} \cr
\color{green}{c}\color{black}{} & \color{red}{d}\color{black}{}
\end{bmatrix} $$

这就得到了一个 $2 \times 2$ 的矩阵,它携带了当前线性变换的全部信息,因此我们可以认为该矩阵就是线性变换的数值表示

我们将该线性变换作用于任意向量 $\begin{bmatrix} x \cr y \end{bmatrix}$,可以得到:

$$ x \color{green}{\begin{bmatrix} a \cr c \end{bmatrix}}\color{black}{} +
y \color{red}{\begin{bmatrix} b \cr d \end{bmatrix}}\color{black}{} =
\begin{bmatrix}
\color{green}{a}\color{black}{} x + \color{red}{b}\color{black}{} y \cr
\color{green}{c}\color{black}{} x + \color{red}{d}\color{black}{} y
\end{bmatrix} $$

自然地,我们可以将这个运算定义成矩阵对向量的乘法

$$ \begin{bmatrix}
\color{green}{a}\color{black}{} & \color{red}{b}\color{black}{} \cr
\color{green}{c}\color{black}{} & \color{red}{d}\color{black}{}
\end{bmatrix}
\begin{bmatrix} x \cr y \end{bmatrix} \overset{def}{=}
x \color{green}{\begin{bmatrix} a \cr c \end{bmatrix}}\color{black}{} +
y \color{red}{\begin{bmatrix} b \cr d \end{bmatrix}}\color{black}{} =
\begin{bmatrix}
\color{green}{a}\color{black}{} x + \color{red}{b}\color{black}{} y \cr
\color{green}{c}\color{black}{} x + \color{red}{d}\color{black}{} y
\end{bmatrix} $$

在这个表达式中,矩阵放在向量左侧,其作用类似于一个函数。矩阵与向量相乘,就是对向量施加一个线性变换(也就是一种特定的函数)。而矩阵的列向量就是变换后的基向量,因此当我们看到一个矩阵时,很容易想象出对应的线性变换。反过来,当我们看到一个线性变换的可视化表示时,也很容易构造出相应的矩阵。

以下是两个例子,帮助你练习如何从一个直觉化的线性变换出发,构造出一个矩阵:

  1. 给出线性变换“逆时针旋转 90°”的矩阵形式。

    逆时针旋转 90° 后,$\boldsymbol{\hat{\imath}}$ 落在坐标 $\begin{bmatrix} 0 \cr 1 \end{bmatrix}$ 处,$\boldsymbol{\hat{\jmath}}$ 落在坐标 $\begin{bmatrix} -1 \cr 0 \end{bmatrix}$ 处。因此,该线性变换的矩阵形式为:

    $$ \begin{bmatrix}
    0 & -1 \cr
    1 & 0
    \end{bmatrix} $$

  2. 给出线性变换“向右剪切 1 个单位”的矩阵形式。

    向右剪切 1 个单位后,$\boldsymbol{\hat{\imath}}$ 不变,落在坐标 $\begin{bmatrix} 1 \cr 0 \end{bmatrix}$ 处,$\boldsymbol{\hat{\jmath}}$ 向右移动一个单位,落在坐标 $\begin{bmatrix} 1 \cr 1 \end{bmatrix}$ 处。因此,该线性变换的矩阵形式为:

    $$ \begin{bmatrix}
    1 & 1 \cr
    0 & 1
    \end{bmatrix} $$

现在反向思考,如何从一个矩阵出发,获得它所代表的线性变换的几何直觉?例如矩阵:

$$ \begin{bmatrix}
1 & 3 \cr
2 & 1
\end{bmatrix} $$

我们只需要在保持“空间网格线平行且等距分布”的情况下,将 $\boldsymbol{\hat{\imath}}$ 拉伸到 $\begin{bmatrix} 1 \cr 2 \end{bmatrix}$,$\boldsymbol{\hat{\jmath}}$ 拉伸到 $\begin{bmatrix} 3 \cr 1 \end{bmatrix}$ 即可:

最后我们给出“线性”的严格定义:

若一个函数或变换 $L$ 满足以下两条性质:

  1. 可加性
    $$ L(\mathbf{v} + \mathbf{w}) = L(\mathbf{v}) + L(\mathbf{w}) $$

  2. 成比例(一阶齐次)
    $$ L(c \mathbf{v}) = c L(\mathbf{v}) $$

则称该函数或变换满足线性。

矩阵乘法与线性变换复合

很多时候,我们需要描述两个或多个线性变换的相继作用。

例如,我们想要描述这个变换:先逆时针旋转 90°,然后向右剪切一个单位。

由于每个线性变换都会保持网格线平行且等距分布,因此最终叠加的结果仍然是一个线性变换,我们通常把这个变换称作前两个独立变换的复合变换。并且,复合变换与多个独立变换应当是等价的,因为它们最终的变换效果完全相同:

因此我们可以得到下面的等式:

这个等式表明,两个矩阵对向量的相继作用等同于一个复合矩阵对该向量的作用。我们在此基础上更进一步,写成:

$$ \begin{bmatrix} 1 & 1 \cr 0 & 1 \end{bmatrix}
\begin{bmatrix} 0 & -1 \cr 1 & 0 \end{bmatrix} =
\begin{bmatrix} 1 & -1 \cr 1 & 0 \end{bmatrix} $$

一种自然且合理的想法是,我们可以把这种运算定义为矩阵乘法,它的几何意义就是两个线性变换的相继作用

矩阵乘法需要从右向左读,因为我们是先应用右侧的线性变换,然后应用左侧的线性变换。这种顺序看似反向,但如果从矩阵的函数特性出发,把矩阵看作一种函数记号,那么自右向左的顺序就很容易理解,毕竟我们研究复合函数时(例如 $f(g(x))$),也是从右向左读的,不是吗?

以上,我们从几何直觉出发,建立了矩阵乘法的定义。

从数值计算角度来看,矩阵乘法的计算规则非常奇怪,为什么要定义成这样?

实际上,我们可以从几何直觉出发,推导出矩阵乘法的计算规则。

考虑以下普适的矩阵乘法形式:

$$ \overbrace{\begin{bmatrix} a & b \cr c & d \end{bmatrix}}^{M_2}
\overbrace{\begin{bmatrix} \color{green}{e}\color{black}{} & \color{red}{f}\color{black}{} \cr \color{green}{g}\color{black}{} & \color{red}{h}\color{black}{} \end{bmatrix}}^{M_1} =
\overbrace{\begin{bmatrix} ? & ? \cr ? & ? \end{bmatrix}}^{M} $$

根据我们对矩阵和线性变换的定义,要得到矩阵 $M$,我们只需要追踪基向量 $\boldsymbol{\hat{\imath}}$ 和 $\boldsymbol{\hat{\jmath}}$ 的最终去向即可。由矩阵 $M_1$ 可知,经过第一次线性变换后,$\boldsymbol{\hat{\imath}}$ 变换到 $\color{green}{\begin{bmatrix} e \cr g \end{bmatrix}}\color{black}{}$。随后进行第二次变换,我们使用矩阵对向量的乘法得到:

$$ \begin{bmatrix} a & b \cr c & d \end{bmatrix}
\color{green}{\begin{bmatrix} e \cr g \end{bmatrix}}\color{black}{} =
\begin{bmatrix} ae+bg \cr ce+dg \end{bmatrix} $$

这就是最终的 $\boldsymbol{\hat{\imath}}$ 坐标,也就是 $M$ 的第一列。同样的方式可以求得 $\boldsymbol{\hat{\jmath}}$,即 $M$ 的第二列。最终得到:

$$ \begin{bmatrix} a & b \cr c & d \end{bmatrix}
\begin{bmatrix} e & f \cr g & h \end{bmatrix} =
\begin{bmatrix} ae+bg & af+bh \cr ce+dg & cf+dh \end{bmatrix} $$

这就是矩阵乘法的计算公式。

行列式

矩阵对应着一个线性变换,而矩阵的行列式则表征着该线性变换将空间缩放的比例。对于二维空间,行列式是面积缩放的比例。对于三维空间,行列式是体积缩放的比例。高维空间以此类推。

如果线性变换将空间的维度降低,例如将二维平面压缩到一条直线上,那么行列式的值为零。

如果线性变换使得空间发生反转,例如由右手坐标系变换到左手坐标系,那么行列式的值为负。

二阶行列式的计算公式如下:

$$ \det\left(\begin{bmatrix} a & b \cr c & d \end{bmatrix}\right) = ad - bc $$

通过下图,很容易从几何角度给出其推导过程:

$$ \det\left(\begin{bmatrix} a & b \cr c & d \end{bmatrix}\right) =
(a+b)(c+d) - ac -bd -2bc = ad - bc $$

三阶行列式的计算可以转化为多个二阶行列式:

$$ \det\left( \begin{bmatrix} a & b & c \cr d & e & f \cr g & h & i \end{bmatrix} \right) =
a \det\left( \begin{bmatrix} e & f \cr h & i \end{bmatrix} \right) -
b \det\left( \begin{bmatrix} d & f \cr g & i \end{bmatrix} \right) +
c \det\left( \begin{bmatrix} d & e \cr g & h \end{bmatrix} \right) $$

更高阶的行列式可类比这种处理方法,依次降阶。

逆矩阵、列空间与零空间

矩阵的一个重要应用是求解线性方程组

线性方程组是类似于这样的一个方程组:

$$ \begin{aligned}
2x + 5y + 3z &= -3 \cr
4x + 0y + 8z &= 0 \cr
1x + 3y + 0z &= 2
\end{aligned} $$

它满足以下两个条件:

  • 所有的未知量都是一阶的,不能出现高阶未知量或更复杂的形式,如 $x^2$,$xy$,$sin(x)$ 等。
  • 未知量的系数都是常数。必要的时候需要补全未知项,即认为缺失项的系数为零。

线性方程组在形式上与矩阵对向量的乘法非常相似,因此我们可以把上述方程组写作一个向量方程:

$$ \begin{bmatrix} 2 & 5 & 3 \cr 4 & 0 & 8 \cr 1 & 3 & 0 \end{bmatrix}
\begin{bmatrix} x \cr y \cr z \end{bmatrix} =
\begin{bmatrix} -3 \cr 0 \cr 2 \end{bmatrix} $$

如果我们用 $A$ 代表系数矩阵,用 $\mathbf{x}$ 代表未知项向量,用 $\mathbf{v}$ 代表常数项向量,就能得到更普遍的形式:

$$ A \mathbf{x} = \mathbf{v} $$

这个表达式具有明显的几何意义,即在线性变换 $A$ 中,向量 $\mathbf{x}$ 被变换为向量 $\mathbf{v}$。

与通常的线性变换表达式相比,这个等式有些特殊,等号右侧的向量 $\mathbf{v}$ 是已知的,而等号左侧的向量 $\mathbf{x}$ 却是未知的。我们需要解决的问题是,什么样的向量 $\mathbf{x}$ 能够在施加线性变换 $A$ 之后,落在向量 $\mathbf{v}$ 处?

为了找到 $\mathbf{x}$,我们需要找到线性变换 $A$ 的逆过程,对向量 $\mathbf{v}$ 施加逆向变换就能回到 $\mathbf{x}$。我们把这个逆过程称作 $A$ 的逆变换,记作 $A^{-1}$。

对一个空间先施加变换 $A$,然后施加逆变换 $A^{-1}$,空间会恢复原状,整个过程相当于对空间施加了一个“什么都不做”的变换:

我们用矩阵 $I$ 来表示“什么都不做”的线性变换,那么上述过程可以通过矩阵乘法来描述:

$$ A^{-1}A = I $$

式中的 $I$ 称为单位矩阵,对应的线性变换称为恒等变换(identity transformation)。单位矩阵实际上就是以单位向量 $\boldsymbol{\hat{\imath}}$、$\boldsymbol{\hat{\jmath}}$ … 作为列的矩阵。作为示例,以下是 3 阶单位矩阵:

$$ \begin{bmatrix}
1 & 0 & 0 \cr 0 & 1 & 0 \cr 0 & 0 & 1
\end{bmatrix} $$

在实践中,逆矩阵可以通过高斯消元法求得,也可以通过计算机计算。

一旦获得了逆矩阵 $A^{-1}$,我们就可以对前面的等式做如下变形:

$$ \begin{aligned}
& A \mathbf{x} = \mathbf{v} \cr
\Longleftrightarrow & A^{-1}A \mathbf{x} = A^{-1}\mathbf{v} \cr
\Longleftrightarrow & \mathbf{x} = A^{-1}\mathbf{v} \cr
\end{aligned} $$

上述结果意味着,对向量 $\mathbf{v}$ 施加逆变换 $A^{-1}$ 就能得到向量 $\mathbf{x}$。

假如随机取一个方阵 $A$,那么其逆矩阵 $A^{-1}$ 几乎总是存在的,但也有例外。$A^{-1}$ 存在的前提条件是,$A$ 没有将空间变换到更低的维度上,也即 $A$ 的行列式不为零:

$$ A^{-1} \text{ exists} \Longleftrightarrow \det(A) \neq 0 $$

从直觉上考虑,这个条件是必要的。一旦空间被变换到更低的维度上,就意味着丢失了一部分坐标信息,因此不可能再还原回去,也就不存在逆变换。

当 $A^{-1}$ 不存在时,线性方程组要么无解,要么有无数多个解。

$\det(A)=0$ 对应着线性变换后的空间维度降低,例如三维空间可能被压缩到一个平面、一条直线,甚至原点。

为了描述线性变换中空间的维度变化,我们引入一个新的术语秩(Rank)矩阵的秩就是线性变换后的空间的维度。如果矩阵 $A$ 对应的线性变换没有导致空间降维,那么称矩阵 $A$ 为满秩矩阵

我们从另一个角度考虑变换后的空间,由于矩阵 $A$ 的列向量就是变换后的空间的基,因此变换后的空间是由矩阵 $A$ 的列向量张成的,我们把这个空间称为 $A$ 的列空间

从上述推理可知,矩阵的秩与列空间有着明显的联系,即矩阵的秩就是其列空间的维度

所有矩阵的列空间均包含零向量,这是因为线性变换总是保持原点固定,而零向量变换后还是零向量。

对于一个满秩矩阵,唯一能在变换后落在原点的向量只有零向量自身。但对于一个非满秩矩阵来说,它将空间压缩到一个更低的维度上,因此会有一系列向量在变换后成为零向量:

变换后落在原点的向量的集合构成了一个空间,称作零空间(Null space),或者核空间(Kernal space)。我们可以通过如下方程计算矩阵 $A$ 的零空间:

$$ A \mathbf{x} = \mathbf{0} $$

式中的 $\mathbf{0}$ 代表零向量,即所有元素均为零的向量。

显然,满秩矩阵的零空间只包含一个零向量。反之,如果一个线性变换的零空间包含除零向量以外的向量,那么可以断定该线性变换对应的矩阵为非满秩矩阵。

非方阵

到此为止,我们讨论线性变换时都只考虑了方阵,因为方阵所代表的线性变换具有非常直观的几何意义。

相比之下,非方阵的几何含义则不那么容易解释。例如一个 $3\times 2$ 的矩阵:

$$ \begin{bmatrix}
3 & 1 \cr 4 & 1 \cr 5 & 9
\end{bmatrix} $$

它所代表的线性变换是怎样的呢?

首先,我们可以找到变换后的 $\boldsymbol{\hat{\imath}}$ 和 $\boldsymbol{\hat{\jmath}}$,即:

$$ \boldsymbol{\hat{\imath}} = \begin{bmatrix} 3 \cr 4 \cr 5 \end{bmatrix} \qquad
\boldsymbol{\hat{\jmath}} = \begin{bmatrix} 1 \cr 1 \cr 9 \end{bmatrix} $$

只有两个基向量,表明输入向量位于二维空间中。而 $\boldsymbol{\hat{\imath}}$ 和 $\boldsymbol{\hat{\jmath}}$ 具有三个分量,表明输出向量位于三维空间中。很容易验证,该矩阵的列空间是二维的,因此变换后的空间是三维空间中的一个平面。

需要注意的是,该矩阵仍是满秩的,因为它没有降低空间的维度(从二维变换到二维)。

类似地,一个 $2 \times 3$ 的矩阵:

$$ \begin{bmatrix}
3 & 1 & 4 \cr 1 & 5 & 9
\end{bmatrix} $$

代表怎样的线性变换呢?

通过类似的分析过程,我们知道该矩阵的输入空间为三维,输出空间则是二维,显然是非满秩的。虽然有三个基向量,但每个基向量都是二维的,因此最多张成一个二维空间。

有一类特殊的非方阵是 $1\times n$ 矩阵,也被称作行向量。它们将 $n$ 维空间变换到一维空间,也就是实数轴,这类变换与向量的点积运算具有奇妙的对应关系。

点积与对偶性

从数值计算角度,向量点积的定义是这样的:两个维数相同的向量,将它们的对应坐标分别相乘,然后求和。例如:

$$ \begin{bmatrix} 2 \cr 7 \cr 1 \end{bmatrix} \cdot
\begin{bmatrix} 8 \cr 2 \cr 8 \end{bmatrix} =
2\cdot 8 + 7 \cdot 2 + 1\cdot 8 = 38 $$

从数学角度看,向量点积的定义是这样的:

$$ \mathbf{v} \cdot \mathbf{w} = \Vert \mathbf{v} \Vert \cdot \Vert \mathbf{w} \Vert \cdot \cos\theta $$

其中,符号 $\Vert\cdot\Vert$ 代表向量的模量,也就是向量的长度。$\theta$ 代表向量 $\mathbf{v}$ 和 $\mathbf{w}$ 之间的夹角。

从几何角度看,两个向量的点积就是其中一个向量在另一个向量上的投影长度,乘以另一个向量的长度:

事实上,这里的投影长度也就是上面公式中的 $\Vert \mathbf{v} \Vert \cdot \cos\theta$ 或 $\Vert \mathbf{w} \Vert \cdot \cos\theta$。

现在的问题是,数值计算角度的定义与几何角度的定义为什么是等效的?对应坐标相乘并求和,为什么与投影有所关联?

我们考虑最简单的二维单位向量,例如向量 $\mathbf{u} = \begin{bmatrix} u_x \cr u_y \end{bmatrix}$,将它与另一个未知向量 $\mathbf{x} = \begin{bmatrix} x \cr y \end{bmatrix}$ 做点乘:

$$ \mathbf{u} \cdot \mathbf{x} $$

这个表达式看上去有点像函数,$\mathbf{u}\cdot$ 就像一个函数作用在向量 $\mathbf{x}$ 上。这个关系非常类似矩阵之于线性变换,我们不妨将 $\mathbf{u}$ 转置一下,得到一个 $1\times 2$ 矩阵 $M=\begin{bmatrix} u_x & u_y \end{bmatrix}$:

$$ \begin{bmatrix} u_x & u_y \end{bmatrix} \begin{bmatrix} x \cr y \end{bmatrix} $$

从计算角度看,这个表达式刚好等同于向量点乘。

从几何角度看,这个表达式相当于对二维空间施加一个线性变换 $\begin{bmatrix} u_x & u_y \end{bmatrix}$,输出一维空间(实数轴)。变换后的 $\boldsymbol{\hat{\imath}}$ 和 $\boldsymbol{\hat{\jmath}}$ 分别落在点 $u_x$,$u_y$ 处。另一方面,$u_x$,$u_y$ 分别是向量 $\mathbf{u}$ 在 $\boldsymbol{\hat{\imath}}$ 和 $\boldsymbol{\hat{\jmath}}$ 上的投影,由于 $\mathbf{u}$ 是单位向量,该投影关系是对称的,即 $u_x$,$u_y$ 分别是 $\boldsymbol{\hat{\imath}}$ 和 $\boldsymbol{\hat{\jmath}}$ 在向量 $\mathbf{u}$ 上的投影。也就是说,这个线性变换就是把空间中的所有点向向量 $\mathbf{u}$ 做投影。

当 $\mathbf{u}$ 不是单位向量时,我们可以将它缩放成单位向量,同时获得一个标量系数 $\Vert \mathbf{u} \Vert$。

最终,任意向量 $\mathbf{u} = \begin{bmatrix} u_x \cr u_y \end{bmatrix}$ 对应的矩阵 $M=\begin{bmatrix} u_x & u_y \end{bmatrix}$ 对应的线性变换相当于把空间中的所有点向向量 $\mathbf{u}$ 做投影,然后把投影长度缩放 $\Vert \mathbf{u} \Vert$ 倍

以上,我们通过构造一个单行矩阵,将向量点乘的数值计算与几何意义联系到了一起。

向量与线性变换之间有着出乎意料的联系,这是数学中对偶性(duality) 的一种体现。对偶性在数学中普遍存在,但却难以定义,粗略地说,对偶性就是两种数学事物之间自然而又出乎意料的对应关系。在上述推导中:

  • 一个向量的对偶是由它定义的线性变换。
  • 一个多维空间到一维空间的线性变换的对偶是多维空间中的某个特定向量。

一般来说,提到线性变换我们会联想到一个矩阵,而不是一个向量。

基变换

一个坐标系由坐标系的基向量完全确定。基向量可以随意选取,但我们通常使用正交的 $\boldsymbol{\hat{\imath}}$ 和 $\boldsymbol{\hat{\jmath}}$。

现假设有一个坐标系以 $\boldsymbol{\hat{\imath}}$ 和 $\boldsymbol{\hat{\jmath}}$ 为基向量,我们称它为原始坐标系 $S_0$。同时有另一组基向量 $\mathbf{b}_1$ 和 $\mathbf{b}_2$,它们确定了一个新的坐标系 $S_1$。为了方便说明,我们给出 $\mathbf{b}_1$,$\mathbf{b}_2$ 在 $S_0$ 下的坐标表示:

$$ \mathbf{b}_1 = \begin{bmatrix} 2 \cr 1 \end{bmatrix} \qquad \mathbf{b}_2 = \begin{bmatrix} -1 \cr 1 \end{bmatrix} $$

在两个不同的坐标系下,空间中的同一个向量的坐标表述将会有所不同。例如一个向量在原始坐标系中的坐标为 $\begin{bmatrix} 3 \cr 2 \end{bmatrix}$,但在新坐标系下的坐标却是 $\begin{bmatrix} (5/3) \cr (1/3) \end{bmatrix}$。

反过来,两个坐标系中的相同坐标对应着空间中不同的向量。这是因为向量的坐标就是对基向量进行线性组合的系数,基向量不同,那么线性组合得到的最终向量也不同。

这就好比在不同的语言中描述同一件事物,我们需要一种映射,来把一种描述“翻译”成另一种描述。

具体来说就是,我们该如何描述 $S_1$ 与 $S_0$ 的关系?$S_1$ 中的某个向量 $\mathbf{v}= \begin{bmatrix} x’ \cr y’ \end{bmatrix}$ 如何在 $S_0$ 下表述?

要回答这个问题,我们只需要追踪关键性的 $\mathbf{b}_1$ 和 $\mathbf{b}_2$ 即可,因为 $S_1$ 中的任意向量 $\mathbf{v}= \begin{bmatrix} x’ \cr y’ \end{bmatrix}$ 都可以表示为:

$$ x’ \mathbf{b}_1 + y’ \mathbf{b}_2 $$

这个表达式正是矩阵对向量的乘法,我们代入 $\mathbf{b}_1$ 和 $\mathbf{b}_2$ 的坐标,得到:

$$ \begin{bmatrix} 2 & -1 \cr 1 & 1 \end{bmatrix}
\begin{bmatrix} x’ \cr y’ \end{bmatrix} $$

自然而然地,我们可以从线性变换的角度理解这个表达式。左侧的 $2\times 2$ 矩阵代表一个线性变换,它将原始坐标系中的 $\boldsymbol{\hat{\imath}}$ 与 $\boldsymbol{\hat{\jmath}}$ 变换到 $\mathbf{b}_1$ 与 $\mathbf{b}_2$,也就是将坐标系 $S_0$ 变换到 $S_1$。对于右侧的向量 $\begin{bmatrix} x’ \cr y’ \end{bmatrix}$,我们不把它看作坐标,而是看作基向量的一种特定线性组合,那么上述表达式的结果,正是向量 $\mathbf{v}$ 在坐标系 $S_0$ 中的坐标表述,即:

$$ \begin{bmatrix} x \cr y \end{bmatrix} =
\begin{bmatrix} 2 & -1 \cr 1 & 1 \end{bmatrix}
\begin{bmatrix} x’ \cr y’ \end{bmatrix} $$

如果反过来考虑,原始坐标系中的任意向量在新坐标系 $S_1$ 下应该怎样表述呢?很显然,我们只需要施加线性变换的逆变换即可:

$$ \begin{bmatrix} x’ \cr y’ \end{bmatrix} =
\begin{bmatrix} 2 & -1 \cr 1 & 1 \end{bmatrix}^{-1}
\begin{bmatrix} x \cr y \end{bmatrix} $$

以上就是对于向量的基变换。考虑到矩阵也是一组数字坐标,同样会存在基变换问题。

依然沿用上述坐标系的例子,假设原始坐标系 $S_0$ 中存在一个线性变换 $M=\begin{bmatrix} 0 & -1 \cr 1 & 0 \end{bmatrix}$,代表“逆时针旋转 90°”,如何把同样的线性变换施加到新坐标系 $S_1$ 中呢?

首先,使用矩阵 $M$ 直接乘以 $S_1$ 下的向量肯定是行不通的,矩阵 $\begin{bmatrix} 0 & -1 \cr 1 & 0 \end{bmatrix}$ 之所以能够代表“逆时针旋转 90°”这个线性变换,是因为它记录了 $S_0$ 中变换后的基向量的去向。如果要在 $S_1$ 中构造同样的变换,我们就需要记录 $\mathbf{b}_1$ 和 $\mathbf{b}_2$ 的去向。

我们可以通过以下过程来解决这个问题:

  • 对于 $S_1$ 下的任意向量 $\begin{bmatrix} x’ \cr y’ \end{bmatrix}$,我们首先对其施加基变换 $A$,将该向量转化为 $S_0$ 下的表述。
  • 然后施加 $S_0$ 下的线性变换 $M$,获得变换后的向量在 $S_0$ 下的表述。
  • 最后施加逆向基变换 $A^{-1}$,获得变换后的向量在 $S_1$ 下的表述,也就是最终结果。

在上述过程中,我们通过相继施加三个线性变换,构造了一个由 $S_1$ 所表述的复合变换 $M’$,它对空间的变换效果等同于由 $S_0$ 所表述的线性变换 $M$。写作矩阵乘法的形式如下:

$$ M’ = A^{-1} M A $$

特征值与特征向量

在一个线性变换中,大多数的向量会脱离自己张成的空间:

但也存在一些特殊的向量,它们保持在自己张成的空间中,仅仅发生了伸缩变形:

对于示例中的线性变换 $\begin{bmatrix} 3 & 1 \cr 0 & 2 \end{bmatrix}$ 来说,存在两个这样的特殊方向,一个被拉伸 2 倍,另一个被拉伸 3 倍。这种在线性变换中不发生偏转的向量就称为特征向量(Eigenvector),它们的缩放系数称为特征值(Eigenvalue)。如下图所示:

当特征向量的方向发生倒转时,特征值为负数。

特征向量有什么用处?

举一个关于三维变换的例子:对三维空间中的一个物体做旋转变换,可以使用一个 $3\times 3$ 的矩阵来描述。现在考虑这个矩阵的特征向量,是在变换过程中没有发生方向偏转的向量,这正是旋转轴所在的方向!使用特征向量(旋转轴)来描述旋转变换往往更加简单和直观。

特征值与特征向量一般基于如下方程进行定义:

$$ A \mathbf{v} = \lambda \mathbf{v} $$

式中的 $\mathbf{v}$ 为特征向量,$\lambda$ 为特征值。这个方程的含义就是,对向量 $\mathbf{v}$ 施加线性变换 $A$,其结果相当于使用一个标量 $\lambda$ 缩放 $\mathbf{v}$,这正是我们前面用图形化的方式给出的定义。

方程的左侧为矩阵对向量的乘法,而右侧却是向量的数乘。为了求解这个方程,我们需要在等号右侧引入单位矩阵 $I$,然后作如下变形:

$$ \begin{aligned}
& A \mathbf{v} = (\lambda I) \mathbf{v} \cr
\Longleftrightarrow & A \mathbf{v} - (\lambda I) \mathbf{v} = \mathbf{0} \cr
\Longleftrightarrow & (A - \lambda I) \mathbf{v} = \mathbf{0}
\end{aligned} $$

我们得到一个新的矩阵 $A - \lambda I$,类似于这种形式:

$$ \begin{bmatrix}
3 - \lambda & 1 & 4 \cr
1 & 5 - \lambda & 9 \cr
2 & 6 & 5 - \lambda
\end{bmatrix} $$

矩阵 $A - \lambda I$ 将一个非零向量 $\mathbf{v}$ 变换到零向量,这说明它压缩了空间的维度,必定是非满秩的。于是:

$$ \det(A - \lambda I) = 0 $$

我们可以据此求解 $\lambda$,然后将 $\lambda$ 代入矩阵,求出 $\mathbf{v}$,这样就求出了所有的特征值与特征向量。

注意,特征向量 $\mathbf{v}$ 代表某个方向上的一簇向量,而不是某一个特定的向量。

二维线性变换不一定有特征向量,例如变换“逆时针旋转 90°”,所有向量的方向都会发生偏转。也可能只有一个特征向量,例如变换“向右剪切一个单位”,$x$ 轴方向是唯一不发生偏转的向量。除此之外,还存在另一种特殊情况,即一个特征值对应的特征向量不止在一条直线上,例如变换“将空间沿所有轴拉伸两倍”,唯一的特征值是 $2$,并且空间中的所有向量都是这个特征值对应的特征向量。

特征向量如此特殊,那么如果选取特征向量作为坐标系的基向量将会怎样呢?

当特征向量刚好为基向量时,我们称之为特征基。先考虑一个最特殊的情况,纯拉伸变换:

$$ \begin{bmatrix}
3 & 0 \cr 0 & 2
\end{bmatrix} $$

其列向量,也就是变换后的基向量,刚好也是特征向量。这个矩阵有一个明显的特征,就是除了对角线元素之外,其他所有元素均为零。这样的矩阵被称为对角矩阵

对角矩阵有一个良好的性质,与普通矩阵相比,它的幂运算非常容易计算:

$$ \begin{bmatrix} 3 & 0 \cr 0 & 2 \end{bmatrix}^n =
\begin{bmatrix} 3^n & 0 \cr 0 & 2^n \end{bmatrix} $$

上述情况过于特殊,通常情况下特征向量并不刚好是基向量。但如果特征向量足够多,足以张成整个空间,那么我们可以通过基变换,人为地构造出特征基。

例如矩阵:

$$ \begin{bmatrix}
3 & 1 \cr 0 & 2
\end{bmatrix} $$

其特征向量有两个:$\begin{bmatrix} 1 \cr 0 \end{bmatrix}$、$\begin{bmatrix} -1 \cr 1 \end{bmatrix}$。我们把特征向量写成基变换矩阵:

$$ \begin{bmatrix}
1 & -1 \cr 0 & 1
\end{bmatrix} $$

应用基变换规则,得到:

$$ \begin{bmatrix} 1 & -1 \cr 0 & 1 \end{bmatrix}^{-1}
\begin{bmatrix} 3 & 1 \cr 0 & 2 \end{bmatrix}
\begin{bmatrix} 1 & -1 \cr 0 & 1 \end{bmatrix} =
\begin{bmatrix} 3 & 0 \cr 0 & 2 \end{bmatrix} $$

特征基变换的结果必然会得到一个对角矩阵,这个变换的过程被称为对角化

当我们要对一个普通矩阵进行幂运算时,可以先将它对角化,然后进行幂运算,最后再应用逆向特征基变换即可。

并非所有的矩阵都能对角化,矩阵能够对角化的充要条件是特征向量的个数等于矩阵的阶数。