如何在Java中修复矩阵乘法



我正在用Java创建一个类,以便使用二维数组对矩阵执行简单操作。我的矩阵乘法方法遇到了一个问题。

每当我测试我的multiply方法时,都不会出现错误,但我的计算机CPU利用率增加了很多,我的测试程序永远不会完成。

这是我的multiply方法:

/**
 * Multiplies the first matrix by the entered one
 * Assumes width of first matrix and height of second are the same
 *
 * @param toMultiply: Matrix by which to multiply
 * @return product: The first matrix multiplied by the entered one
 */
public Matrix multiply(Matrix toMultiply) {
    Matrix product = new Matrix(height, toMultiply.width);
    int a = 0, b = 0, n = 0;
    double value = 0;
    while (a < height) {
        while (b < toMultiply.width) {
            while (n < width) {
                value += matrixArray[a][n] * toMultiply.matrixArray[n][b];
            }
            product.matrixArray[a][b] = value;
            value = 0;
            n = 0;
            b++;
        }
        b = 0;
        a++;
    }
    return product;
}

其中我构造了一个矩阵如下:

private double[][] matrixArray;
private int width;
private int height;
/**
 * Constructs a matrix with the specified width and height
 *
 * @param widthOfMatrix
 * @param heightOfMatrix
 */
public Matrix(int heightOfMatrix, int widthOfMatrix) {
    height = heightOfMatrix;
    width = widthOfMatrix;
    matrixArray = new double[height][width];
}
/**
 * Enters values into the matrix
 *
 * @param entries: Each value in a matrix separated by a comma
 */
public void enter(double... entries) {
    int a = 0, b = 0;
    while (a < height) {
        while (b < width) {
            matrixArray[a][b] = entries[b + a * width];
            b++;
        }
        b = 0;
        a++;
    }
}

即使在测试非常小的矩阵时也会发生这种情况,所以这一定是我的代码的问题,但我不知道它是什么。

您没有在内部n循环中递增n。如上所述,当循环预定义次数时,for循环更合适。

相关内容

  • 没有找到相关文章

最新更新