跳至主要內容

线性变换

大约 8 分钟

线性变换

参考教程 麻省理工公开课 线性代数open in new window P31~P33

线性变换的定义

基本定义

对于 xRn\vec{x}\in R^nyRm\vec{y}\in R^m 之间存在映射关系 y=T(x)\vec{y}=T(\vec{x})
当这种映射关系满足线性条件

{T(x1+x2)=T(x1)+T(x2)T(cx)=cT(x) \begin{cases} T(\vec{x}_1+\vec{x}_2)=T(\vec{x}_1)+T(\vec{x}_2)\\ T(c\vec{x})=cT(\vec{x}) \end{cases}

则称映射 T(x)T(\vec{x}) 为线性变换

线性变换的判定

根据线性条件, 可得必然有 T(0)=0T(\vec{0})=\vec{0}, 判断一个映射是否为线性变换时, 可先使用 0\vec{0} 检验
之后再通过线性条件进一步检验

以下变换为典型的线性变换

  • 将向量 x\vec{x} 投影到 v0\vec{v}_0 方向上
  • 将向量 x\vec{x} 绕原点旋转特定角度 θ\theta
  • 将向量 x\vec{x}xx 轴为对称轴对称

以下变换则不属于线性变换

  • 将向量 x\vec{x} 平移 v0\vec{v}_0
  • 取向量的绝对值

线性变换的特性

现有空间 RnR^n 的一组基 v1,v2,,vn\vec{v}_1,\vec{v}_2,\dots,\vec{v}_n
根据线性条件可得, 即使线性变换 T(x)T(\vec{x}) 的具体形式未知, 但只要确定这组基中所有向量的映射结果 T(vi)=uiT(\vec{v}_i)=\vec{u}_i
就可以确定任意向量 xRn\vec{x}\in R^n 的映射结果

证明如下
对于基底 vi\vec{v}_i 与任意向量 x\vec{x} 总能找到一组分量满足 x=i=1ncivi\vec{x}=\sum_{i=1}^n c_i\vec{v}_i

根据线性条件有

T(x)=i=1nciT(vi) T(\vec{x})=\sum_{i=1}^n c_iT(\vec{v}_i)

矩阵与线性变换

坐标系与向量

对于 RnR^n 空间中的一个向量 x\vec{x}, 为了描述这个向量的具体形状, 需要引入一组基底 {vi}=v1,v2,,vn\{\vec{v}_i\}=\vec{v}_1,\vec{v}_2,\dots,\vec{v}_n

对于该基底必定存在一个线性组合从而得到向量 x\vec{x}, 有

x=i=1ncivi \vec{x}=\sum_{i=1}^n c_i\vec{v}_i

在上述线性组合中, 系数 cic_i 便是向量 x\vec{x}{vi}\{\vec{v}_i\} 为基底时的坐标
此时, 可将向量 x\vec{x} 表示为 c=[c1c2cn]T\vec{c}=\begin{bmatrix}c_1&c_2&\dots&c_n\end{bmatrix}^T

其中向量 x\vec{x}c\vec{c} 表示的时同一个向量, 其区别仅是 x\vec{x} 中的元素反映的是 x\vec{x} 在标准基上的坐标, 而 c\vec{c} 中的元素反应的是 x\vec{x} 在新的基底 {vi}\{\vec{v}_i\} 上的坐标, 但二者表示的是同一个向量

采用以沿坐标轴的单位向量如 v1=[100]T,\vec{v}_1=\begin{bmatrix}1&0&\dots&0\end{bmatrix}^T,\dots 为基底 (该基底也称为标准基)
c\vec{c} 则采用了新的基底 {vi}\{\vec{v}_i\}, 二者的坐标值不同, 但表示的向量相同

使用矩阵表示线性变换

现有 RnR^n 中的一组基底 {vi}=v1,v2,,vn\{\vec{v}_i\}=\vec{v}_1,\vec{v}_2,\dots,\vec{v}_n, 以及 RmR^m 中的一组基底 {ui}=u1,u2,,um\{\vec{u}_i\}=\vec{u}_1,\vec{u}_2,\dots,\vec{u}_m
对于由 RnR^n 映射到 RmR^m 的任意线性变换 T(x)=yT(\vec{x})=\vec{y}, 均可表示为

Ax=y A\vec{x}=\vec{y}

注意在运算中, 向量 x\vec{x}y\vec{y} 分别为其在基底 {vi}\{\vec{v}_i\}{ui}\{\vec{u}_i\} 中的坐标

因此由线性变换的特性可得, 矩阵 AA 中的元素满足

T(vi)=j=1mAjiuj T(\vec{v}_i)=\sum_{j=1}^m A_{ji}\vec{u}_j

矩阵 AA 的各列对应了 vi\vec{v}_i 线性变换的结果在基底 {ui}\{\vec{u}_i\} 中的坐标

矩阵表示示例

现有线性变换 TTR2R^2 中的向量 x\vec{x} 投影到 (1,1)(1,1) 方向的直线上
在此投影中, 映射前后的向量均在 R2R^2

变换前后均使用基底 v1=u1=[11]T,v2=u2=[11]T\vec{v}_1=\vec{u}_1=\begin{bmatrix}1&1\end{bmatrix}^T,\vec{v}_2=\vec{u}_2=\begin{bmatrix}1&-1\end{bmatrix}^T 时, 求投影矩阵

由于 v1\vec{v}_1 与投影方向平行, v2\vec{v}_2 与投影方向垂直, 因此有

T(v1)=u1,T(v2)=0 T(\vec{v}_1)=\vec{u}_1,T(\vec{v}_2)=0

因此有投影矩阵 A=[1000]A=\begin{bmatrix}1&0\\0&0\end{bmatrix}


变换前后均使用基底 v1=u1=[10]T,v2=u2=[01]T\vec{v}_1=\vec{u}_1=\begin{bmatrix}1&0\end{bmatrix}^T,\vec{v}_2=\vec{u}_2=\begin{bmatrix}0&1\end{bmatrix}^T 时, 求投影矩阵

根据几何关系可得, 两个向量有投影

T(v1)=12u1+12u2,T(v2)=12u1+12u2 T(\vec{v}_1)=\frac{1}{2}\vec{u}_1+\frac{1}{2}\vec{u}_2,T(\vec{v}_2)=\frac{1}{2}\vec{u}_1+\frac{1}{2}\vec{u}_2

因此有投影矩阵 B=[1/21/21/21/2]B=\begin{bmatrix}1/2&1/2\\1/2&1/2\end{bmatrix}

注意到

  • 矩阵 BB 的实质即投影到向量 a=[11]T\vec{a}=\begin{bmatrix}1&1\end{bmatrix}^T投影矩阵 B=aaTaTaB=\frac{\vec{a}\vec{a}^T}{\vec{a}^T\vec{a}}
  • 矩阵 AA 的实质即矩阵 BB 对角化后的对角矩阵 Λ\Lambda, 且选择的基底坐标 v1,v2\vec{v}_1,\vec{v}_2 即矩阵 AA 的特征值

求导与线性变换

将特定几个函数作为基底, 函数的系数作为坐标, 以此可将函数视为向量处理
例如函数 f(x)=a+bx+cx2f(x)=a+bx+cx^2 在基底 1,x,x21,x,x^2 中有坐标 [a,b,c]T\begin{bmatrix}a,b,c\end{bmatrix}^T

注意到求导运算满足线性性, 因此也可将求导运算视为一种线性运算
以上述 f(x)f(x) 为例, 经过求导后得有 f(x)=b+2cxf'(x)=b+2cx, 因此变换结果所在空间有基底 1,x1,x
此时用矩阵表示有

[010002][abc]=[b2c] \begin{bmatrix}0&1&0\\ 0&0&2\end{bmatrix}\begin{bmatrix}a\\ b\\ c\end{bmatrix}=\begin{bmatrix}b\\ 2c\end{bmatrix}

因此仅需要确定一组基底, 基底求导的结果, 求出函数 f(x)f(x) 的基底上的坐标, 即可得到 f(x)f(x) 的求导结果
对于其他满足线性性要求的运算都有类似的处理

基变换

向量坐标的基变换

假设向量 xR\vec{x}\in R{vi}\{\vec{v}_i\} 为基底, 现求该向量以 {ui}\{\vec{u}_i\} 为基底时的坐标 c\vec{c}

已知 ui\vec{u}_i{vi}\{\vec{v}_i\} 为基底时的坐标, 以 ui\vec{u}_i 为列可得到矩阵 AA

因此根据 x\vec{x}c\vec{c} 可得, 二者之间满足 x=i=1nciui\vec{x}=\sum_{i=1}^n c_i\vec{u}_i, 写为线性方程组有

Ac=x A\vec{c}=\vec{x}

可得, 如果 x\vec{x} 已知, 其以 {ui}\{\vec{u}_i\} 为基底时的坐标 c\vec{c} 即上述线性方程的解

由于方程也能表达为 c=A1x\vec{c}=A^{-1}\vec{x}, 因此也可将基底变换视为一种线性变换

因此以基变换的角度来看

  • 默认情况下向量以及矩阵各列的元素都是以一个同一基 {vi}\{\vec{v}_i\} 为基底, 但这个基底并不需要明确规定, 虽然大部分情况下认为是标准基
  • 向量 x\vec{x} 左乘矩阵 AA, 则相当于将向量 x\vec{x} 的元素视为该向量在矩阵列为基底下的坐标, 通过左乘 AA 将其坐标转换为默认基底下的坐标的线性变换
  • 向量 x\vec{x} 左乘矩阵 A1A^{-1}, 则相当于将向量 x\vec{x} 的元素视为默认基底下的坐标, 通过左乘 A1A^{-1} 将其坐标转为以 AA 各列为基底下的坐标的线性变换 (实际使用中更推荐使用求解线性方程组的方法以提高精度)
  • 矩阵 BB 左乘其他矩阵的情况, 则可将 BB 视为一个列向量组成的列表, 分别进行变换

线性变换矩阵的基变换

对于一个线性变换 T(x)T(\vec{x}), 假设变换前后向量使用同一组基, 对于两组不同的基 V={vi}V=\{\vec{v}_i\}U={ui}U=\{\vec{u}_i\}, 用于表示该线性变换的矩阵 A,BA,B 不同

但是由向量坐标的基变换可得, 假设以 {vi}\{\vec{v}_i\} 为基底时有向量 x\vec{x}, 同一向量以 {ui}\{\vec{u}_i\} 为基底时坐标为 c\vec{c}, 以 {vi}\{\vec{v}_i\} 为默认基底时有 c=U1x\vec{c}=U^{-1}\vec{x}

因此在线性变换前, 将 x\vec{x} 变换基底, 在左乘 BB 完成变换后, 再将结果的基底变换为默认基底, 此时将实现与 AxA\vec{x} 相同的效果, 有

Ax=UBU1x A\vec{x}=UBU^{-1}\vec{x}

因此不同基底下, 实现同一线性变换 T(x)T(\vec{x}) 的矩阵 A,BA,B相似矩阵, 即存在 B=MAM1B=MAM^{-1}

其中, 以特征向量方向为基底时, 将能得到实现线性变换最简单的矩阵, 即对角矩阵 Λ\Lambda

信号压缩

信号压缩基础

现实生活中, 如图像, 音频的信号通常是缓慢连续变化的, 因此取相邻采样的几个信号值往往非常接近, 其中高频变化的部分很可能是噪音或无法感受到的部分

以相邻几次采样的信号为一组, 视为一个向量, 基于以上特点, 可以为这些向量需找一个合适的基底, 使向量坐标的方差尽量大, 并将其中接近 00 的坐标值丢弃, 实现信号的有损压缩

由于向量的值接近, 因此向量通常在 vDC=[111]T\vec{v}_{DC}=\begin{bmatrix}1&1&\dots&1\end{bmatrix}^T 上的投影值较大 (vDC\vec{v}_{DC} 也被称为直流向量, 其反映了信号中不随时间变化的分量)
常用的基底有傅里叶矩阵与小波变换矩阵, 这些基底中都有 vDC\vec{v}_{DC}, 且为正交矩阵, 仅需转置即可得到矩阵的逆

图像压缩过程

以 JPGE 图像的压缩为例

压缩图像时, 首先将图像分割为数个 8×88\times 8 的小区域分别分析
将每个小区域中视为一个 8×8=648\times 8=64 的向量 xR64\vec{x}\in R^{64}, 计算出这些向量在以傅里叶矩阵 F64F_{64} 为基底的坐标系中的分量 x=i=164civi\vec{x}=\sum_{i=1}^{64} c_i\vec{v}_i, 并将其中接近 00 的值取 00, 得到 c^\hat{c}, 完成图像压缩