矩阵相乘需注意:
1、当矩阵A的列数(column)等于矩阵B的行数(row)时,A与B可以相乘。
2、矩阵C的行数等于矩阵A的行数,C的列数等于B的列数。
3、乘积C的第m行第n列的元素等于矩阵A的第m行的元素与矩阵B的第n列对应元素乘积之和
设a为2*3的矩阵 b为3*2的矩阵 c矩阵为a*b的结果
a=[a11,a12,a13]
[a21,a22,a23]
b=[b11,b12]
[b21,b22]
[b31,b32]
c=[a11*b11+a12*b21+a13*b31,a11*b12+a12*b22+a13*b32]
[a21*b11+a22*b21+a23*b31,a11*b21+a22*b22+a23*b32]
代码实现(从控制台输入矩阵):
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("输入矩阵A的行数:");
int x = input.nextInt();
System.out.println("输入矩阵A的列数(B的行数):");
int y = input.nextInt();
System.out.println("输入矩阵B的列数:");
int z = input.nextInt();
//用二位数组存储矩阵
int[][] a = new int[x][y];
int[][] b = new int[y][z];
int[][] c = new int[x][z];
System.out.println("输入A矩阵");
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
a[i][j] = input.nextInt();
}
}
System.out.println("输入B矩阵");
for (int i = 0; i < b.length; i++) {
for (int j = 0; j < b[i].length; j++) {
b[i][j] = input.nextInt();
}
}
//根据规律用三个for循环实现矩阵相乘
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
for (int k = 0; k < b[j].length; k++) {
c[i][k] += a[i][j] * b[j][k];
}
}
}
//将结果输出到控制台
System.out.println("结果:");
for (int[] row : c){
for (int cloumn : row) {
System.out.print(cloumn + "\t");
}
System.out.println();
}
}
随机生成矩阵A和B:文章来源:https://www.toymoban.com/news/detail-401003.html
Random random = new Random();
//随机生成矩阵A并输出
System.out.println("矩阵A:");
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
a[i][j] = random.nextInt(10);//10以内的随机整数
System.out.print(a[i][j] + "\t");
}
System.out.println();
}
//随机生成矩阵B并输出
System.out.println("矩阵B:");
for (int i = 0; i < b.length; i++) {
for (int j = 0; j < b[i].length; j++) {
b[i][j] = random.nextInt(10);//10以内的随机整数
System.out.print(b[i][j] + "\t");
}
System.out.println();
}
文章来源地址https://www.toymoban.com/news/detail-401003.html
到了这里,关于用Java实现矩阵乘法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!