线性变换
接上一篇线性变换(中)
上一篇博客中我写了一些常见的线性变换。实际上,我们可以用一个矩阵A来表示线性变换T。
根据线性变换的性质,T(a1v1+a2v2+⋯+anvn)=a1T(v1)+a2T(v2)+⋯+anT(vn)
你连矩阵A都不用知道,只需要知道向量v1到vn线性变换后的值,就可以计算出任意向量v经过线性变换后的值。也就是,你可以自己定义线性变换。
就以平面向量为例,设e1=[10],e2=[01]
假如我已知T(e1)=⎣⎡5−72⎦⎤,T(e2)=⎣⎡−380⎦⎤
因为x=[x1x2]=[x10]+[0x2]=x1e1+x2e2
所以T(x)=x1T(e1)+x2T(e2)=⎣⎡5x1−3x2−7x1+8x22x1+0x2⎦⎤
其实,根据变换T,线性变换的矩阵也可以求出来。
我们举一个更一般的例子:设ej为n阶单位矩阵的第j列。
已知T(ej)=vj,是一个m维向量
那么对于任意n维向量x=⎣⎢⎢⎢⎡x1x2⋮xn⎦⎥⎥⎥⎤
T(x)=x1T(e1)+x2T(e2)+⋯+xnT(en)
=[v1v2⋯vn]⎣⎢⎢⎢⎡x1x2⋮xn⎦⎥⎥⎥⎤
=[v1v2⋯vn]x
而且,[v1v2⋯vn]正是一个m×n的矩阵。所以,[v1v2⋯vn]就是我们需要的矩阵A。
利用这个方法,可以求出上一章中的所有线性变换的矩阵。
- 拉伸/压缩变换
e1=[10],e2=[01]
那么T(e1)=v1=[k0],T(e2)=v2=[0k]
所以A=[v1v2]=[k00k]
- 对称变换
我就以关于x轴对称来举例。
T(e1)=[10],T(e2)=[0−1]
所以A=[T(e1)T(e2)]=[100−1]
- 旋转变换
首先,逆时针旋转2π弧度后
T(e1)=[01],T(e2)=[−10]
所以A=[01−10]
那旋转任意角度怎么计算呢?
假设向量逆时针旋转θ弧度
那么T(e1)=[cosθsinθ]
T(e2)=[−sinθcosθ]
所以,矩阵A=[cosθsinθ−sinθcosθ]
所以,将一个向量逆时针旋转任意角θ,就是乘矩阵[cosθsinθ−sinθcosθ]
这个矩阵你基本上是不可能一眼就看出来的。
- 剪切变换
T(e1)=[10],T(e2)=[k1](见下图)

所以矩阵A=[10k1]
同理,垂直剪切变换就是A=[1k01]
自此,特殊的线性变换问题就解决了。