What & How & Why

Linear Transformations and Matrices

LAFF Week 2 Notes


本章的核心概念是理解线性变换,线性组合,以及矩阵与线性变换的关系。需要清楚的是,矩阵就是线性变换的 “具象化”,其本质也是 “Function”,即完成 “mapping” 的工作。

Linear Transformations

线性变换(Linear Transformations)可谓是线性代数的基础。什么是线性变换?从数学定义上来说,线性变换需要满足如下两个条件:

For all $ x,y \in \mathbb{R}^n$ and $a\in \mathbb{R}$,A vector function $L: \mathbb{R}^n \to \mathbb{R}^m$ is said to be a Linear Transformation If:

$$L(ax) = aL(x) \tag{I}$$ $$L(x+y) = L(x) + L(y)\tag{II}$$
为什么如此强调线性变换?因为如果一个函数是线性变换,那么解这个函数就会比某些非线性变换的函数容易很多。很多情况下即便函数不是线性变换,我们也会将其近似为线性变换进行处理。一个例子就是我们使用定积分计算不规则图形的面积;我们用无穷个长方形拼凑在一起来近似这个图形的面积,这就是一种将函数转换为线性变换函数,从而方便解决实际问题的手法。

Linear Combinations

线性变换还有如下一个非常重要的充要条件性质:

$$L( \alpha u + \beta v ) = \alpha L( u ) + \beta L( v ) $$

证明非常简单,直接利用线性变换定义中的性质就可以了。而得到的等式右边的结果,我们称为 $x,y$ 的线性组合(Linear Combinations)。从代数上来说,线性组合是线性变换的性质得到的结果,象征了不同向量通过不同线性变换得到的结果的集合。从几何上来理解,线性组合很可能是在表现某种特定的空间(本章未提及)。

线性变换与矩阵向量乘法

我们来看看矩阵和向量的乘法,是如何描述线性变换的:

第一步:先来看看向量。假设我们需要对向量 $x$ 进行线性变换,根据向量的定义我们可以把向量 $x$ 写成: $$ x= \begin{pmatrix} x_0\\ x_1\\ \vdots\\ x_{n-1} \end{pmatrix} $$ 如果我们用单元向量来表示以上的向量,那么有:

$$ \begin{pmatrix} x_0\\ x_1\\ \vdots\\ x_{n-1} \end{pmatrix} = x_0 \underbrace{ \begin{pmatrix} 1\\ 0\\ \vdots\\ 0 \end{pmatrix} }_{e_0} + x_1 \underbrace{ \begin{pmatrix} 0\\ 1\\ \vdots\\ 0 \end{pmatrix} }_ {e_1} + \cdots + x_{n-1} \underbrace{ \begin{pmatrix} 0\\ 0\\ \vdots\\ 1 \end{pmatrix} }_{e_{n-1}} =\sum_{j=0}^{n-1}x_je_j $$

第二步:假设我们有线性变换 $L : \mathbb {R}^ n \rightarrow \mathbb {R}^ m$ 。那么对于 $L(x)$ 来说,我们就可以将其写成:

$$L(x) = L(x_0e_0 + x_1e_1 + \cdots + x_{n-1}e_{n-1} )= L(\sum_{j=0}^{n-1}x_je_j)\tag{2.1} $$

根据性质:

$$L( \alpha u + \beta v ) = \alpha L( u ) + \beta L( v )$$

那么上面的式子可以写成:

$$ L(x) = x_0L(e_0) + x_1L(e_1) + \cdots + x_{n-1}L(e_{n-1}) = \sum_{j=0}^{n-1}x_jL(e_j) $$

第三步:现在我们将变换过的单元向量记做 $a_j$,即$L(e_j) = a_j$。综合公式 2.1,可以得到如下式子:

$$ L(x) = x_0a_0+a_1a_1+\cdots+x_{n-1}a_{n-1} $$

换句话说,$L(x)$就被描述成了向量 $x$ 与另外一个向量组 $({a_0,a_1,\cdots,a_{n-1}})$ 的点积。

那岂不是在说,$L$ 所代表的线性变换,其实就可以用向量组 $(a_0,a_1,\cdots,a_{n-1})$ 来表示吗?


这是一个超级重要的发现!不过还没有完,我们接着看矩阵是如何与这个向量组产生关联的。

第四步:我们将向量组 $({a_0,a_1,\cdots,a_{n-1}})$ 中每一个分量都写出来,结果能得到一个二维的数组:

<html>

<img src=“/_media/math/math_note/laff/matrix_vec.svg” width=“300”>

</html>

根据之前的信息,我们知道,这个二维数组就是用于描述线性变换 $L$ 的。我们把这个二维数组称为矩阵,这是一种用于存储线性变换的,非常方便的手段。我们将矩阵记做 $A$,因此之前提到的对于向量 $x$ 的线性变换,则可记做:

$$L(x) = Ax$$


这在运算形式上,就是我们之前提到的矩阵与向量的乘法了。那这个需要怎么算呢?很简单。我们知道矩阵 $A$ 实际上是向量组 $({a_0,a_1,\cdots,a_{n-1}})$ 中的向量展开所有分量的样子。因此矩阵 $A$ 与 向量 $x$ 的乘法,则是一个两步的复合计算:

  1. $x$ 与向量组$({a_0,a_1,\cdots,a_{n-1}})$ 的点积
  2. $x$ 中的每个分量与$({a_0,a_1,\cdots,a_{n-1}})$ 中对应向量进行 vector scaling 运算。

矩阵中的每一列,都代表着对原向量指定分量的变换规则。

完整的过程可以参考如下步骤:

$$ \begin{array}{r c l} A x & = & L( x ) \\ & =& \left( \begin{array}{c | c | c | c} a_0 & a_1 & \cdots & a_{n-1} \end{array} \right) \left( \begin{array}{c} \chi _0 \\ \chi _1 \\ \vdots \\ \chi _{n-1} \\ \end{array} \right) \\ & =& \chi _0 a_0 + \chi _1 a_1 + \cdots + \chi _{n-1} a_{n-1} \\ & = & \chi _0 \left( \begin{array}{c c c c } \alpha _{0,0} \\ \alpha _{1,0} \\ \vdots \\ \alpha _{m-1,0} \end{array} \right) + \chi _1 \left( \begin{array}{c c c c } \alpha _{0,1} \\ \alpha _{1,1} \\ \vdots \\ \alpha _{m-1,1} \end{array} \right) + \cdots + \chi _{n-1} \left( \begin{array}{c c c c } \alpha _{0,n-1} \\ \alpha _{1,n-1} \\ \vdots \\ \alpha _{m-1,n-1} \end{array} \right) \\ & = & \left( \begin{array}{c c c c } \chi _{0} \alpha _{0,0} + \chi _{1} \alpha _{0,1} + \cdots + \chi _{n-1} \alpha _{0,n-1} \\ \chi _{0} \alpha _{1,0} + \chi _{1} \alpha _{1,1} + \cdots + \chi _{n-1} \alpha _{1,n-1} \\ \vdots \\ \chi _{0} \alpha _{m-1,0} + \chi _{1} \alpha _{m-1,1} + \cdots + \chi _{n-1} \alpha _{m-1,n-1} \end{array} \right) \\ & = & \left( \begin{array}{c c c c } \alpha _{0,0} & \alpha _{0,1} & \cdots & \alpha _{0,n-1} \\ \alpha _{1,0} & \alpha _{1,1} & \cdots & \alpha _{1,n-1} \\ \vdots & \vdots & & \vdots \\ \alpha _{m-1,0} & \alpha _{m-1,1} & \cdots & \alpha _{m-1,n-1} \\ \end{array} \right) \left( \begin{array}{c} \chi _0 \\ \chi _1 \\ \vdots \\ \chi _{n-1} \\ \end{array} \right) . \end{array} $$

线性变换的验证方法

  • 通过线性变换的性质验证
  • $f(0) \neq 0$,则 $f$ 不是线性变换。

通过当前向量与变换后向量求矩阵

通过之前的知识我们了解到,矩阵描述了线性变换。因为有 $L(e_j) = a_j$,因此代表矩阵的向量组中每一个子向量,实际上是可以通过单元向量来求得的。也就是说,只要知道了单元向量 $e_j$ 在变换后的结果是多少,我们就能立马知道 $e_j$ 对应的 $a_j$ 是什么,也就是矩阵在原向量的这个分量上进行了什么样的变换;之后将所有的变换组成一个二维数组,就是我们希望求得的矩阵。而方便的是,我们甚至不需要知道具体的线性变换是什么,就能求的矩阵。

求矩阵就是求单元向量被变换了多少。
To find the matrix, you evaluate how the different unit basis vectors are transformed.

其他重要的知识点

  • 数学归纳法
  • 平移和旋转是两种不同的线性变换
  • 迭代算法的正确性认证

参考资料