矩阵乘法的计算
矩阵,是线性代数中的基本概念之一。一个m×n的矩阵就是m×n个数排成m行n列的一个数阵。
矩阵乘法是一种高效的算法可以把一些一维递推优化到log(n),还可以求路径方案等,所以更是一种应用性极强的算法。必须注意的是,只有当矩阵A的列数与矩阵B的行数相等时A×B才有意义。
一般单说矩阵乘积时,指的便是一般矩阵乘积。若A为m×n矩阵,B为n×p矩阵,则他们的乘积AB(有时记做A·B)会是一个m×p矩阵。其乘积矩阵的元素如下面式子得出:
上面是一个通过代数公式的方式说明这类乘法的抽象性质,有些抽象,下面从一个具体图的角度看看这种乘法:
在上图中,A是个4×2矩阵,B是个2×3矩阵。分别计算AB的(1,2)和(3,3)元素的值,结果可以根据上图中箭头方向两两配对,把每一对中的两个元素相乘,再把这些乘积加起来,最后得到的值即为箭头相交位置的值。
这样在从直观的图中转换为稍微抽象点的公式中,则对应的计算方式为:
不知道CSDN怎么编辑数学公式,就先从百度百科里摘两个例子:
矩阵乘法的来源
在矩阵的运算中,矩阵的加法、数与矩阵的积,都与实数或向量的对应运算一致,易于接受掌握。唯独矩阵乘法,与之相差悬殊。初学时感觉莫名其妙,难以接受。扬天哀呼,为啥这么算呢?
来举个简单的例子:
设A1,A2,...,Am是m个工厂,它们都生产着n种产品B1,B2,...,Bm,而Ai厂生产Bj的年产量为aij,i=1,2,…,m;j=1,2,...,n。于是,对照每个工厂各种产品年产量的统计表和产量矩阵就出来了:
如果第二年各厂各种产品的产量都是前一年的λ倍,就是数乘矩阵λA的意义。如果计算各厂各种产品两年的总产量,就用到了矩阵的加法。
接上例,设产品B1,B2,...,Bn皆需p种原料C1,C2,...,Cp,而生存一件Bk所需原料Cj的数量为bkj,于是,统计各种产品每件所需的原料数表和单间原料矩阵为:
现在需要计算各厂每年所需各种原料的总是,设Ai长一年所需原料Cj的总数为cij,则各厂一年所需各种原料总数统计表和原料总数矩阵为:
到这一步,基本上可以想到,cij(i厂需材料j的原料数量)等于i厂各个产品的年产量乘上该产品所需j原料的数量的和,简单点说就是一年所需总料数=年产量×单间所需原料数,用公式表达就是:
从上面的例子可以看出,关于矩阵的乘法,并非空穴来风、无源之水,而是有它必然产生的缘由。充分说明了数学是来源于生活,之所以与生活相差较大,只是因为在语言、符号演化过程中,数学进化的方向是趋向于抽象和一般。