定义
设A为的矩阵,B为的矩阵,那么称的矩阵C为矩阵A与B的乘积,记作,其中矩阵C中的第行第列元素可以表示为:
如下所示:
注意事项
1、当矩阵A的列数(column)等于矩阵B的行数(row)时,A与B可以相乘。
2、矩阵C的行数等于矩阵A的行数,C的列数等于B的列数。
3、乘积C的第m行第n列的元素等于矩阵A的第m行的元素与矩阵B的第n列对应元素乘积之和。
基本性质
乘法结合律:(AB)C=A(BC)
乘法左分配律:(A+B)C=AC+BC
乘法右分配律:C(A+B)=CA+CB
对数乘的结合性k(AB)=(kA)B=A(kB).
转置(AB)T=BTAT
矩阵乘法在以下两种情况下满足交换律。
AA*=A*A,A和伴随矩阵相乘满足交换律。
AE=EA,A和单位矩阵或数量矩阵满足交换律。
其他的乘积形式
除了上述的矩阵乘法以外,还有其他一些特殊的“乘积”形式被定义在矩阵上,值得注意的是,当提及“矩阵相乘”或者“矩阵乘法”的时候,并不是指代这些特殊的乘积形式,而是定义中所描述的矩阵乘法。在描述这些特殊乘积时,使用这些运算的专用名称和符号来避免表述歧义。
哈达马积(Hadamardproduct)
矩阵与矩阵的Hadamard积记作。其元素定义为两个矩阵对应元素的乘积的m×n矩阵。例如,
克罗内克积(KroneckerProduct)
克罗内克积是两个任意大小的矩阵间的运算,符号记作。克罗内克积也被称为直积或张量积.以德国数学家利奥波德·克罗内克命名。计算过程如下例所示:
实现
C++代码
实际应用
数据统计
某公司有四个工厂,分布在不同地区,同时三种产品,产量(单位;t),试用矩阵统计这些数据。
可用下述矩阵描述,其中四行分别表示甲乙丙丁四个工厂的生产情况,三列分布表示三种产品P1,P2,P3的产量。
再设矩阵,其中第一列表示三种产品的单件利润,第二列表示三种产品的单件体积。
矩阵C的第一列数据分别表示四个工厂的利润,第二列分别表示四个工厂产品需要的存储空间。
路径问题
给定一个有向图,问从A点恰好走k步(允许重复经过边)到达B点的方案数。
把给定的图转为邻接矩阵,即A(i,j)=1当且仅当存在一条边i->j。令C=A*A,那么C(i,j)=ΣA(i,k)*A(k,j),实际上就等于从点i到点j恰好经过2条边的路径数(枚举k为中转点)。类似地,C*A的第i行第j列就表示从i到j经过3条边的路径数。同理,如果要求经过k步的路径数,我们只需要二分求出A^k即可。