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

算法系列-----矩阵(六)-------------矩阵的消去

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

先举个例子把:

从百度知道直接copy的:

高斯消去法,解二元一次方程组。 ax+by=mL【1】 cx+dy=nL【2】 (其中x,y为未知量) 答:ax+by=mL【1】 cx+dy=nL【2】 当其系数行列式不等于0时有唯一解,即就是放ad-bc不等于0是有唯一解 且x=mld-nlb/ad-bc y=nla-mlb/ad-bc

对于二阶,我们要得到的就是 ad-bc的值,

对于三阶及以上,我们需要得到的是主对角线上的乘积

那么我们的思路就是先将矩阵变成 上三角矩阵最好了

代码语言:javascript
复制
	public static double det(double[][] a) {
		double k = 0;
		double arrangerResult = 1.0;
		for (int p = 0; p < a[0].length - 1; p++) {
			for (int r = p + 1; r < a.length; r++) {
				k = a[r][p] / a[p][p];
				a[r][p] = 0;
				for (int c = p + 1; c < a[0].length; c++) {
					a[r][c] = a[r][c] - k * a[p][c];
				}
				System.out.println("--------------------------------");
				print(a);
			}
			System.out.println("--------------------------------");
			print(a);
		}
		System.out.println("--------------------------------");
		print(a);
		// 计算主对角线相乘的结果
		for (int i = 0; i < a.length; i++) {
			for (int j = 0; j < a[0].length; j++) {
				if (i == j) {
					arrangerResult = arrangerResult * a[i][j];
				}
			}
		}
		return arrangerResult;
	}

看看跟踪的过程,对实现过程就非常的清楚了:

代码语言:javascript
复制
--------------------------------
	1.0	2.0	3.0
	0.0	-3.0	-6.0
	7.0	8.0	9.0
--------------------------------
	1.0	2.0	3.0
	0.0	-3.0	-6.0
	0.0	-6.0	-12.0
--------------------------------
	1.0	2.0	3.0
	0.0	-3.0	-6.0
	0.0	-6.0	-12.0
--------------------------------
	1.0	2.0	3.0
	0.0	-3.0	-6.0
	0.0	0.0	0.0
--------------------------------
	1.0	2.0	3.0
	0.0	-3.0	-6.0
	0.0	0.0	0.0
--------------------------------
	1.0	2.0	3.0
	0.0	-3.0	-6.0
	0.0	0.0	0.0
-0.0

返回的结果是0,也就是对于矩阵

1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0

所对应的三元方程组是没有唯一解的

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

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

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

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

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