我正在尝试使用多维数组([2][2])创建一个简单的矩阵乘法方法。我是个新手,我就是不知道我做错了什么。如果有人能帮我告诉我这是什么,我将不胜感激。我不想使用库或类似的东西,我这样做主要是为了了解它是如何工作的。事先非常感谢你
我在主方法中声明我的Aray如下:
Double[]A={{4.00,3.00},{2.00,1.00};
双[]B={{-0.500,1.500},{1.000,-2.0000};
A*B应该返回标识矩阵。没有
公共静态双[][]乘法器(双[][]A,双[][]B){
//该方法运行并返回正确维度的矩阵
//(我实际上将.length函数更改为特定值以消除
//这是一个可能的问题),但不是正确的值
Double[]C=新的Double[2][2];
int i,j;
////我用零填充矩阵,如果我不这样做,它会给我一个错误
对于(i=0;i<;2;i++){
对于(j=0;j<;2;j++){
C[i][j]=0.00000;
}
}
///这就是我应该在其中执行的每个元素的添加
//a的行乘以
//B的对应列,用于B中的所有列和A中的所有行
对于(i=0;i<;2;i++){
对于(j=0;j<;2;j++)
C[i][j]+=(A[i][j]*B[j][i]);
}
返回C;
}
您可以尝试以下代码:
公共类MyMatrix{
双[]A={{4.00,3.00},{2.00,1.00};
双[]B={{-0.500,1.500},{1.000,-2.0000};
公共静态双[][]乘法器(双[][]A,双[][]B){
int aRows=A.长度;
int aColumns=A[0]。长度;
int bRows=B.长度;
int bColumns=B[0]。长度;
if(aColumns!=眉毛){
抛出新的IllegalArgumentException(“A:Rows:+aColumns+”与B:Columns“+bRows+”不匹配”);
}
Double[]C=新的Double[aRows][b列];
对于(int i=0;i<;aRows;i++){
对于(int j=0;j<;b列;j++){
C[i][j]=0.00000;
}
}
对于(inti=0;i<;aRow;i++){//aRow
对于(int j=0;j<;b列;j++){//b列
对于(int k=0;k<;aColumns;k++){//aColumn
C[i][j]+=A[i][k]*B[k][j];
}
}
}
返回C;
}
公共静态void main(字符串[]args){
MyMatrix=新的MyMatrix();
Double[][]结果=被乘数(矩阵A,矩阵B);
对于(int i=0;i<;2;i++){
对于(int j=0;j<;2;j++)
系统输出打印(结果[i][j]+“”);
System.out.println();
}
}
}