用java求解线性方程组400行代码
时间: 2024-02-13 18:04:49 浏览: 24
求解线性方程组的代码并不需要400行,以下是一个简单的Java代码示例,它使用高斯-约旦消元法来解决线性方程组。
```
public class LinearEquationSolver {
public static void main(String[] args) {
//定义系数矩阵A和常数项矩阵B
double[][] a = {{2,1,-1},{-3,-1,2},{-2,1,2}};
double[] b = {8,-11,-3};
//求解线性方程组
double[] solution = solve(a, b);
//输出结果
System.out.println("Solution: " + Arrays.toString(solution));
}
//高斯-约旦消元法求解线性方程组
public static double[] solve(double[][] a, double[] b) {
int n = b.length;
for (int k = 0; k < n; k++) {
int max = k;
for (int i = k + 1; i < n; i++) {
if (Math.abs(a[i][k]) > Math.abs(a[max][k])) {
max = i;
}
}
double[] temp = a[k];
a[k] = a[max];
a[max] = temp;
double t = b[k];
b[k] = b[max];
b[max] = t;
for (int i = k + 1; i < n; i++) {
double factor = a[i][k] / a[k][k];
b[i] -= factor * b[k];
for (int j = k; j < n; j++) {
a[i][j] -= factor * a[k][j];
}
}
}
double[] solution = new double[n];
for (int k = n - 1; k >= 0; k--) {
double sum = 0.0;
for (int j = k + 1; j < n; j++) {
sum += a[k][j] * solution[j];
}
solution[k] = (b[k] - sum) / a[k][k];
}
return solution;
}
}
```
在上面的示例中,我们使用高斯-约旦消元法来求解线性方程组。我们将系数矩阵和常数项矩阵作为输入,并使用solve方法来求解线性方程组。最后,我们打印出解向量作为结果。
需要注意的是,如果系数矩阵的行数和列数非常大,那么高斯-约旦消元法可能会变得非常耗时。在这种情况下,您可以考虑使用其他的求解方法,如LU分解或Jacobi迭代法等。