【java】【二维数组】二维数组实现矩阵乘法

知识回顾

若A为NxM阶矩阵 B为MxP阶矩阵,二者相乘之后的矩阵则为NXP阶矩阵
运算过程:
矩阵乘法

思路

  • 计算并显示出来这个结果 我们则需要 一个计算方法 和 一个显示方法
  • 因此主函数可以写的相当之简单 , 键入想要求解的矩阵的数值 然后调用两种方法即可

显示方法

  • 只需要循环显示出行列值然后分行即可

计算方法

设进行矩阵乘法的两个矩阵为a 3x3型矩阵和b 3x2型矩阵

  • 我们在运用数学思维计算矩阵乘法时首先计算的便是
    z[1][1] = a[1][1]*b[1][1]+a[1][2]*b[2][1]+a[1][3]*b[3][1]
    转换成代码则可想到 矩阵可以利用二维数组来实现
    下标的改变以及算术累加可以用for循环来实现
  • 在此之上我们可以再思考
    z[1][1]计算过后我们将会继续计算z[1][2] 而列下标的改变则可再次利用循环来实现
    以此类推
  • 矩阵第一行的数值计算过后 我们要转为求解第二行的数值 这时则可再次利用循环来实现行的改变

因此 二维数组实现矩阵乘法的基本思路就是 利用嵌套循环来实现数值的累加计算,矩阵列以及行的变化。

以下为实现代码:

public class Example4_04{
	public static void main(String[] args){
		int[][] a={{-4 , 5 , -7},
			{2, -3 , -4},
			{3 , 4 , 5}};
			int[][] b={{1 , 2},
			{5 , 6}, 
			{-7 , 9},};
			int[][] result = mul(a,b);
			print(result);
	}
	//mul返回值的类型是一个二维数组
	static int[][] mul(int[][] x , int[][] y)
	{
		int i , j , k;//循环控制变量
		//申请结果数组的空间 
		//行长度为x数组的行长度,列长度为y数组第一行的行长度
		int[][] z=new int[x.length][y[0].length];
		for(i = 0 ; i < x.length ; i++)
		{	for(j = 0 ; j < y[0].length ; j++)
			{
				z[i][j] = 0;
				for(k = 0 ; k < x[0].length ; k++)
					z[i][j] = z[i][j] + x[i][k] * y[k][j];
			}
		}
		return z;
	}
	static void print(int[][] x){
		int i , j;
		for(i = 0 ; i < x.length ; i++){
			for(j = 0 ; j < x[i].length ; j++)
				System.out.printf("%5d",x[i][j]);
			System.out.println();
		}
	}
}

  • 2
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值