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

来源:互联网 发布:复合材料仿真软件 编辑:程序博客网 时间:2024/04/28 05:02

先举个例子把:

从百度知道直接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的值,

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


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


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

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

--------------------------------1.02.03.00.0-3.0-6.07.08.09.0--------------------------------1.02.03.00.0-3.0-6.00.0-6.0-12.0--------------------------------1.02.03.00.0-3.0-6.00.0-6.0-12.0--------------------------------1.02.03.00.0-3.0-6.00.00.00.0--------------------------------1.02.03.00.0-3.0-6.00.00.00.0--------------------------------1.02.03.00.0-3.0-6.00.00.00.0-0.0

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

1.02.0 3.0
4.0 5.06.0
7.0 8.09.0

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

0 0
原创粉丝点击