前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >算法系列-----矩阵(二)-------------单位矩阵的加法和减法

算法系列-----矩阵(二)-------------单位矩阵的加法和减法

作者头像
wust小吴
发布2022-03-04 15:51:08
6720
发布2022-03-04 15:51:08
举报
文章被收录于专栏:风吹杨柳

矩阵的加法和减法很简单,唯一的要求就是:行列相等

首先我们看一维的相加(其实就是数组的相加):

代码语言:javascript
复制
	/**
	 * 两个一维数组相加
	 * 
	 * @param args
	 *            参数a,b是两个浮点型(double)的一维数组
	 * @return 返回值是一个浮点型一维矩阵
	 */
	public static double[] plus(double[] a, double[] b) {
		int hang = a.length;
		double[] result = new double[hang];
		for (int i = 0; i < hang; i++) {

			result[i] = a[i] + b[i];

		}
		return result;
	}

打印一维数组:

代码语言:javascript
复制
	public static void print_array(double[] result){
		for(int i=0;i<result.length;i++){
			System.out.print("\t" + result[i]);
		}
		System.out.println();
	}

二维数组的相加:

代码语言:javascript
复制
	/**
	 * 矩阵相加的函数
	 * 
	 * @param args
	 *            参数a,b是两个浮点型(double)的二维数组
	 * @return 返回值是一个浮点型二维数组(矩阵a与b的和)
	 */
	public static double[][] plus(double[][] a, double[][] b) {
		int hang = a.length;
		int lie = a[0].length;
		double[][] result = new double[hang][lie];
		for (int i = 0; i < hang; i++) {
			for (int j = 0; j < lie; j++) {
				result[i][j] = a[i][j] + b[i][j];
			}
		}
		return result;
	}

矩阵相减:

代码语言:javascript
复制
	/**
	 * 矩阵相减的函数
	 * 
	 * @param args
	 *            参数a,b是两个浮点型(double)的二维数组,
	 * @return 返回值是一个浮点型二维数组(矩阵a与b的差)
	 */
	public static double[][] minus(double[][] a, double[][] b) {
		int hang = a.length;
		int lie = a[0].length;
		double[][] result = new double[hang][lie];
		for (int i = 0; i < hang; i++) {
			for (int j = 0; j < lie; j++) {
				result[i][j] = a[i][j] - b[i][j];
			}
		}
		return result;
	}

测试代码:

代码语言:javascript
复制
	public static void main(String[] args) {
		double[] a = { 3, 2, 1, 4};
		double[] b = { 5, 6, 9, 8};
		double[] s_test = plus(a,b);
		
		double[][] d_a = new double[][]{{1,2},{3,4}};
		double[][] d_b = new double[][]{{7, 8}, {6, 5}};
		double[][] d_test = plus(d_a,d_b);
		double[][] minus_test=minus(d_a,d_b);
		System.out.println("一维相加");
		System.out.println("--------------------------------");
		print_array(s_test);
		System.out.println("矩阵相加");
		System.out.println("--------------------------------");
		print(d_test);
		System.out.println("矩阵相减");
		System.out.println("--------------------------------");
		print(minus_test);
	}

输出结果:

代码语言:javascript
复制
一维相加
--------------------------------
	8.0	8.0	10.0	12.0
矩阵相加
--------------------------------
	8.0	10.0
	9.0	9.0
矩阵相减
--------------------------------
	-6.0	-6.0
	-3.0	-1.0

最基本的操作:加和减 还是要说的。很简单

只是想说明一点:我看过很多网上的代码,有的人在加法和减法中把结果直接存在

第一个参数中返回,这让我很是犹豫,我常常会想到交换函数时并没有改变他们的值

或者是当同一个参数同时调用两个矩阵方法时,发现了a和b都变了,让我很是气恼

故而我觉得还是在代码中再定义一个局部变量比较好,尽管这样的代码不够优化,但是我看的很清楚。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档