Java中的矩阵乘法错误

时间:2015-01-09 08:17:03

标签: java matrix matrix-multiplication

我在网上搜索,有很多像我这样的错误。但我无法找到矩阵乘法的精确解。我使用下面的代码。我有很多矩阵乘法。首先,我获得ATP的matris A转置。然后用P乘以

N 1 = ATP * P

然后将n1与A相乘。

N1 = N1 * A;

当使用下面的代码我得到正确的解决方案我用matlab检查它。但是n1和A的乘法会产生误差。

P矩阵,如P = {{100,0,0,0 ...} {0,100,0,0 ...},...... {... 0,0,100}}

有什么问题?

非常感谢。

 public static double[][] multiply(double[][] a, double[][] b) {

    int rowsa = a.length;
    int columnsa = a[0].length;
    int rowsb = b.length;
    int columnsb = b[0].length;
    double c[][] = new double[rowsa][columnsb];

    try {

        if (columnsa == rowsb) {

            for (int ii = 0; ii < rowsa; ii++) {
                for (int jj = 0; jj < columnsb; jj++) {
                    c[ii][jj] = 0;
                    for (int kk = 0; kk < rowsb; kk++) {
                        c[ii][jj] += a[ii][kk] * b[kk][jj];
                    }
                }
            }

        } else {

        }
    } catch (Exception e) {
        System.out.println("Matris is empty");
    }

    return c;
}

我将代码称为

        double ATP[][] = transpose(A);
        double n1[][] = multiply(ATP, PP);
        double N1[][] = multiply(n1, A);
        double n2[][] = multiply(n1, ll);
        double N11[][] = inverse(N1);
        double kats[][] = multiply(N11, n2);

我不能给出A的值因为它是可变的我读取时间并且根据时间我计算矩阵的元素。每一步都向A矩阵添加一行。它以A(4,56)开头并继续像A(5,56)

0 个答案:

没有答案