前言
前面的两篇笔记我们都有多多少少提到过矩阵的乘法,尤其是在矩阵消元法中,我们介绍过行向量与矩阵相乘的情况,那么这篇笔记我们将开始正式探讨矩阵乘法的四种运算方式,你会发现他们的理解方式不尽相同,但是得到的答案确是出奇的一致!
正文
1.常规方法
如果你在大学学习过线性代数这门课,那么大概率你是知道这种方法的,现在让我们看栗子:
[
1
3
1
−
3
1
2
]
[
1
2
1
3
8
1
0
4
1
]
\begin{bmatrix}1&3&1\\-3&1&2\end{bmatrix}\begin{bmatrix}1&2&1\\3&8&1\\0&4&1\end{bmatrix}
[1−33112]
130284111
在开始计算之前,我们需要补充一个非常重要的知识点,那就是两个矩阵能相乘的前提的它们的维度必须是要对的上,比如第一个矩阵的维度是
2
×
3
2×3
2×3的,第二个矩阵的维度是
3
×
3
3×3
3×3的,左边矩阵的列数和右边矩阵的行数是相同的,那么这两个矩阵就可以被相乘,并且得到的矩阵的维度是
2
×
3
2×3
2×3的(左边矩阵的行数×右边矩阵的列数)
现在如果我们想得到这两个矩阵相乘的结果,我们只需要将行与列相乘再相加就可以得到答案,我们先将左边矩阵的第一行与右边矩阵的第一列相乘再相加:
[
1
3
1
−
3
1
2
]
[
1
2
1
3
8
1
0
4
1
]
=
[
10
.
.
.
.
.
]
\begin{bmatrix}1&3&1\\-3&1&2\end{bmatrix}\begin{bmatrix}1&2&1\\3&8&1\\0&4&1\end{bmatrix}=\begin{bmatrix}10&.&.\\.&.&.\end{bmatrix}
[1−33112]
130284111
=[10.....] OK,我们得到了第一行第一列的元素是
1
×
1
+
3
×
3
+
1
×
0
=
10
1×1+3×3+1×0=10
1×1+3×3+1×0=10,让我们按部就班,将等式右边的矩阵补充完整!
[
1
3
1
−
3
1
2
]
[
1
2
1
3
8
1
0
4
1
]
=
[
10
30
5
0
10
0
]
\begin{bmatrix}1&3&1\\-3&1&2\end{bmatrix}\begin{bmatrix}1&2&1\\3&8&1\\0&4&1\end{bmatrix}=\begin{bmatrix}10&30&5\\0&10&0\end{bmatrix}
[1−33112]
130284111
=[100301050] 现在我们已经得到了两个矩阵相乘的结果了,这非常简单!让我们更进一步将其抽象为一个数学公式来表示这个常规方法的运算模式,首先,我们将刚刚的式子里的元素全部用字母表示:
[
a
11
a
12
a
13
a
21
a
22
a
23
]
[
b
11
b
12
b
13
b
21
b
22
b
23
b
31
b
32
b
33
]
=
[
c
11
c
12
c
13
c
21
c
22
c
23
]
\begin{bmatrix}a_{11}&a_{12}&a_{13}\\a_{21}&a_{22}&a_{23}\end{bmatrix}\begin{bmatrix}b_{11}&b_{12}&b_{13}\\b_{21}&b_{22}&b_{23}\\b_{31}&b_{32}&b_{33}\end{bmatrix}=\begin{bmatrix}c_{11}&c_{12}&c_{13}\\c_{21}&c_{22}&c_{23}\end{bmatrix}
[a11a21a12a22a13a23]
b11b21b31b12b22b32b13b23b33
=[c11c21c12c22c13c23] 根据上面的运算法则,我们可以得到:
c
11
=
a
11
b
11
+
a
12
b
21
+
a
13
b
31
c_{11}=a_{11}b_{11}+a_{12}b_{21}+a_{13}b_{31}
c11=a11b11+a12b21+a13b31 如果我们现在想求第
i
i
i行,第
j
j
j列的元素,那么就是:
c
i
j
=
a
i
1
b
1
j
+
a
i
2
b
2
j
+
a
i
3
b
3
j
c_{ij}=a_{i1}b_{1j}+a_{i2}b_{2j}+a_{i3}b_{3j}
cij=ai1b1j+ai2b2j+ai3b3j 现在我们就可以推导出常规方法的数学表达式了:
c
i
j
=
∑
k
=
1
n
a
i
k
+
b
k
j
c_{ij}=\sum_{k=1}^{n} a_{ik}+b_{kj}
cij=k=1∑naik+bkj 可能有些同学觉得这个式子有些复杂,但是你只需要记住:想要哪一行那一列的元素,取左边的对应行的元素与右边的对应列的元素相乘再相加就可以了,这里咱们就不再过多展开了。
2.列方法
讲完常规的方法,让我们换一种思路来看待我们的矩阵乘法,首先,我们还是举上面的例子:
[
1
3
1
−
3
1
2
]
[
1
2
1
3
8
1
0
4
1
]
\begin{bmatrix}1&3&1\\-3&1&2\end{bmatrix}\begin{bmatrix}1&2&1\\3&8&1\\0&4&1\end{bmatrix}
[1−33112]
130284111
现在我想引用我之前第一篇笔记线性方程的几何中的一个栗子来帮助我们更好地理解列方法:
[
2
−
1
−
1
2
]
[
x
y
]
=
x
[
2
−
1
]
+
y
[
−
1
2
]
=
[
0
3
]
\begin{bmatrix}2&-1\\-1&2\end{bmatrix}\begin{bmatrix}x\\y\\\end{bmatrix}=x\begin{bmatrix}2\\-1\end{bmatrix}+y\begin{bmatrix}-1\\2\end{bmatrix}=\begin{bmatrix}0\\3\end{bmatrix}
[2−1−12][xy]=x[2−1]+y[−12]=[03] 当时我们将左边系数矩阵拆成了两个向量,而
x
x
x和
y
y
y表示向量的倍数,那么这里我们能不能逆向思维一下,我们能不能把右边的矩阵看作三个列向量:
[
1
3
0
]
,
[
2
8
4
]
,
[
1
1
1
]
\begin{bmatrix}1\\3\\0\end{bmatrix},\begin{bmatrix}2\\8\\4\end{bmatrix},\begin{bmatrix}1\\1\\1\end{bmatrix}
130
,
284
,
111
OK,现在我们的问题又变回了矩阵乘列向量了,我们取上面的第一个列向量左乘矩阵
[
1
3
1
−
3
1
2
]
\begin{bmatrix}1&3&1\\-3&1&2\end{bmatrix}
[1−33112],就可以将式子变回我们熟悉的模样:
[
1
3
1
−
3
1
2
]
[
1
3
0
]
=
1
[
1
−
3
]
+
3
[
3
1
]
+
0
[
1
2
]
=
[
10
0
]
\begin{bmatrix}1&3&1\\-3&1&2\end{bmatrix}\begin{bmatrix}1\\3\\0\end{bmatrix}=1\begin{bmatrix}1\\-3\end{bmatrix}+3\begin{bmatrix}3\\1\end{bmatrix}+0\begin{bmatrix}1\\2\end{bmatrix}=\begin{bmatrix}10\\0\end{bmatrix}
[1−33112]
130
=1[1−3]+3[31]+0[12]=[100] 现在,我们的乘法似乎开始具象起来了,你会发现这么一操作,我们得到了我们所求矩阵的第一列(我们在常规方法里面已经计算过了),而对于几何意义来说,我们求得了一个新的向量
我们取第二列和第三列进行计算,也分别得到了两个新的向量:
[
30
10
]
,
[
5
0
]
\begin{bmatrix}30\\10\end{bmatrix},\begin{bmatrix}5\\0\end{bmatrix}
[3010],[50] 最后将这些向量合并起来就得到了我们求解的矩阵,也就是说,我们通过两个矩阵的乘法,使得三个二维向量变成了三个新的二维向量,是不是豁然开朗,矩阵的乘法原来还可以这么玩!
补充一些图示,让大家更加直观一些:
3.行方法
行方法与列方法是刚好相反的,也就是我们会把右边矩阵拆成三个行向量,然后将其看为行向量右乘一个矩阵,我们结合案例来看,先把其变为我们熟悉的形式:
[
1
3
1
]
[
1
2
1
3
8
1
0
4
1
]
\begin{bmatrix}1&3&1\end{bmatrix}\begin{bmatrix}1&2&1\\3&8&1\\0&4&1\end{bmatrix}
[131]
130284111
没错,这个形式我们在矩阵消元法中有提到过,我们只需要将右侧的矩阵也拆成三个行向量:
[
1
2
1
]
,
[
3
8
1
]
,
[
0
4
1
]
\begin{bmatrix}1&2&1\end{bmatrix},\begin{bmatrix}3&8&1\end{bmatrix},\begin{bmatrix}0&4&1\end{bmatrix}
[121],[381],[041] 让我们算出他的结果:
1
×
[
1
2
1
]
+
3
×
[
3
8
1
]
+
1
×
[
0
4
1
]
=
[
10
30
5
]
1×\begin{bmatrix}1&2&1\end{bmatrix}+3×\begin{bmatrix}3&8&1\end{bmatrix}+1×\begin{bmatrix}0&4&1\end{bmatrix}=\begin{bmatrix}10&30&5\end{bmatrix}
1×[121]+3×[381]+1×[041]=[10305] 同理,我们也可以求出第二行的答案:
[
−
3
1
2
]
[
1
2
1
3
8
1
0
4
1
]
=
−
3
×
[
1
2
1
]
+
1
×
[
3
8
1
]
+
2
×
[
0
4
1
]
=
[
0
10
0
]
\begin{bmatrix}-3&1&2\end{bmatrix}\begin{bmatrix}1&2&1\\3&8&1\\0&4&1\end{bmatrix}=-3×\begin{bmatrix}1&2&1\end{bmatrix}+1×\begin{bmatrix}3&8&1\end{bmatrix}+2×\begin{bmatrix}0&4&1\end{bmatrix}=\begin{bmatrix}0&10&0\end{bmatrix}
[−312]
130284111
=−3×[121]+1×[381]+2×[041]=[0100] OK,现在我就可以得到答案了:
[
1
3
1
−
3
1
2
]
[
1
2
1
3
8
1
0
4
1
]
=
[
10
30
5
0
10
0
]
\begin{bmatrix}1&3&1\\-3&1&2\end{bmatrix}\begin{bmatrix}1&2&1\\3&8&1\\0&4&1\end{bmatrix}=\begin{bmatrix}10&30&5\\0&10&0\end{bmatrix}
[1−33112]
130284111
=[100301050]我们发现,使用行方法来理解矩阵乘法的话,两个矩阵相乘相当于两个三维向量变成了新的三维向量,是不是很神奇!
同样补充一下三维图,不过三维向量比较难观察,加上笔者的作图能力不强,所以大家凑合看吧。
4.列×行方法
首先,这是一个我乱编的名称,学术上管这个叫外积,但是为了形象生动,我把它叫做了列×行方法,废话不多说,我们来看栗子:
[
2
3
4
]
[
1
6
]
\begin{bmatrix}2\\3\\4\end{bmatrix}\begin{bmatrix}1&6\end{bmatrix}
234
[16] 这两个矩阵相乘的结果的维度肯定是
3
×
2
3×2
3×2的,现在让我们练习一下常规方法,写出它的答案:
[
2
3
4
]
[
1
6
]
=
[
2
12
3
18
4
24
]
\begin{bmatrix}2\\3\\4\end{bmatrix}\begin{bmatrix}1&6\end{bmatrix}= \begin{bmatrix}2&12\\3&18\\4&24\end{bmatrix}
234
[16]=
234121824
OK,现在让我们稍微改变一下这个式子:
[
2
1
3
1
4
1
]
[
1
6
1
0
]
\begin{bmatrix}2&1\\3&1\\4&1\end{bmatrix}\begin{bmatrix}1&6\\1&0\end{bmatrix}
234111
[1160] 现在我们再用常规方法来求一下它的答案:
[
3
12
4
18
5
24
]
\begin{bmatrix}3&12\\4&18\\5&24\end{bmatrix}
345121824
我们发现了非常神奇的现象,矩阵第一列加上了
[
1
1
1
]
\begin{bmatrix}1\\1\\1\end{bmatrix}
111
,而右边并没有什么变化,这时候细心的同学已经看出端倪了,加上的向量不就是我们我们左边矩阵的第二列吗?没错,现在让我们来稍作变化,你就知道这是怎么回事了:
[
3
12
4
18
5
24
]
=
[
2
12
3
18
4
24
]
+
[
1
0
1
0
1
0
]
=
[
2
3
4
]
[
1
6
]
+
[
1
1
1
]
[
1
0
]
\begin{bmatrix}3&12\\4&18\\5&24\end{bmatrix}=\begin{bmatrix}2&12\\3&18\\4&24\end{bmatrix}+\begin{bmatrix}1&0\\1&0\\1&0\end{bmatrix}=\begin{bmatrix}2\\3\\4\end{bmatrix}\begin{bmatrix}1&6\end{bmatrix}+\begin{bmatrix}1\\1\\1\end{bmatrix}\begin{bmatrix}1&0\end{bmatrix}
345121824
=
234121824
+
111000
=
234
[16]+
111
[10] 我们这么一波反向推导,就可以得出结论:
A
B
=
∑
k
=
1
n
A
c
o
l
k
×
B
r
o
w
k
AB=\sum_{k=1}^{n}A_{colk}×B_{rowk}
AB=k=1∑nAcolk×Browk 也就是第一个矩阵的列与第二个矩阵的行相乘然后再相加。
5.分块矩阵的运算
如果我们想得到
9
×
9
9×9
9×9维度的矩阵与另一个
9
×
9
9×9
9×9维度的矩阵相乘的结果,那计算量将是非常巨大的,不过我们也有对应的办法将其化简,我们可以引入分块矩阵的概念。
因为矩阵是矩形的,我们就可以将其像蛋糕一样切开,例如:
A
9
×
9
=
[
A
1
A
2
A
3
A
4
A
5
A
6
A
7
A
8
A
9
]
A_{9×9}=\begin{bmatrix}A_{1}&A_{2}&A_{3}\\A_{4}&A_{5}&A_{6}\\A_{7}&A_{8}&A_{9}\end{bmatrix}
A9×9=
A1A4A7A2A5A8A3A6A9
新矩阵里的每一个矩阵都是
3
×
3
3×3
3×3的,也就是说,我们将一个
9
×
9
9×9
9×9的矩阵,分成九个
3
×
3
3×3
3×3的矩阵,这就是分块矩阵。现在我们也将
9
×
9
9×9
9×9的
B
B
B矩阵也写出来:
B
9
×
9
=
[
B
1
B
2
B
3
B
4
B
5
B
6
B
7
B
8
B
9
]
B_{9×9}=\begin{bmatrix}B_{1}&B_{2}&B_{3}\\B_{4}&B_{5}&B_{6}\\B_{7}&B_{8}&B_{9}\end{bmatrix}
B9×9=
B1B4B7B2B5B8B3B6B9
然后将它们俩相乘:
[
A
1
A
2
A
3
A
4
A
5
A
6
A
7
A
8
A
9
]
[
B
1
B
2
B
3
B
4
B
5
B
6
B
7
B
8
B
9
]
=
[
C
1
C
2
C
3
C
4
C
5
C
6
C
7
C
8
C
9
]
\begin{bmatrix}A_{1}&A_{2}&A_{3}\\A_{4}&A_{5}&A_{6}\\A_{7}&A_{8}&A_{9}\end{bmatrix} \begin{bmatrix}B_{1}&B_{2}&B_{3}\\B_{4}&B_{5}&B_{6}\\B_{7}&B_{8}&B_{9}\end{bmatrix}= \begin{bmatrix}C_{1}&C_{2}&C_{3}\\C_{4}&C_{5}&C_{6}\\C_{7}&C_{8}&C_{9}\end{bmatrix}
A1A4A7A2A5A8A3A6A9
B1B4B7B2B5B8B3B6B9
=
C1C4C7C2C5C8C3C6C9
根据矩阵乘法的常规方法,我们可以得出:
C
1
=
A
1
B
1
+
A
2
B
4
+
A
3
B
7
C_{1}=A_{1}B_{1}+A_{2}B_{4}+A_{3}B_{7}
C1=A1B1+A2B4+A3B7 同理
C
C
C矩阵的其他分块矩阵我们也可以用常规方法将其表示出来。
至此,我们讲完了矩阵乘法的所有内容,我们探讨了矩阵乘法的四种方法,有常规方法、列方法、行方法和列×行方法,不仅如此,我们还探讨了分块矩阵及其乘法,相信此时的你已经慢慢开始对线性代数感兴趣了!
最后
这个系列是我希望通过费曼学习法来更好地巩固学习线性代数,如果有表述上的错误可以私信我,不胜感激!! B站:ZaneYooo 知乎:ZaneYooo CSDN:ZaneYooo 微信公众号(建设中) 线性代数QQ交流群:246847309 希望你可以跟我一起构建起强大的知识体系,畅游在知识的海洋,改变世界改变自己!!!