十四、一些有趣的线性变换

1. 定义

我们已经学习了矩阵的加法和数乘,那么,线性变换的加法和数乘呢?线性变换的加法和数乘实际上就是矩阵的加法和数乘。

假设:

T: R^n \mapsto R^m, \; \; S: R^n \mapsto R^m

T(\vec{x}) = \underset{m \times n}{\mathbf{A}} \vec{x}, \;\; S(\vec{x}) = \underset{m \times n}{\mathbf{B}} \vec{x}

那么:

(T+S)(\vec{x}) = T(\vec{x}) + S(\vec{x})

(cT)(\vec{x}) = c(T(\vec{x}))

2. 证明

\begin{align*} T(\vec{x}) + S(\vec{x}) &= A \vec{x} + B \vec{x}\\ &= x_1 \vec{a_1} + x_2 \vec{a_2} + \cdots + x_n \vec{a_n} + x_1 \vec{b_1} + x_2 \vec{b_2} + \cdots + x_n \vec{b_n} \\ &= x_1 (\vec{a_1} + \vec{b_1}) + x_2 (\vec{a_2} + \vec{b_2}) + \cdots + x_n (\vec{a_n} + \vec{b_n}) \\ &= (A + B) \vec{x} \\ &= (T + S)(\vec{x}) \end{align*}

\begin{align*} (cT)(\vec{x}) &= (cA) \vec{x} \\ &= (c \vec{a_1} + c \vec{a_2} + \cdots + c \vec{a_n}) \vec{x} \\ &= x_1 c \vec{a_1} + x_2 c \vec{a_2} + \cdots + x_n c \vec{a_n} \\ &= c (x_1 \vec{a_1} + x_2 \vec{a_2} + \cdots + x_n \vec{a_n})\\ &= c (T(\vec{x})) \end{align*}

3. 通过线性变换的加法和数乘,构造一些有趣的变换

3.1 假如将R2空间中的三角形或任意图形沿Y轴翻转,且在Y轴方向上伸长两倍,那么,经过变换,x变成-x,y变成2y:

T \left ( \begin{bmatrix} x\\ y \end{bmatrix} \right ) = \begin{bmatrix} -x\\ 2y \end{bmatrix}

T变换的变换矩阵为:

\begin{bmatrix} -1 & 0\\ 0 & 2 \end{bmatrix}

上面的一个变换可以拆开成两个变换么?实际上可以拆开成:

变换1:沿Y轴翻转,变换矩阵为

\mathbf{A} = \begin{bmatrix} -1 & 0\\ 0 & 1 \end{bmatrix}

变换2:在Y轴方向伸长两倍,变换矩阵为

\mathbf{B} = \begin{bmatrix} 1 & 0\\ 0 & 2 \end{bmatrix}

T变换的变换矩阵实际是BA相乘:

\begin{align*} \mathbf{C} &= \mathbf{B} \mathbf{A} \\ &= \begin{bmatrix} -1 & 0\\ 0 & 2 \end{bmatrix} \end{align*}

3.2 旋转变换

旋转变换为线性变换,因此可以将旋转变换表示成矩阵向量积:

Rot_{\theta} (\vec{x}) = \mathbf{A} \vec{x}

变换矩阵A又可以用单位矩阵来表示,比如R2中的A可以表示为:
\begin{align*} \mathbf{A} &= \begin{bmatrix} Rot_{\theta}(\vec{e_1}) & Rot_{\theta}(\vec{e_2}) \end{bmatrix}\\ &= \begin{bmatrix} Rot_{\theta}(\begin{bmatrix} 1\\ 0 \end{bmatrix}) & Rot_{\theta}(\begin{bmatrix} 0\\ 1 \end{bmatrix}) \end{bmatrix}\\ &= \begin{bmatrix} \cos \theta & -\sin \theta \\ \sin \theta & \cos \theta \end{bmatrix} \end{align*}

比如R3中绕X轴旋转的A可以表示为:

\mathbf{A} = \begin{bmatrix} 1 & 0 & 0\\ 0 & \cos \theta & -\sin \theta\\ 0 & \sin \theta & \cos \theta \end{bmatrix}

4. 单位向量

长度为1的向量称为单位向量。向量的长度,某种程度上,是毕达哥拉斯定理(勾股定理)的推广。

单位向量在作某些变换的时候非常有用。那么,如何构造单位向量呢?假设非单位向量为:

\vec{v} = \begin{bmatrix} v_1\\ v_2\\ \cdots\\ v_n \end{bmatrix}

如果想把v变成单位向量u,那么:

\vec{u} = \frac{1}{\left \| \vec{v} \right \|} \vec{v}

证明过程如下:

\begin{align*} \left \| \vec{u} \right \| &= \left \| \frac{1}{\left \| \vec{v} \right \|} \vec{v} \right \|\\ &= \frac{1}{\left \| \vec{v} \right \|} \left \| \vec{v} \right \|\\ &= 1 \end{align*}

表示单位向量时,字母上面的箭头可以由尖号代替,例如:

\vec{u} \rightarrow \hat{u}

5. 向量到直线的投影

向量x到直线L的投影,即垂直于直线L的光,照在向量x上,然后在直线L上形成的影子,逻辑上比较好理解,但是必须通过更数学化的定义,才能求出投影。

更加数学化的定义:一个向量x在直线L上的投影,是L上的某个向量,假设该向量为Projection_l(\vec{x}),那么,\vec{x} - Projection_l(\vec{x}) 与直线L正交。

假设直线L为:

L = \left \{ c \vec{v} | c \in \mathbb{R} \right \}

其中,投影向量又可以表示为:

Proj_{l}(\vec{x}) = c \vec{v}

那么,\vec{x} - c \vec{v} 与直线L正交,意味着 \vec{x} - c \vec{v} 与直线L上的任意向量正交,根据正交的定义:

(\vec{x} - c \vec{v}) \cdot \vec{v} = 0

可以求出变量c,进而求出投影向量:

c = \frac{\vec{x} \cdot \vec{v}}{\vec{v} \cdot \vec{v}}

\begin{align*} Proj_l(\vec{x}) &= c \vec{v}\\ &= \left ( \frac{\vec{x} \cdot \vec{v}}{\vec{v} \cdot \vec{v}} \right ) \vec{v} \end{align*}

6. 投影变换

投影本质上是一种变换,且是线性变换。

直线L可以用单位向量来表示:

\hat{u} = \frac{1}{\left \| \vec{v} \right \|} \vec{v}

\begin{align*} L &= \left \{ c \vec{v} | c \in \mathbb{R} \right \}\\ &= \left \{ c (\left \| \vec{v} \right \| \hat{u}) | c \in \mathbb{R} \right \}\\ &= \left \{ (c \left \| \vec{v} \right \|) \hat{u} | c \in \mathbb{R} \right \}\\ &= \left \{ c' \hat{u} | c' \in \mathbb{R} \right \}\\ &= \left \{ c \hat{u} | c \in \mathbb{R} \right \} \end{align*}

因此,向量x到直线L的投影向量为:

\begin{align*} Proj_l(\vec{x}) &= \left ( \frac{\vec{x} \cdot \hat{u}}{\hat{u} \cdot \hat{u}} \right ) \hat{u}\\ &= \left ( \vec{x} \cdot \hat{u} \right ) \hat{u} \end{align*}

又因为投影变换是线性变换,因此投影变换可以表示为矩阵向量积:

\begin{align*} Proj_l(\vec{x}) &= \left ( \vec{x} \cdot \hat{u} \right ) \hat{u} = \mathbf{A} \vec{x}\\ &= \begin{bmatrix} Proj_l(\vec{e_1}) & Proj_l(\vec{e_2}) & \cdots & Proj_l(\vec{e_n}) \end{bmatrix} \vec{x} \end{align*}

比如,在二维空间中,投影变换的变换矩阵为:

\begin{align*} \mathbf{A} &= \begin{bmatrix} Proj_l(\vec{e_1}) & Proj_l(\vec{e_2}) \end{bmatrix}\\ &= \begin{bmatrix} Proj_l(\begin{bmatrix} 1\\ 0 \end{bmatrix}) & Proj_l(\begin{bmatrix} 0\\ 1 \end{bmatrix}) \end{bmatrix}\\ &= \begin{bmatrix} (\begin{bmatrix} 1\\ 0 \end{bmatrix} \cdot \begin{bmatrix} u_1\\ u_2 \end{bmatrix})\begin{bmatrix} u_1\\ u_2 \end{bmatrix} & (\begin{bmatrix} 0\\ 1 \end{bmatrix} \cdot \begin{bmatrix} u_1\\ u_2 \end{bmatrix})\begin{bmatrix} u_1\\ u_2 \end{bmatrix} \end{bmatrix}\\ &= \begin{bmatrix} u_1\begin{bmatrix} u_1\\ u_2 \end{bmatrix} & u_2\begin{bmatrix} u_1\\ u_2 \end{bmatrix} \end{bmatrix}\\ &= \begin{bmatrix} u_1^{2} & u_1 u_2\\ u_1 u_2 & u_2^{2} \end{bmatrix} \end{align*}

三维空间类似。

猜你喜欢

转载自blog.csdn.net/gutsyfarmer/article/details/92581189