线性变换是数学中一种特殊的映射,它具有将向量空间中的元素转换到另一向量空间元素的功能,同时也保持了变换前后向量的线性不变的性质。线性变换的数学表达式如下:
T
(
c
u
+
d
v
)
=
c
T
(
u
)
+
d
T
(
v
)
(1)
T(c\boldsymbol{u} + d\boldsymbol{v}) = cT(\boldsymbol{u}) + dT(\boldsymbol{v})\tag{1}
T(cu+dv)=cT(u)+dT(v)(1) 其中,
u
\boldsymbol{u}
u 和
v
\boldsymbol{v}
v 是向量空间
V
V
V 中的任意向量,而
a
a
a 和
b
b
b 分别是与它们相关的标量。接下来,我们将利用公式
(
1
)
(1)
(1)进行线性变换的检验。
T
(
x
)
T(\boldsymbol{x})
T(x)表示向量
x
\boldsymbol{x}
x变换后的新向量。
接下来,我们将对映射(变换)进行线性判别,基本思路是:
定义变换。明确给定的变换是如何改变待映射向量的。
验证加法性。
T
(
u
+
v
)
=
T
(
u
)
+
T
(
v
)
T(\boldsymbol{u} + \boldsymbol{v}) = T(\boldsymbol{u}) + T(\boldsymbol{v})
T(u+v)=T(u)+T(v)
验证(标量)乘法性。
T
(
α
u
)
=
α
T
(
u
)
T(\alpha \boldsymbol{u}) = \alpha T(\boldsymbol{u})
T(αu)=αT(u)
下判断:如果同时满足2和3,那么我们称这个变换为线性变换,反之则为非线性变换。
例子1:“平移变换(Shift transformation)”是否为线性变换?
答:平移变换不是一个线性变换。理由如下:
平移变换是指将待映射的向量执行固定的向量加法的映射(明确变换定义)
计算
T
(
u
+
v
)
=
T
(
u
)
+
T
(
v
)
T(\boldsymbol{u} + \boldsymbol{v}) = T(\boldsymbol{u}) + T(\boldsymbol{v})
T(u+v)=T(u)+T(v)
再计算
T
(
α
u
)
=
α
T
(
u
)
T(\alpha \boldsymbol{u}) = \alpha T(\boldsymbol{u})
T(αu)=αT(u)
因为
(
1
)
(1)
(1) 的左边:
T
(
c
v
+
d
w
)
=
c
v
+
d
w
+
u
0
T(c\bold v+d\bold w)=c\bold v+d\bold w+\bold u_0
T(cv+dw)=cv+dw+u0 右边:
T
(
c
v
)
+
T
(
d
w
)
=
c
w
+
d
v
+
2
u
0
T(c\bold v)+T(d\bold w)=c\bold w+d\bold v+2\bold u_0
T(cv)+T(dw)=cw+dv+2u0 也就是:
T
(
c
v
+
d
w
)
≠
T
(
c
v
)
+
T
(
d
w
)
T(c\bold v+d\bold w)\ne T(c\bold v)+T(d\bold w)
T(cv+dw)=T(cv)+T(dw) 当然如果
u
0
=
0
\bold u_0=\bold 0
u0=0,也是一个线性变换,这种变换叫做单位变换(Identity transformation)。
例子2:“左乘矩阵”是否为线性变换?
答:左乘矩阵是一个线性变换。左乘矩阵表示对一个向量执行左乘矩阵的映射。
T
(
c
v
+
d
w
)
=
c
A
v
+
d
A
w
=
T
(
c
v
+
d
w
)
T(c\bold v+d\bold w)=cA\bold v+dA\bold w=T(c\bold v+d\bold w)
T(cv+dw)=cAv+dAw=T(cv+dw)
例子3:仿射变换(Affine transformation)是否为线性变换?
答:仿射变换不是一个线性变换。仿射变换是线性变换与平移变换的组合,他首先对原向量执行一个线性变换,然后在进行例子1的平移变换。
T
(
c
v
+
d
w
)
=
A
(
c
v
+
d
w
)
+
u
0
(2)
T(c\bold v+d\bold w)=A(c\bold v +d\bold w)+\bold u_0\tag{2}
T(cv+dw)=A(cv+dw)+u0(2)
T
(
c
v
)
+
T
(
d
w
)
=
A
c
v
+
A
d
w
(3)
T(c\bold v)+T(d\bold w)=Ac\bold v+Ad\bold w\tag{3}
T(cv)+T(dw)=Acv+Adw(3) 显然,
(
2
)
(
3
)
(2)(3)
(2)(3)不相等,除非这个线性平移量
u
0
=
0
\bold u_0=0
u0=0
二、更多例子
2.1 点乘变换(Dot product transformation)
输入向量为
v
=
[
v
1
v
2
v
3
]
\bold v=\begin{bmatrix}v_1\\v_2\\v_3\end{bmatrix}
v=v1v2v3,假设这个点乘变换向量为
a
=
[
1
3
4
]
\bold a=\begin{bmatrix}1\\3\\4\end{bmatrix}
a=134
它是一个线性变换。假设输入向量是
v
=
(
v
1
,
v
2
,
v
3
)
\bold v=(v_1,v_2,v_3)
v=(v1,v2,v3)。可以看出输入向量是一个属于
R
3
R^3
R3 空间,但是其结果是一个数,也就是
R
1
R^1
R1 空间,它相当于左乘了一个矩阵
A
=
[
1
,
3
,
4
]
A=[1,3,4]
A=[1,3,4],前面讨论过,左乘一个矩阵是一个线性变换。
由上面的讨论可知:线性变换前后向量所处的向量可以属于不同维度
2.2 变换为取模
T
(
v
)
=
∣
∣
v
∣
∣
T(\bold v)=||v||
T(v)=∣∣v∣∣
它不是一个线性变换。因为既不满足
∣
∣
v
+
w
∣
∣
=
∣
∣
v
∣
∣
+
∣
∣
w
∣
∣
||v+w||=||v||+||w||
∣∣v+w∣∣=∣∣v∣∣+∣∣w∣∣ ,也不满足
∣
∣
−
v
∣
∣
=
−
∣
∣
v
∣
∣
||-v||= -||v||
∣∣−v∣∣=−∣∣v∣∣ 。
2.3 变换为
T
(
v
)
T(v)
T(v) 每个向量都旋转
30
30
30 度
旋转可以用一个矩阵来表示,属于左乘一个矩阵的情况,故为线性变换。
2.4 线到线,三角到三角的线性变换在图形上的特点
如果我们把这些向量用图形表示出来,比如在直线上:
上图,向量
u
=
0.5
(
v
+
w
)
\bold u=0.5(\bold v+\bold w)
u=0.5(v+w),如果进行了线性变换,那么变换前后各点的距离相等关系是不变的。同理对于
R
2
R^2
R2空间的三个向量, 重心公式为:
u
=
1
/
3
(
v
1
+
v
2
+
v
3
)
\bold u=1/3(\bold v_1+\bold v_2+\bold v_3)
u=1/3(v1+v2+v3) 经过线性变换后距离相等公式不变,且重心公式
1
/
3
(
T
(
v
1
)
+
T
(
v
2
)
+
T
(
v
3
)
)
1/3(T(\bold v_1)+T(\bold v_2)+T(\bold v_3))
1/3(T(v1)+T(v2)+T(v3))。
2.5 T:
R
3
→
R
2
R^3\rightarrow R^2
R3→R2
T
(
v
)
=
A
v
(3)
T(v)=Av\tag{3}
T(v)=Av(3) 输入向量
v
∈
R
3
v\in R^3
v∈R3,也就是说矩阵
A
A
A 必须为一个
2
×
3
2\times3
2×3 的矩阵,输出向量是一个在
R
2
R^2
R2的矩阵。事实上,所有线性变换都可以用一个矩阵来表示。
我们的目标:找到线性变换对应的找到一个矩阵
A
A
A ,使得输入向量都能很轻松的通过左乘
A
A
A 获得到输出向量。也就是
w
=
A
v
(4)
w=Av\tag{4}
w=Av(4) 根据矩阵运算法则,矩阵
A
A
A 的维度必须为
m
×
n
m\times n
m×n,对输入输出空间的基选择是任意的,这就意味着我们的“线性转换”矩阵是与输入空间和输出空间相关的。假设输入向量
v
v
v 所处向量空间的基有
n
n
n,那么有:
v
=
c
1
v
1
+
c
2
v
2
+
⋯
+
c
n
v
n
(5)
v=c_1v_1+c_2v_2+\cdots+c_nv_n\tag{5}
v=c1v1+c2v2+⋯+cnvn(5) 因为是线性变换,所以有:
T
(
v
)
=
c
1
T
(
v
1
)
+
c
2
T
(
v
2
)
+
⋯
+
c
n
T
(
v
n
)
(6)
T(v)=c_1T(v_1)+c_2T(v_2)+\cdots+c_nT(v_n)\tag{6}
T(v)=c1T(v1)+c2T(v2)+⋯+cnT(vn)(6) 写成矩阵形式,方便我们得到线性转换矩阵
A
A
A:
T
(
v
)
=
w
=
[
T
(
v
1
)
T
(
v
2
)
⋯
T
(
v
n
)
]
[
c
1
c
2
⋮
c
n
]
(7)
T(v)=w=\begin{bmatrix}T(v_1)&T(v_2)&\cdots&T(v_n)\end{bmatrix}\begin{bmatrix}c_1\\c_2\\\vdots c_n\end{bmatrix}\tag{7}
T(v)=w=[T(v1)T(v2)⋯T(vn)]c1c2⋮cn(7) 这个矩阵就是我们需要的转换矩阵:
A
=
[
T
(
v
1
)
T
(
v
2
)
⋯
T
(
v
n
)
]
(8)
A=\begin{bmatrix}T(v_1)&T(v_2)&\cdots&T(v_n)\end{bmatrix}\tag{8}
A=[T(v1)T(v2)⋯T(vn)](8) 其中
T
(
v
i
)
(
i
=
0
,
1
,
⋯
n
)
T(v_i)\quad (i=0,1,\cdots n)
T(vi)(i=0,1,⋯n) 不就是对输入向量基每一个进行的线性变换吗?显然的它的列与输入向量的维度有关,行与什么有关呢?当然是和输出向量基有关。也就是说,我们只要知道输入基的所有线性变换在新输出基下的表达,那么我们就可以完全确定这个线性变换。
例子1:假设已知输入基和输出基之间的线性映射结果,比如:
v
1
=
[
1
0
]
v
2
=
[
0
1
]
v_1=\begin{bmatrix}1\\0\end{bmatrix} \quad v_2=\begin{bmatrix}0\\1\end{bmatrix}
v1=[10]v2=[01] 经过新的变换后的结果为:
T
(
v
1
)
=
[
2
3
4
]
T
(
v
2
)
=
[
5
5
5
]
T(v_1)=\begin{bmatrix}2\\3\\4\end{bmatrix} \quad T(v_2)=\begin{bmatrix}5\\5\\5\end{bmatrix}
T(v1)=234T(v2)=555 对应的转换矩阵
A
A
A 应为:
A
=
[
T
(
v
1
)
T
(
v
2
)
]
=
[
2
5
3
5
4
5
]
A=\begin{bmatrix}T(v_1)&T(v_2)\end{bmatrix}=\begin{bmatrix}2&5\\3&5\\4&5\end{bmatrix}
A=[T(v1)T(v2)]=234555 给定变换前的向量
x
=
[
1
1
]
x=\begin{bmatrix}1\\1\end{bmatrix}
x=[11],线性变换的结果就可以通过计算得到线性变换结果:
y
=
A
x
=
[
7
8
9
]
y=Ax=\begin{bmatrix}7\\8\\9\end{bmatrix}
y=Ax=789
例子2 已知变换前向量空间为
V
=
R
2
\bold V=\bold R^2
V=R2,线性变换后的向量空间为
W
=
R
2
\bold W= R^2
W=R2,这个变换是
T
(
v
)
=
v
T(v)=v
T(v)=v。假设变换前后向量空间的基都处于同一坐标系,那么:
V
=
[
v
1
v
2
]
=
[
3
6
3
8
]
W
=
[
w
1
w
2
]
=
[
3
0
1
2
]
V=\begin{bmatrix}v_1&v_2\end{bmatrix}=\begin{bmatrix}3&6\\3&8\end{bmatrix} \quad W=\begin{bmatrix}w_1&w_2\end{bmatrix}=\begin{bmatrix}3&0\\1&2\end{bmatrix}
V=[v1v2]=[3368]W=[w1w2]=[3102] 因为
T
(
v
)
=
v
T(v)=v
T(v)=v 是一个单位变换(Identity transformation),所以:
v
1
=
1
w
1
+
1
w
2
v
2
=
2
w
1
+
3
w
2
(9)
v_1=1w_1+1w_2\\v_2=2w_1+3w_2\tag{9}
v1=1w1+1w2v2=2w1+3w2(9) 注意上面成立的条件是线性变换是
T
(
v
)
=
v
T(v)=v
T(v)=v 。,这样我们就知道变换后在新向量空间中的表达了:
T
(
v
1
)
=
[
1
1
]
T
(
v
2
)
=
[
2
3
]
T(v_1)=\begin{bmatrix}1\\1\end{bmatrix}\quad T(v_2)=\begin{bmatrix}2\\3\end{bmatrix}
T(v1)=[11]T(v2)=[23] 所需要的矩阵
A
=
[
1
2
1
3
]
A=\begin{bmatrix}1&2\\1&3\end{bmatrix}
A=[1123]。如果换成矩阵形式求解这个矩阵,那应该是:
W
A
=
V
A
=
W
−
1
V
WA= V\quad A=W^{-1}V
WA=VA=W−1V 这就告诉我们,如果我们要求线性变换矩阵,那么只需要将输出向量的基矩阵的逆
W
−
1
W^{-1}
W−1并且右乘输入基矩阵
V
V
V。
OK!上面求得矩阵
A
A
A 的关键找到了等式
(
9
)
(9)
(9),一般地[1],对于
T
(
v
)
=
v
T(v)=v
T(v)=v:
u
=
c
1
v
1
+
⋯
+
c
n
v
n
u
=
d
1
w
1
+
⋯
+
d
n
w
n
(10)
u=c_1v_1+\cdots+c_nv_n\\ u=d_1w_1+\cdots+d_nw_n\tag{10}
u=c1v1+⋯+cnvnu=d1w1+⋯+dnwn(10) 用矩阵表达则为:
[
T
(
v
1
)
T
(
v
2
)
⋯
T
(
v
n
)
]
c
=
[
w
1
w
2
⋯
w
m
]
d
V
c
=
W
d
\begin{aligned} \begin{bmatrix}T(v_1)&T(v_2)&\cdots&T(v_n)\end{bmatrix}c&=\begin{bmatrix}w_1&w_2\cdots&w_m\end{bmatrix}d\\ Vc&=Wd \end{aligned}
[T(v1)T(v2)⋯T(vn)]cVc=[w1w2⋯wm]d=Wd 线性变换后的向量为:
d
=
W
−
1
V
c
d= W^{-1}Vc
d=W−1Vc 如果输入向量基是单位正交基,那么有:
d
=
W
−
1
c
d=W^{-1}c
d=W−1c
例子3:求多项式微分:
v
=
c
1
+
c
2
x
+
c
3
x
2
+
c
4
x
3
v=c_1+c_2x+c_3x^2+c_4x^3
v=c1+c2x+c3x2+c4x3 的线性转换矩阵
A
A
A。
这次的例子不再是
T
(
v
)
=
v
T(v)=v
T(v)=v 这种单位线性变换,而微分变换,微分变换也是一种线性变换。可以看出变换前的基由四个部分组成,分别是 :
1
,
x
,
x
2
,
x
3
1,x,x^2,x^3
1,x,x2,x3 ,输出基是:
1
,
x
,
x
2
1,x,x^2
1,x,x2。分别输出基对他们进行线性变换
T
(
v
)
=
d
v
d
x
T(v)=\frac{dv}{dx}
T(v)=dxdv,结果用输出基表示。如第一个输入基是
1
1
1,那么:
1
′
=
0
=
0
×
1
+
0
×
x
+
0
×
x
2
x
′
=
1
=
1
×
1
+
0
×
x
+
0
×
x
2
(
x
2
)
′
=
2
x
=
0
×
1
+
2
×
x
+
0
×
x
2
(
x
3
)
′
=
3
x
2
=
0
×
1
+
0
×
x
+
3
×
x
2
\begin{aligned} 1'&=0&=0\times1+0\times x+0\times x^2\\ x'&=1&=1\times1+0\times x+0\times x^2\\ (x^2)'&=2x&=0\times1+2\times x+0\times x^2\\ (x^3)'&=3x^2&=0\times1+0\times x+3\times x^2 \end{aligned}
1′x′(x2)′(x3)′=0=1=2x=3x2=0×1+0×x+0×x2=1×1+0×x+0×x2=0×1+2×x+0×x2=0×1+0×x+3×x2 微分矩阵
A
A
A 可以写成:
A
=
[
0
1
0
0
0
0
2
0
0
0
0
3
]
A=\begin{bmatrix}0&1&0&0\\0&0&2&0\\0&0&0&3\end{bmatrix}
A=000100020003
如果线性变换不是单位变换,比如说
T
(
v
)
=
3
v
T(v)=3v
T(v)=3v,应该对其做一些调整:
u
=
c
1
v
1
+
⋯
+
c
n
v
n
3
u
=
d
1
w
1
+
⋯
+
d
n
w
n
u=c_1v_1+\cdots+c_nv_n\\ 3u=d_1w_1+\cdots+d_nw_n
u=c1v1+⋯+cnvn3u=d1w1+⋯+dnwn