两个矩阵相乘有问题
Having trouble multiplying two matrices
抱歉,这是一道作业题。我数学不好,所以我看了一些视频来了解两个矩阵是如何相乘的。我想出了一个公式,但我不知道我做错了什么?这个问题以前有人回答过,但是没看懂。谢谢。
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;
首先你应该明白两个矩阵相乘应该得到一个矩阵(你的 multiplication
变量似乎不是这种情况)。
我想您必须编写基本实现程序。让我们看看下面的矩阵。
A
有 n
行和 m
列;说是一个矩阵n x m
。
类似地,B
有 m
行和 p
列(m x p
矩阵)。 A x B
的乘法将得到一个矩阵 n x p
.
请注意,如果要进行乘法 A x B
,矩阵 A
的列数必须与矩阵 B
的行数相同。
现在矩阵 AB
中的每个值(第 ith 行和第 jth 列)计算如下:
也就是说,让我们看一下 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(n3) 复杂度)。如果您不理解它,网络上有很多资源可以解释它是如何工作的;但这更像是一个数学问题而不是编程问题。
希望对您有所帮助! :)
抱歉,这是一道作业题。我数学不好,所以我看了一些视频来了解两个矩阵是如何相乘的。我想出了一个公式,但我不知道我做错了什么?这个问题以前有人回答过,但是没看懂。谢谢。
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;
首先你应该明白两个矩阵相乘应该得到一个矩阵(你的 multiplication
变量似乎不是这种情况)。
我想您必须编写基本实现程序。让我们看看下面的矩阵。
A
有 n
行和 m
列;说是一个矩阵n x m
。
类似地,B
有 m
行和 p
列(m x p
矩阵)。 A x B
的乘法将得到一个矩阵 n x p
.
请注意,如果要进行乘法 A x B
,矩阵 A
的列数必须与矩阵 B
的行数相同。
现在矩阵 AB
中的每个值(第 ith 行和第 jth 列)计算如下:
也就是说,让我们看一下 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(n3) 复杂度)。如果您不理解它,网络上有很多资源可以解释它是如何工作的;但这更像是一个数学问题而不是编程问题。
希望对您有所帮助! :)