用Java实现矩阵乘法

矩阵相乘需注意:
        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:

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();
}

 

你可能感兴趣的:(Java,java,矩阵,算法)