矩阵
方阵
行数和列数相同的矩阵称作方阵。
方阵的对角线元素就是方阵中行号和列号相同的元素。其余元素均为非对角线元素。简单的说,方阵的对角线元素就是方阵对角线上的元素。
如果所有非对角线元素都为0,那么称这种矩阵为对角矩阵,例如:
[
9
0
0
0
0
1
0
0
0
0
−
5
0
0
0
0
−
3
]
\begin{bmatrix} 9&0&0&0\\ 0&1&0&0\\ 0&0&-5&0\\ 0&0&0&-3 \end{bmatrix}
⎣⎢⎢⎡9000010000−50000−3⎦⎥⎥⎤
单位矩阵是一种特殊的对角矩阵。n维单位矩阵记作
I
n
I_n
In,对角线元素为1,其他元素为0。下面是一个
3
×
3
3\times 3
3×3的单位矩阵:
[
1
0
0
0
1
0
0
0
1
]
\begin{bmatrix}1&0&0\\0&1&0\\0&0&1\end{bmatrix}
⎣⎡100010001⎦⎤
单位矩阵非常特殊,因为它是矩阵的乘法单位元。其基本性质是用任意一个矩阵乘以单位矩阵,都将得到原矩阵。
转置
考虑一个
r
×
c
r\times c
r×c矩阵M。M的转置记作
M
T
M^T
MT,是一个
c
×
r
c\times r
c×r矩阵,它的列由M的行组成。
M
i
j
T
=
M
j
i
M_{ij}^T=M_{ji}
MijT=Mji。
[
1
2
3
4
5
6
7
8
9
10
11
12
]
T
=
[
1
4
7
10
2
5
8
11
3
6
9
12
]
[
a
b
c
d
e
f
g
h
i
]
T
=
[
a
d
g
b
e
h
c
f
i
]
\begin{bmatrix}1&2&3\\4&5&6\\7&8&9\\10&11&12\end{bmatrix}^T=\begin{bmatrix}1&4&7&10\\2&5&8&11\\3&6&9&12\end{bmatrix}\begin{bmatrix}a&b&c\\d&e&f\\g&h&i\end{bmatrix}^T=\begin{bmatrix}a&d&g\\b&e&h\\c&f&i\end{bmatrix}
⎣⎢⎢⎡147102581136912⎦⎥⎥⎤T=⎣⎡123456789101112⎦⎤⎣⎡adgbehcfi⎦⎤T=⎣⎡abcdefghi⎦⎤
对于向量来说,转置将使行向量变成列向量,使列向量变成行向量。
[
x
y
z
]
T
=
[
x
y
z
]
[
x
y
z
]
T
=
[
x
y
z
]
\begin{bmatrix}x&y&z\end{bmatrix}^T=\begin{bmatrix}x\\y\\z\end{bmatrix}\ \begin{bmatrix}x\\y\\z\end{bmatrix}^T=\begin{bmatrix}x&y&z\end{bmatrix}
[xyz]T=⎣⎡xyz⎦⎤ ⎣⎡xyz⎦⎤T=[xyz]
有两条非常简单但很重要的关于矩阵转置的引理:
- 对于任意矩阵M, ( M T ) T = M (M^T)^T=M (MT)T=M。
- 对于任意对角矩阵D, D T = D D^T=D DT=D。
标量与矩阵的乘法
矩阵M能和标量k相乘,结果是一个和M维数相同的矩阵。
k
M
=
k
[
m
11
m
12
m
13
m
21
m
22
m
23
m
31
m
32
m
33
]
=
[
k
m
11
k
m
12
k
m
13
k
m
21
k
m
22
k
m
23
k
m
31
k
m
32
k
m
33
]
kM=k\begin{bmatrix}m_{11}&m_{12}&m_{13}\\m_{21}&m_{22}&m_{23}\\m_{31}&m_{32}&m_{33}\end{bmatrix}=\begin{bmatrix}km_{11}&km_{12}&km_{13}\\km_{21}&km_{22}&km_{23}\\km_{31}&km_{32}&km_{33}\end{bmatrix}
kM=k⎣⎡m11m21m31m12m22m32m13m23m33⎦⎤=⎣⎡km11km21km31km12km22km32km13km23km33⎦⎤
矩阵乘法
特别:矩阵的乘法和向量的乘法是完全不一样,注意区分。
有两个矩阵A和B,要使得AB乘法有意义,那么A的列数必须等于B的行数。
注意:AB
≠
\not =
=BA
矩阵乘法计算如下:
c
i
j
=
∑
k
=
1
n
a
i
k
b
k
j
c_{ij}=\sum_{k=1}^na_{ik}b_{kj}
cij=k=1∑naikbkj
对结果中的任意元素
c
i
j
c_{ij}
cij,取A的第
i
i
i行和B的第
j
j
j列,将行和列找那个的对应元素相乘,然后将结果相加(等于A的
i
i
i行和B的
j
j
j列的点积)。
关于矩阵乘法的注意事项:
- 任意矩阵M乘以方阵S,不管从哪边乘,都将得到与原矩阵大小相同的矩阵。
- 矩阵乘法不满足交换律。
- 矩阵乘法满足结合律,即:(AB)C=A(BC)。也可扩展到多个矩阵的情况,如:**ABCD=A(BC)D=A(B(CD)**注意所有括法都能计算出正确结果,但有些组中标量乘法更少。寻找使标量乘法最少的括法的问题称作:矩阵链问题。
- 矩阵乘法也满足与标量或向量的结合律。
- 矩阵积的转置相当于先转置矩阵然后以相反的顺序乘: ( A B ) T = B T A T (AB)^T=B^TA^T (AB)T=BTAT,这一结论可以扩展到多个矩阵的情况。
向量与矩阵的乘法
因为向量能被当作是一行或一列的的矩阵,所以能够用矩阵乘法的规则与矩阵相乘。在这里,行向量和列向量的区别非常重要。
[
x
y
z
]
[
m
11
m
12
m
13
m
21
m
22
m
23
m
31
m
32
m
33
]
=
[
x
m
11
+
y
m
21
+
z
m
31
x
m
12
+
y
m
22
+
z
m
32
x
m
13
+
y
m
23
+
z
m
33
]
\begin{bmatrix}x&y&z\end{bmatrix}\begin{bmatrix}m_{11}&m_{12}&m_{13}\\m_{21}&m_{22}&m_{23}\\m_{31}&m_{32}&m_{33}\end{bmatrix}=\begin{bmatrix}xm_{11}+ym_{21}+zm_{31}&xm_{12}+ym_{22}+zm_{32}&xm_{13}+ym_{23}+zm_{33}\end{bmatrix}
[xyz]⎣⎡m11m21m31m12m22m32m13m23m33⎦⎤=[xm11+ym21+zm31xm12+ym22+zm32xm13+ym23+zm33]
[
m
11
m
12
m
13
m
21
m
22
m
23
m
31
m
32
m
33
]
[
x
y
z
]
=
[
x
m
11
+
y
m
12
+
z
m
13
x
m
21
+
y
m
22
+
z
m
23
x
m
31
+
y
m
32
+
z
m
33
]
\begin{bmatrix}m_{11}&m_{12}&m_{13}\\m_{21}&m_{22}&m_{23}\\m_{31}&m_{32}&m_{33}\end{bmatrix}\begin{bmatrix}x\\y\\z\end{bmatrix}=\begin{bmatrix}xm_{11}+ym_{12}+zm_{13}\\xm_{21}+ym_{22}+zm_{23}\\xm_{31}+ym_{32}+zm_{33}\end{bmatrix}
⎣⎡m11m21m31m12m22m32m13m23m33⎦⎤⎣⎡xyz⎦⎤=⎣⎡xm11+ym12+zm13xm21+ym22+zm23xm31+ym32+zm33⎦⎤
[
m
11
m
12
m
13
m
21
m
22
m
23
m
31
m
32
m
33
]
[
x
y
z
]
=
(
无
定
义
)
\begin{bmatrix}m_{11}&m_{12}&m_{13}\\m_{21}&m_{22}&m_{23}\\m_{31}&m_{32}&m_{33}\end{bmatrix}\begin{bmatrix}x&y&z\end{bmatrix}=(无定义)
⎣⎡m11m21m31m12m22m32m13m23m33⎦⎤[xyz]=(无定义)
[
x
y
z
]
[
m
11
m
12
m
13
m
21
m
22
m
23
m
31
m
32
m
33
]
=
(
无
定
义
)
\begin{bmatrix}x\\y\\z\end{bmatrix}\begin{bmatrix}m_{11}&m_{12}&m_{13}\\m_{21}&m_{22}&m_{23}\\m_{31}&m_{32}&m_{33}\end{bmatrix}=(无定义)
⎣⎡xyz⎦⎤⎣⎡m11m21m31m12m22m32m13m23m33⎦⎤=(无定义)
关于矩阵和向量相乘的注意事项:
- 结果向量中的每个元素都是原向量与矩阵中单独行或列元素的点积
- 矩阵——向量乘法满足对向量加法的分配律。对于向量v、w和矩阵M,有:
( v + w ) M = v M + w M (v+w)M = vM+wM (v+w)M=vM+wM
矩阵是怎样变换向量的
向量在几何上能被解释为一系列与轴平行的位移。如,向量
[
1
,
−
3
,
−
4
]
\begin{bmatrix}1,-3,-4\end{bmatrix}
[1,−3,−4]能被解释成位移
[
1
,
0
,
0
]
\begin{bmatrix}1,0,0\end{bmatrix}
[1,0,0],随后位移
[
0
,
−
3
,
0
]
\begin{bmatrix}0,-3,0\end{bmatrix}
[0,−3,0],最后位移
[
0
,
0
,
−
4
]
\begin{bmatrix}0,0,-4\end{bmatrix}
[0,0,−4]。
一般来说,任意向量v都能写为“扩展”形式:
v
=
[
x
y
z
]
=
[
x
0
0
]
+
[
0
y
0
]
+
[
0
0
z
]
v=\begin{bmatrix}x\\y\\z\end{bmatrix}=\begin{bmatrix}x\\0\\0\end{bmatrix}+\begin{bmatrix}0\\y\\0\end{bmatrix}+\begin{bmatrix}0\\0\\z\end{bmatrix}
v=⎣⎡xyz⎦⎤=⎣⎡x00⎦⎤+⎣⎡0y0⎦⎤+⎣⎡00z⎦⎤
或者:
v
=
[
x
y
z
]
=
x
[
1
0
0
]
+
y
[
0
1
0
]
+
z
[
0
0
1
]
v=\begin{bmatrix}x\\y\\z\end{bmatrix}=x\begin{bmatrix}1\\0\\0\end{bmatrix}+y\begin{bmatrix}0\\1\\0\end{bmatrix}+z\begin{bmatrix}0\\0\\1\end{bmatrix}
v=⎣⎡xyz⎦⎤=x⎣⎡100⎦⎤+y⎣⎡010⎦⎤+z⎣⎡001⎦⎤
将上面的向量和重新写一遍,分别将p,g,r定义为指向+x、+y和+z方向的单位向量:
v
=
x
p
+
y
q
+
z
r
v=xp+yq+zr
v=xp+yq+zr
现在,向量v就被表示成向量p,g,r的线性变换了。向量p,g,r称作基向量。
以p,g,r为行,构建一个矩阵M:
M
=
[
p
g
r
]
=
[
p
x
p
y
p
z
g
x
g
y
g
z
r
x
r
y
r
z
]
M=\begin{bmatrix}p\\g\\r\end{bmatrix}=\begin{bmatrix}p_x&p_y&p_z\\g_x&g_y&g_z\\r_x&r_y&r_z\end{bmatrix}
M=⎣⎡pgr⎦⎤=⎣⎡pxgxrxpygyrypzgzrz⎦⎤
用一个向量乘以该矩阵,得到:
[
x
y
z
]
[
p
g
r
]
=
x
p
+
y
g
+
z
r
=
[
x
p
x
+
y
g
x
+
z
r
x
x
p
y
+
y
g
y
+
z
r
y
x
p
z
+
y
g
z
+
z
r
z
]
\begin{bmatrix}x&y&z\end{bmatrix}\begin{bmatrix}p\\g\\r\end{bmatrix}=xp+yg+zr=\begin{bmatrix}xp_x+yg_x+zr_x&xp_y+yg_y+zr_y&xp_z+yg_z+zr_z\end{bmatrix}
[xyz]⎣⎡pgr⎦⎤=xp+yg+zr=[xpx+ygx+zrxxpy+ygy+zryxpz+ygz+zrz]
不难发现这里和v的等式相同。
如果把矩阵的行解释为坐标系的基向量,那么乘以该矩阵就相当于进行了一次坐标变换,若有aM=b,我们就可以,M将a转换到b。
矩阵的形式
我们曾宣称矩阵表达坐标转换。怎样构建一个矩阵来做这个转换?
先看一下基向量
[
1
,
0
,
0
]
[
0
,
1
,
0
]
[
0
,
0
,
1
]
\begin{bmatrix}1,0,0\end{bmatrix}\begin{bmatrix}0,1,0\end{bmatrix}\begin{bmatrix}0,0,1\end{bmatrix}
[1,0,0][0,1,0][0,0,1]乘以任意矩阵M时的情况:
[
1
,
0
,
0
]
[
m
11
m
12
m
13
m
21
m
22
m
23
m
31
m
32
m
33
]
=
[
m
11
m
12
m
13
]
\begin{bmatrix}1,0,0\end{bmatrix}\begin{bmatrix}m_{11}&m_{12}&m_{13}\\m_{21}&m_{22}&m_{23}\\m_{31}&m_{32}&m_{33}\end{bmatrix}=\begin{bmatrix}m_{11}&m_{12}&m_{13}\end{bmatrix}
[1,0,0]⎣⎡m11m21m31m12m22m32m13m23m33⎦⎤=[m11m12m13]
[
0
,
1
,
0
]
[
m
11
m
12
m
13
m
21
m
22
m
23
m
31
m
32
m
33
]
=
[
m
21
m
22
m
23
]
\begin{bmatrix}0,1,0\end{bmatrix}\begin{bmatrix}m_{11}&m_{12}&m_{13}\\m_{21}&m_{22}&m_{23}\\m_{31}&m_{32}&m_{33}\end{bmatrix}=\begin{bmatrix}m_{21}&m_{22}&m_{23}\end{bmatrix}
[0,1,0]⎣⎡m11m21m31m12m22m32m13m23m33⎦⎤=[m21m22m23]
[
0
,
0
,
1
]
[
m
11
m
12
m
13
m
21
m
22
m
23
m
31
m
32
m
33
]
=
[
m
31
m
32
m
33
]
\begin{bmatrix}0,0,1\end{bmatrix}\begin{bmatrix}m_{11}&m_{12}&m_{13}\\m_{21}&m_{22}&m_{23}\\m_{31}&m_{32}&m_{33}\end{bmatrix}=\begin{bmatrix}m_{31}&m_{32}&m_{33}\end{bmatrix}
[0,0,1]⎣⎡m11m21m31m12m22m32m13m23m33⎦⎤=[m31m32m33]
正如您所见,用基向量
[
1
,
0
,
0
]
\begin{bmatrix}1,0,0\end{bmatrix}
[1,0,0]乘以M时,结果M的第一行。其他两行也有同样的结果。这是一个关键的发现:
矩阵的每一行都能解释为转换后的基向量。
这个强有力的概念有两条重要的性质:
- 有了一个简单的方法来形象化解释矩阵所代表的变换。
- 有了反向建立矩阵的可能——给出了一个期望的变换(如旋转、缩放等),能够构造一个矩阵代表此变换。我们所要做的一切就是计算基向量的变换,然后将变换后的基向量填入矩阵。