我在网上搜索,有很多像我这样的错误。但我无法找到矩阵乘法的精确解。我使用下面的代码。我有很多矩阵乘法。首先,我获得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)