抱歉,这是一个家庭作业问题。我对数学并不擅长,所以我查看了一些视频,以了解两个矩阵是如何相乘的。我想出了一个公式,但我不知道我做错了什么?这个问题之前已经得到了回答,但我不明白。谢谢。
case 3:
System.out.println("THE PRODUCT OF TWO MATRICES ARE: ");
for(i =0; i< arrayList.length; i++){
for(j =0; j< arrayList1.length; j++){
for(k =0; k < arrayList1.length;k++){
multiplication = arrayList[i][k] * arrayList1[k][j] + multiplication;
}
System.out.print(arrayList[i][j]+" ");
}
System.out.println();
}
break;
答案 0 :(得分:1)
首先,你应该明白两个矩阵的乘法应该产生一个矩阵(你的multiplication
变量似乎不是这样)。
我想你必须对基本实现进行编程。我们来看看下面的矩阵。
A
有n
行和m
列;据说是一个matrice n x m
。
类似地,B
有m
行和p
列(m x p
matrice)。 A x B
的乘法将为您提供一个矩阵n x p
。
请注意,如果您要进行乘法A x B
,则矩阵A
必须与矩阵B
的行数具有相同的列数。
现在,矩阵AB
(i th 行和j th 列)中的每个值计算如下:
那就是说,让我们来看看Java实现(这是数学公式的纯粹翻译)。
public static int[][] multiply(int[][] matrixA, int[][] matrixB) {
int[][] result = new int[matrixA.length][matrixB[0].length];
for (int i = 0; i < result.length; i++) {
for (int j = 0; j < result[0].length; j++) {
for (int k = 0; k < matrixB.length; k++) {
result[i][j] += matrixA[i][k] * matrixB[k][j];
}
}
}
return result;
}
result
矩阵初始化为正确的维度。然后前两个嵌套循环(带有索引i
和j
)将循环遍历所得矩阵的所有元素元素。然后你只需要第三个循环来计算总和。
您仍然需要检查您作为参数提供的矩阵是否具有正确的长度。
使用的算法非常幼稚(O(n 3 )复杂度)。如果你不了解它,网上有很多资源可以解释它的工作原理;但这不仅仅是编程问题,而是一个数学问题。
希望它有所帮助! :)