4.2 矩阵的运算
矩阵的可运算性扩大了矩阵的用途。后面的章节会大量涉及矩阵的运算,所以,熟练掌握矩阵的运算法则是十分必要的。最基本的矩阵运算包括加法、减法与乘法。
4.2.1 矩阵的加法与减法
矩阵的加法与减法要求参与运算的两个矩阵具有相同的维数。不同维数的矩阵之间不能进行加减法运算。
对具有相同维数的矩阵进行加法与减法运算时,只需在相应的行列位置对元素进行加法或者减法运算,得到的和或差就是结果矩阵中相应位置上的元素。
假设有两个n ×m维的矩阵X与Y:
则:
举一个具体的例子。假设有:
则:
4.2.2 矩阵的乘法
1.矩阵的数乘
顾名思义,矩阵的数乘就是用一个数去乘矩阵,运算得到的结果就是用这个数与矩阵中的每个元素相乘。一般地,假设有常数c和矩阵
则:
举一个具体的例子:
2.矩阵相乘
假设有维数为n ×m的矩阵X,以及维数为l ×k的矩阵Y,则
(1)当m=l时,矩阵X乘以矩阵Y才是可行的,结果矩阵XY才存在;
(2)当k=n时,矩阵Y乘以矩阵X才是可行的,结果矩阵YX才存在。
也就是说,两个矩阵相乘时,只有当左矩阵列的数目等于右矩阵行的数目时,它们才是可乘的;否则,无法对它们进行乘法运算。
下面假设m=l成立,则矩阵Y的维数可以表示成m ×k。设矩阵X乘以矩阵Y得到的结果矩阵为C;矩阵C的维数为n ×k,其第i行第j列元素遵循如下计算公式:
即结果矩阵C=XY的第i行第j列元素为矩阵X的第i行和矩阵Y的第j列的对应元素的乘积之和。
这种运算需要左矩阵列的数目等于右矩阵行的数目,它同时也决定了结果矩阵的维数:行的数目等于左矩阵行的数目,列的数目等于右矩阵列的数目。
所以在进行矩阵乘法运算之前,需要判断矩阵是否可乘,即需考虑左矩阵的列数和右矩阵的行数是否相等。
下面,我们举一个矩阵乘法运算的具体例子。假设有矩阵A和矩阵B:
由于A的维数是3×2, B的维数是2×2,因而矩阵A乘以矩阵B是可行的,且结果矩阵的维数应为3 ×2。矩阵A乘以矩阵B的结果为:
注意,矩阵B乘以矩阵A是不可行的,因为B矩阵的列数(2)和矩阵A的行数(3)不相等。因此,矩阵乘法中左右矩阵的顺序是不能任意颠倒的。
4.2.3 矩阵的分块
从一个矩阵中抽取若干行、若干列位置上的元素并按原有顺序排成的新矩阵即构成了这个矩阵的某一子矩阵。于是,我们可以利用子矩阵把一个矩阵分成若干块。而这种由子矩阵组成的矩阵就是分块矩阵。
实际上,分块矩阵只是矩阵的一种表达方式,分块的选择一般以计算处理中的方便为标准,而矩阵在本质上没有任何的变化。尽管我们将矩阵的分块放在矩阵的运算这一节中进行介绍,但必须注意的是,矩阵的分块并不是一种运算,而是一种为了方便运算而采取的表示矩阵的方法。
下面,我们提供一个用分块矩阵表示乘法运算的例子。设矩阵
分别用分块矩阵表示矩阵A和矩阵B,则:
其中:, , A3= [1 0], A4= [4], , B2= [2 0]。
然后,我们可以这样来进行矩阵的乘法运算:先计算A1B1、A2B2、A3B1和A4B2,再分别计算 A1B1+A2B2和A3B1+A4B2,则, A3B1+A4B2= [1 0]+ [8 0]= [9 0],于是合在一起就得到了。上面的例子演示了如何用分块矩阵表示矩阵和如何用分块矩阵进行乘法运算。分块矩阵相乘时需要满足如下条件(注意,前提是两矩阵本来就是可以相乘的):
(1)左矩阵的列组数等于右矩阵的行组数;
(2)左矩阵的每个列组所含的列数等于右矩阵相应的行组所含的行数。
总而言之,左矩阵列的分法应当与右矩阵行的分法相同。在适当进行分组之后,可以把子矩阵看作新的元素进行乘法运算,就如同上面的例子在计算时,就可以将其看作是两个维度为2 ×2和2 ×1的矩阵相乘。