【发布时间】:2021-11-04 14:19:31
【问题描述】:
我正在编写一个简单的程序,该程序采用增广矩阵并使用高斯消元过程来求解方程组。在这种情况下,第一步是从第 2 行中减去第 1 行,以使第 2 行中的第一个数字等于 0。然后将第 2 行替换为这两者的差异。
我正在使用的矩阵:
1 1 1 3
1 2 3 0
1 3 2 3
因此,输出应该是:
1 1 1 3
0 1 2 -3
1 3 2 3
当前输出:
Step 1:
1 1 1 3
1 2 3 0
1 3 2 3
Step 2:
Row 2: 1 2 3 0
Subtracted by
Row 1: 1 1 1 3
1 1 1 3
-3 0 3 0
1 3 2 3
1 1 1 3
-3 -2 -1 0
1 3 2 3
代码:
public static void main(String[] args) {
// Where column 4 is the solution:
// 1 1 1 | 3
// 1 2 3 | 0
// 1 3 2 | 3
int matrix[][] = new int[][]{{1,1,1,3},
{1,2,3,0},
{1,3,2,3}};
System.out.println("Step 1: ");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
System.out.print(matrix[i][j] + " ");
}
System.out.println("");
}
System.out.println("\nStep 2: ");
System.out.print("Row 2: ");
for (int i = 0; i < 4; i++) {
System.out.print(matrix[1][i] + " ");
}
System.out.println("\nSubtracted by");
System.out.print("Row 1: ");
for (int i = 0; i < 4; i++) {
System.out.print(matrix[0][i] + " ");
}
System.out.println("");
System.out.println("");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
matrix[1][i] = matrix[1][i]-matrix[0][i];
System.out.print(matrix[i][j] + " ");
}
System.out.println("");
}
System.out.println("");
for (int i = 0; i < 3; i++) {//col
for (int j = 0; j < 4; j++) {//row
System.out.print(matrix[i][j] + " ");
}
System.out.println("");
}
}
所以我的问题是,我可以对代码进行哪些更改以获得预期的输出(显示在顶部)? 任何帮助将不胜感激!
【问题讨论】:
-
您的减法在嵌套循环内,因此您多次减去该行。此外,您在减法中使用了错误的索引(应该是
j而不是i)。 -
哇,我不敢相信我没有注意到——谢谢!
标签: java for-loop matrix multidimensional-array gaussian