Java中两个矩阵相乘的数组
我目前正在开发一个类来表示矩阵,它表示任何通用的mxn矩阵。我已经计算出加法和标量乘法,但我正在努力发展两个矩阵的乘法。矩阵的数据保存在二维双精度数组中
该方法看起来有点像这样:
public Matrix multiply(Matrix A) {
////code
}
它将返回产品矩阵。这是右边的乘法运算。所以,如果我调用A.multiply(B),它将返回矩阵AB,B在右边
我还不需要担心检查乘法是否定义在给定的矩阵上,我可以假设我将得到正确维数的矩阵
有没有人知道一种简单的算法,甚至可能是伪代码来执行乘法过程
提前谢谢
# 1 楼答案
对多个任意维数组尝试此代码并打印它。我认为这更简单,任何人都能理解
# 2 楼答案
在这个答案中,我创建了一个名为Matrix的类,另一个类称为MatrixOperations,它定义了可以对矩阵执行的各种操作(当然行操作除外)。但我将从矩阵运算中提取乘法的代码。完整的项目可以在我的GitHub页面here上找到
下面是矩阵类的定义
}
这是从矩阵运算得到矩阵乘法的代码方法
下面是sum、arrayProduct和getColumnMatrix方法的代码
# 3 楼答案
从数学上讲,矩阵A(l x m)和B(m x n)的乘积被定义为由以下元素组成的矩阵C(l x n):
因此,如果您没有太多的速度,您可能会对直接的O(n^3)实现感到满意:
相反,如果你正在加快速度,你可能需要检查其他替代方法,比如Strassen算法(参见:Strassen算法)
尽管如此,还是要注意——尤其是在现代处理器体系结构上对小矩阵进行乘法时,速度在很大程度上取决于矩阵数据和乘法顺序的安排,以充分利用缓存线
我强烈怀疑使用虚拟机是否有可能影响这一因素,所以我不确定是否要考虑到这一点
# 4 楼答案
Java。矩阵乘法
下面是“执行乘法过程的代码”。用不同大小的矩阵进行测试
输出: