如果一个变换具有以下两个性质,我们就称它是线性的:
总的来说,线性变换是“保持网格线平行且等距分布”的变换
只需记录两个基向量 i ⃗ \vec{i} i和 j ⃗ \vec{j} j变换后的位置。可以用 i ⃗ \vec{i} i和 j ⃗ \vec{j} j变换后的位置,推断任意向量出变换后的位置。
如图2所示,假设 i ⃗ \vec{i} i和 j ⃗ \vec{j} j变换后分别为 [ 1 , − 2 ] T [1, -2]^{T} [1,−2]T和 [ 3 , 0 ] T [3, 0]^{T} [3,0]T,则任意向量 [ x , y ] T [x, y]^{T} [x,y]T的变换结果如图2所示。
即:一个二维线性变换仅由四个数字完全确定,变换后 i ⃗ \vec{i} i的两个坐标和变换后 j ⃗ \vec{j} j的两个坐标。把这两组坐标写入一个矩阵中,如图3所示。
这个矩阵的第一列就是变换后 i ⃗ \vec{i} i的两个坐标,第二列就是变换后 j ⃗ \vec{j} j的两个坐标。
更一般的情况,如图4所示。
把第一列 [ a , c ] T [a,c]^{T} [a,c]T看作是变换后的第一个基向量,把第二列 [ b , d ] T [b,d]^{T} [b,d]T看作是变换后的第二个基向量,则任意向量 [ x , y ] T [x, y]^{T} [x,y]T的变换过程和结果如图4所示。
矩阵的列就是变换后的基向量,矩阵向量乘法就可以看作它们的线性组合。
坐标系 x y x y xy的基向量分别为 i ⃗ \vec{i} i(绿色箭头)、 j ⃗ \vec{j} j(红色箭头)。我们将这个坐标系 x y x y xy逆时针旋转90°,这样, i ⃗ \vec{i} i落在了坐标 ( 0 , 1 ) (0,1) (0,1)上, j ⃗ \vec{j} j落在了坐标 ( − 1 , 0 ) (-1,0) (−1,0)上,如图5所示。
这样,任意向量 [ x , y ] T [x, y]^{T} [x,y]T旋转90°之后的结果都可以利用这个矩阵计算出来。
还有一种特殊的线性变换是“剪切”。如图6所示,变换后 i ⃗ \vec{i} i不变, j ⃗ \vec{j} j落在了坐标 ( 1 , 1 ) (1,1) (1,1)上。
给定一个变换矩阵 [ 1 3 2 1 ] \begin{bmatrix} \ 1 & 3 \\ \ 2 & 1 \\ \end{bmatrix} [ 1 231]
这就相当于 i ⃗ \vec{i} i变换后落在(1,2)上, j ⃗ \vec{j} j变换后落在(3,1)上,空间其他部分随二者一起移动,以保持网格线平行且等距分布。如图7所示。
如果变换后的 i ⃗ \vec{i} i和 j ⃗ \vec{j} j是线性相关的,如图8所示,变换后的 i ⃗ \vec{i} i和 j ⃗ \vec{j} j在一条直线上。
线性变换是操纵空间的一种手段,它保持网格线平行且等距分布,并保持原点不动。
这种变换只需要几个数字就能描述清楚,这些数字就是变换后基向量的坐标,以这些坐标为列所构成的矩阵为我们提供了一种描述线性变换的语言,而矩阵向量乘法是计算线性变换作用于给定向量的一种途径,如图4所示。
这里重要的一点是,每当你看到一个矩阵时,你都可以把它解读为对空间的一种特定变换。
更多【算法-03 矩阵与线性变换】相关视频教程:www.yxfzedu.com