上一期介绍了矩阵的出现源于解线性方程组。但是,矩阵出现之后,就犹如打开了潘多拉的盒子,会产生许多魔法。
1 旋转矩阵
我们知道用矩阵左乘某个向量,相当于对该向量做线性变换。那么是否有一种矩阵,能让向量旋转?例如,让二维平面上的向量
a
⃗
=
[
1
1
]
\vec{a}= \begin{bmatrix} 1 \\ 1 \end{bmatrix}
a=[11]逆时针旋转
3
0
∘
30^ \circ
30∘。
我们从基的角度来思考这个问题,如果我们能找到一个基,这个基与自然基相比,逆时针旋转了
3
0
∘
30^\circ
30∘,那么用这个基去左乘向量
a
⃗
\vec{a}
a,是不是就把
a
⃗
\vec{a}
a逆时针旋转了
3
0
∘
30^\circ
30∘,得到向量
b
⃗
\vec{b}
b,如下图所示。
图-1中,向量
c
1
⃗
\vec{c_1}
c1、
c
2
⃗
\vec{c_2}
c2是自然基
e
1
⃗
\vec{e_1}
e1、
e
2
⃗
\vec{e_2}
e2逆时针旋转
3
0
∘
30^\circ
30∘后得到的新基。那么,现在有个问题,怎么求使自然基旋转
θ
\theta
θ度后的新基
c
1
⃗
\vec{c_1}
c1,
c
2
⃗
\vec{c_2}
c2?
自然基
e
1
⃗
\vec{e_1}
e1、
e
2
⃗
\vec{e_2}
e2旋转
θ
\theta
θ度得到新基
c
1
⃗
\vec{c_1}
c1,
c
2
⃗
\vec{c_2}
c2,也就是
e
1
⃗
\vec{e_1}
e1与
c
1
⃗
\vec{c_1}
c1夹角为
θ
\theta
θ,
e
2
⃗
\vec{e_2}
e2与
c
2
⃗
\vec{c_2}
c2夹角为
θ
\theta
θ。所以,我们可以用向量余弦相似度来求。
先假设
c
1
⃗
=
(
x
1
,
x
2
)
T
\vec{c_1}= (x_1, x_2)^T
c1=(x1,x2)T,
c
2
⃗
=
(
y
1
,
y
2
)
T
\vec{c_2} =(y_1, y_2)^T
c2=(y1,y2)T,由余弦相似度公式可得
{
e
1
⃗
⋅
c
1
⃗
∥
e
1
⃗
∥
∥
c
1
⃗
∥
=
x
1
x
1
2
+
x
2
2
=
c
o
s
θ
e
2
⃗
⋅
c
2
⃗
∥
e
2
⃗
∥
∥
c
2
⃗
∥
=
y
2
y
1
2
+
y
2
2
=
c
o
s
θ
(1)
\begin{cases} \frac{\vec{e_1} \cdot \vec{c_1} }{\parallel \vec{e_1} \parallel \parallel \vec{c_1} \parallel} = \frac{x_1} {\sqrt{x_1^2 + x_2^2} }=cos\theta \\ \\ \frac{\vec{e_2} \cdot \vec{c_2} }{\parallel \vec{e_2} \parallel \parallel \vec{c_2} \parallel} = \frac{y_2} {\sqrt{y_1^2+y_2^2}} = cos\theta \end{cases} \tag{1}
⎩
⎨
⎧∥e1∥∥c1∥e1⋅c1=x12+x22x1=cosθ∥e2∥∥c2∥e2⋅c2=y12+y22y2=cosθ(1)
观察式(1),要使等式成立,是不是只要令 x 1 2 + x 2 2 = 1 , x 1 = cos θ , x 2 = sin θ \sqrt{x_1^2+x_2^2}=1, x_1=\cos \theta, x_2=\sin \theta x12+x22=1,x1=cosθ,x2=sinθ,就可以满足第一个等式;再令 y 1 2 + y 2 2 = 1 , 则 y 2 = cos θ , y 1 = − sin θ \sqrt{y_1^2+y_2^2}=1, 则y_2=\cos \theta, y_1=-\sin \theta y12+y22=1,则y2=cosθ,y1=−sinθ,就可以满足第二个等式。此时 c 1 ⃗ = [ x 1 x 2 ] \vec{c_1}=\begin{bmatrix} x_1 \\ x_2 \end{bmatrix} c1=[x1x2]与 c 2 ⃗ = [ y 1 y 2 ] \vec{c_2}=\begin{bmatrix} y_1 \\ y_2 \end{bmatrix} c2=[y1y2]正好正交(两向量垂直)。
于是,我们得到
(
c
1
⃗
c
2
⃗
)
=
[
cos
θ
−
sin
θ
sin
θ
cos
θ
]
(2)
\begin{pmatrix} \vec{c_1} & \vec{c_2} \end{pmatrix}=\begin{bmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{bmatrix} \tag{2}
(c1c2)=[cosθsinθ−sinθcosθ](2)
除了零向量,其它向量只要用式(2)这个矩阵左乘,就可以将向量逆时针旋转
θ
\theta
θ度,是不是很神奇。所以,我们把式(2)这个神奇的矩阵叫作旋转矩阵。
如果是按顺时针旋转,则应左乘下面这个矩阵
(
c
1
⃗
c
2
⃗
)
=
[
cos
θ
sin
θ
−
sin
θ
cos
θ
]
(3)
\begin{pmatrix} \vec{c_1} & \vec{c_2} \end{pmatrix}=\begin{bmatrix} \cos\theta & \sin\theta \\ -\sin\theta & \cos\theta \end{bmatrix} \tag{3}
(c1c2)=[cosθ−sinθsinθcosθ](3)
不知道你们有没用过矢量作图软件,软件有个功能是绕着线段某个端点旋转,这条线段的两个端点都不在原点。这种情况要怎么计算旋转后的坐标。如下图所示
即,令线段AB绕着A点逆时针旋转
θ
\theta
θ度至C点,求C点的坐标。
我没有开发过这类软件,如果说的不对或者还有更好的方法,欢迎朋友们在评论区留言。我是这样想的,首先,用终点坐标B减去起点坐标A,得到有向线段
A
B
⃗
\vec{AB}
AB的向量表示
(
1
,
1
)
T
(1, 1)^T
(1,1)T;然后,用式(2)中的旋转矩阵左乘向量,如式(4)所示
[ cos θ − sin θ sin θ cos θ ] [ 1 1 ] = [ cos θ − sin θ cos θ + sin θ ] (4) \begin{bmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{bmatrix} \begin{bmatrix} 1 \\ 1 \end{bmatrix}= \begin{bmatrix} \cos\theta - \sin\theta \\ \cos\theta + \sin\theta \end{bmatrix} \tag{4} [cosθsinθ−sinθcosθ][11]=[cosθ−sinθcosθ+sinθ](4)
最后,将式(4)右侧的向量加上A点坐标,即
[
cos
θ
−
sin
θ
+
1
cos
θ
+
sin
θ
+
1
]
(5)
\begin{bmatrix} \cos\theta - \sin\theta + 1 \\ \cos\theta + \sin\theta + 1 \end{bmatrix} \tag{5}
[cosθ−sinθ+1cosθ+sinθ+1](5)
式(5)中的向量就是C点坐标。
2 伸缩矩阵
假设有一条有向线段
A
B
⃗
\vec{AB}
AB沿着B点方向延长了
A
B
⃗
\vec{AB}
AB一倍的长度至点C,如下图所示,求C点坐标。
与上述方法一样,我们先将终点B的坐标减去起点A的坐标,得到有向线段
A
B
⃗
\vec{AB}
AB的向量表示。然后,用这个矩阵
[
2
0
0
1
]
\begin{bmatrix} 2 & 0 \\ 0 & 1 \end{bmatrix}
[2001]左乘向量,即
[
2
0
0
1
]
[
1
0
]
=
[
2
0
]
(5)
\begin{bmatrix} 2 & 0 \\ 0 & 1 \end{bmatrix} \begin{bmatrix} 1 \\0 \end{bmatrix}= \begin{bmatrix} 2 \\ 0 \end{bmatrix} \tag{5}
[2001][10]=[20](5)
最后,将式(5)右侧的向量加上A点坐标,得到C点坐标
(
3
,
1
)
T
(3, 1)^T
(3,1)T。左乘的这个矩阵给它一个名称,叫作伸缩矩阵。
这里我们也可以不用伸缩矩阵。因为是改变向量的长度,方向不变,所以还有一种更简单的方法就是直接用2乘以向量
[
1
,
0
]
T
[1, 0]^T
[1,0]T,即
2 ⋅ [ 1 0 ] = [ 2 0 ] 2 \cdot \begin{bmatrix} 1 \\ 0 \end{bmatrix}= \begin{bmatrix} 2 \\ 0 \end{bmatrix} 2⋅[10]=[20]
3 镜像矩阵
假设,如下图所示,有一个平行四边形ABCD要沿着直线
y
=
x
y=x
y=x翻转,翻转后的平行四边形为$A^\prime D^\prime C^\prime B^\prime $。
假设上图中点A、B、C、D的坐标分别为
(
a
1
,
a
2
)
,
(
b
1
,
b
2
)
,
(
c
1
,
c
2
)
,
(
d
1
,
d
2
)
(a_1, a_2), (b_1, b_2), (c_1, c_2), (d_1, d_2)
(a1,a2),(b1,b2),(c1,c2),(d1,d2),现在要求点
A
′
A^\prime
A′、
B
′
B^\prime
B′、
C
′
C^\prime
C′、
D
′
D^\prime
D′的坐标。
因为两个平行四边形的四个点关于
y
=
x
y=x
y=x对称,所以,各点的
x
,
y
x,y
x,y坐标对调一下就是镜像点的坐标。因此,可用矩阵
[
0
1
1
0
]
\begin{bmatrix} 0 & 1 \\ 1 & 0 \end{bmatrix}
[0110]左乘点A、B、C、D的坐标,得到点
A
′
A^\prime
A′、
B
′
B^\prime
B′、
C
′
C^\prime
C′、
D
′
D^\prime
D′坐标。
[ 0 1 1 0 ] [ a 1 b 1 c 1 d 1 a 2 b 2 c 2 d 2 ] = [ a 2 b 2 c 2 d 2 a 1 b 1 c 1 d 1 ] (6) \begin{bmatrix} 0 & 1 \\ 1 & 0 \\ \end{bmatrix} \begin{bmatrix} a_1 & b_1 & c_1 & d_1 \\ a_2 & b_2 & c_2 & d_2 \end{bmatrix}= \begin{bmatrix} a_2 & b_2 & c_2 & d_2 \\ a_1 & b_1 & c_1 & d_1 \end{bmatrix} \tag{6} [0110][a1a2b1b2c1c2d1d2]=[a2a1b2b1c2c1d2d1](6)
上式中,矩阵 [ 0 1 1 0 ] \begin{bmatrix} 0 & 1 \\ 1 & 0 \end{bmatrix} [0110]能使点A、B、C、D做关于直线 y = x y=x y=x的镜像变换,所以可称它为镜像矩阵。
4 矩阵函数
最后说说关于矩阵函数这个概念。我们通常用 A x = b \bold{Ax}=\bold{b} Ax=b表示线性方程组,如果把等号右侧的 b \bold{b} b替换为 y \bold{y} y,即 y = A x \bold{y}=\bold{Ax} y=Ax,它就是矩阵函数。式中的 x \bold{x} x和 y \bold{y} y代表一组自变量和一组因变量,自变量与因变量之间的关系蕴含在 A \bold{A} A里边。下面,我们一起看看矩阵 A \bold{A} A、自变量 x \bold{x} x、因变量 y \bold{y} y之间具体是什么关系。
A = [ a 11 a 12 a 21 a 22 ] , x = [ x 1 x 2 ] , y = [ y 1 y 2 ] \bold{A}=\begin{bmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \end{bmatrix},\bold{x}=\begin{bmatrix} x_1 \\ x_2 \end{bmatrix}, \bold{y}=\begin{bmatrix} y_1 \\ y_2 \end{bmatrix} A=[a11a21a12a22],x=[x1x2],y=[y1y2]
[
y
1
y
2
]
=
[
a
11
a
12
a
21
a
22
]
[
x
1
x
2
]
(7)
\begin{bmatrix} y_1 \\ y_2 \end{bmatrix}= \begin{bmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \end{bmatrix} \tag{7}
[y1y2]=[a11a21a12a22][x1x2](7)
即,
{
y
1
=
a
11
x
1
+
a
12
x
2
y
2
=
a
21
x
1
+
a
22
x
2
(8)
\begin{equation} \left\{ \begin{array}{c} y_1=a_{11}x_1 + a_{12}x_2 \\ y_2=a_{21}x_1 + a_{22}x_2 \end{array} \right. \end{equation} \tag{8}
{y1=a11x1+a12x2y2=a21x1+a22x2(8)
从式(8)可以看出,因变量 y 1 y_1 y1与自变量 x 1 , x 2 x_1, x_2 x1,x2都有关系,也就是 y 1 y_1 y1与所有的自变量都有关系。同样的, y 2 y_2 y2与所有的自变量都有关系。但是 y 1 y_1 y1只与矩阵 A \bold{A} A的第一行有关系, y 2 y_2 y2只与矩阵 A \bold{A} A的第二行有关系。
假设某椭圆
E
\mathfrak{E}
E的参数方程为
{
x
=
2
cos
α
y
=
sin
α
,
0
⩽
α
⩽
2
π
\begin{cases} x=2\cos \alpha \\ y=\sin \alpha \end{cases}, \quad 0\leqslant \alpha \leqslant 2\pi
{x=2cosαy=sinα,0⩽α⩽2π.
令式(7)中的
x
1
=
2
cos
α
,
x
2
=
sin
α
x_1=2\cos\alpha, \quad x_2=\sin \alpha
x1=2cosα,x2=sinα,再令式(7)中的
[
a
11
a
12
a
21
a
22
]
\begin{bmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \end{bmatrix}
[a11a21a12a22]等于式(2)中的旋转矩阵,即
[ a 11 a 12 a 21 a 22 ] = [ cos θ − sin θ sin θ cos θ ] \begin{bmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \end{bmatrix}= \begin{bmatrix} \cos \theta & -\sin \theta \\ \sin \theta & \cos \theta \end{bmatrix} [a11a21a12a22]=[cosθsinθ−sinθcosθ]
则有
[
y
1
y
2
]
=
[
cos
θ
−
sin
θ
sin
θ
cos
θ
]
[
2
cos
α
sin
α
]
,
0
⩽
α
⩽
2
π
(9)
\begin{bmatrix} y_1 \\ y_2 \end{bmatrix}= \begin{bmatrix} \cos \theta & -\sin \theta \\ \sin \theta & \cos \theta \end{bmatrix} \begin{bmatrix} 2\cos \alpha \\ \sin \alpha \end{bmatrix}, \qquad 0 \leqslant \alpha \leqslant 2\pi \tag{9}
[y1y2]=[cosθsinθ−sinθcosθ][2cosαsinα],0⩽α⩽2π(9)
那么,式(9)所示的矩阵函数表示的是椭圆
E
\mathfrak{E}
E逆时针旋转
θ
\theta
θ度后的椭圆。