无法乘以两个矩阵

时间:2015-02-21 16:53:40

标签: java loops matrix product

抱歉,这是一个家庭作业问题。我对数学并不擅长,所以我查看了一些视频,以了解两个矩阵是如何相乘的。我想出了一个公式,但我不知道我做错了什么?这个问题之前已经得到了回答,但我不明白。谢谢。

    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;

1 个答案:

答案 0 :(得分:1)

首先,你应该明白两个矩阵的乘法应该产生一个矩阵(你的multiplication变量似乎不是这样)。

我想你必须对基本实现进行编程。我们来看看下面的矩阵。

enter image description here

An行和m列;据说是一个matrice n x m。 类似地,Bm行和p列(m x p matrice)。 A x B的乘法将为您提供一个矩阵n x p

enter image description here

请注意,如果您要进行乘法A x B,则矩阵A必须与矩阵B的行数具有相同的列数。

现在,矩阵AB(i th 行和j th 列)中的每个值计算如下:

enter image description here

那就是说,让我们来看看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矩阵初始化为正确的维度。然后前两个嵌套循环(带有索引ij)将循环遍历所得矩阵的所有元素元素。然后你只需要第三个循环来计算总和。

您仍然需要检查您作为参数提供的矩阵是否具有正确的长度。

使用的算法非常幼稚(O(n 3 )复杂度)。如果你不了解它,网上有很多资源可以解释它的工作原理;但这不仅仅是编程问题,而是一个数学问题。

希望它有所帮助! :)