先举个例子把:
从百度知道直接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
所对应的三元方程组是没有唯一解的