线性变化要满足两点性质:
- 直线(连续的点)在变换后还是直线。
- 原点不变。
假设有坐标轴(基底) i ^ \widehat{i} i 和 j ^ \widehat{j} j :
i ^ = [ 1 0 ] , j ^ = [ 0 1 ] \widehat{i}=\begin{bmatrix} 1 \\ 0 \end{bmatrix}, \widehat{j}=\begin{bmatrix} 0 \\ 1 \end{bmatrix} i =[10],j =[01]
若向量 v ⃗ = [ − 1 2 ] \vec{v}=\begin{bmatrix} -1 \\ 2 \end{bmatrix} v =[−12],则可以使用它们表示成:
v ⃗ = − 1 i ^ + 2 j ^ \vec{v}=-1\widehat{i}+2\widehat{j} v =−1i +2j
当空间进行一次线性变换后, i ^ \widehat{i} i 和 j ^ \widehat{j} j 都发生了变化,但 v ⃗ \vec{v} v 与它们的关系却保持不变。假设这些向量经过变换变成了:
T r a n ( i ^ ) = [ 1 − 2 ] , T r a n ( j ^ ) = [ 3 0 ] T r a n ( v ⃗ ) = [ 5 2 ] Tran(\widehat{i})=\begin{bmatrix} 1 \\ -2 \end{bmatrix}, Tran(\widehat{j})=\begin{bmatrix} 3 \\ 0 \end{bmatrix} \\ Tran(\vec{v})=\begin{bmatrix} 5 \\ 2 \end{bmatrix} Tran(i )=[1−2],Tran(j )=[30]Tran(v )=[52]
发现依然满足:
T r a n ( v ⃗ ) = − 1 T r a n ( i ^ ) + 2 T r a n ( j ^ ) = − 1 [ 1 − 2 ] + 2 [ 3 0 ] = [ − 1 ( 1 ) + 2 ( 3 ) − 1 ( − 2 ) + 2 ( 0 ) ] = [ 5 2 ] \begin{aligned} Tran(\vec{v})&= -1 Tran(\widehat{i})+2Tran(\widehat{j}) \\ &= -1 \begin{bmatrix} 1 \\ -2 \end{bmatrix} + 2 \begin{bmatrix} 3 \\ 0 \end{bmatrix} \\ &= \begin{bmatrix} -1(1) + 2(3) \\ -1(-2) + 2(0) \end{bmatrix} \\ &= \begin{bmatrix} 5 \\ 2 \end{bmatrix} \end{aligned} Tran(v )=−1Tran(i )+2Tran(j )=−1[1−2]+2[30]=[−1(1)+2(3)−1(−2)+2(0)]=[52]
实际上,将两个基底在线性变换后变成的两个列向量合在一起,就是一个表示该线性变换的矩阵;对原向量左乘该矩阵,就能得到线性变换后的向量:
T r a n ( v ⃗ ) = M ∗ v ⃗ = [ 1 3 − 2 0 ] [ − 1 2 ] = − 1 [ 1 − 2 ] + 2 [ 3 0 ] = [ − 1 ( 1 ) + 2 ( 3 ) − 1 ( − 2 ) + 2 ( 0 ) ] = [ 5 2 ] \begin{aligned} Tran(\vec{v})&= M*\vec{v} \\ &= \begin{bmatrix} 1 & 3 \\ -2 & 0 \end{bmatrix} \begin{bmatrix} -1 \\ 2 \end{bmatrix} \\ &= -1 \begin{bmatrix} 1 \\ -2 \end{bmatrix} + 2 \begin{bmatrix} 3 \\ 0 \end{bmatrix} \\ &= \begin{bmatrix} -1(1) + 2(3) \\ -1(-2) + 2(0) \end{bmatrix} \\ &= \begin{bmatrix} 5 \\ 2 \end{bmatrix} \end{aligned} Tran(v )=M∗v =[1−230][−12]=−1[1−2]+2[30]=[−1(1)+2(3)−1(−2)+2(0)]=[52]
把数字换成符号,可以得到一个等式:
[ x i x j y i y j ] [ x y ] = x [ x i y i ] + y [ x j y j ] = [ x i ∗ x + x j ∗ y y i ∗ x + y j ∗ y ] \begin{bmatrix} x_i & x_j \\ y_i & y_j \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix} = x \begin{bmatrix} x_i \\ y_i \end{bmatrix} + y \begin{bmatrix} x_j \\ y_j \end{bmatrix} = \begin{bmatrix} x_i * x + x_j * y \\ y_i * x + y_j * y \end{bmatrix} [xiyixjyj][xy]=x[xiyi]+y[xjyj]=[xi∗x+xj∗yyi∗x+yj∗y]
举个例子,如果要进行一次线性变换,使得二维空间被逆时针旋转90度,那么,可以知道:
T r a n ( i ^ ) = [ 0 1 ] , T r a n ( j ^ ) = [ − 1 0 ] Tran(\widehat{i})=\begin{bmatrix} 0 \\ 1 \end{bmatrix}, Tran(\widehat{j})=\begin{bmatrix} -1 \\ 0 \end{bmatrix} Tran(i )=[01],Tran(j )=[−10]
于是可以直接写出线性变换对应的矩阵:
[ 0 − 1 1 0 ] \begin{bmatrix} 0 & -1 \\ 1 & 0 \end{bmatrix} [01−10]
将任意向量左乘该矩阵,就能使其旋转90度,如:
[ 0 − 1 1 0 ] [ − 1 2 ] = [ − 2 − 1 ] \begin{bmatrix} 0 & -1 \\ 1 & 0 \end{bmatrix} \begin{bmatrix} -1 \\ 2 \end{bmatrix} = \begin{bmatrix} -2 \\ -1 \end{bmatrix} [01−10][−12]=[−2−1]
用这个视角来看,一个原地不动的线性变换对应的矩阵自然就是单位矩阵,因为:
T r a n ( i ^ ) = [ 1 0 ] , T r a n ( j ^ ) = [ 0 1 ] Tran(\widehat{i})=\begin{bmatrix} 1 \\ 0 \end{bmatrix}, Tran(\widehat{j})=\begin{bmatrix} 0 \\ 1 \end{bmatrix} Tran(i )=[10],Tran(j )=[01]
直接得到矩阵:
[ 1 0 0 1 ] \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix} [1001]