Java编程Jacobi迭代
时间: 2023-07-05 10:35:54 浏览: 101
jacobi.rar_Jacobi迭代算法_jacobi迭代_迭代算法
下面是Java代码实现Jacobi迭代法求解线性方程组的过程:
```
public class Jacobi {
public static void main(String[] args) {
// 定义线性方程组的系数矩阵A和右端向量b
double[][] A = {{4, 1, 1}, {2, 5, 2}, {1, 2, 4}};
double[] b = {4, 8, 9};
// 定义初始解向量x0和迭代次数
double[] x0 = {0, 0, 0};
int k = 0;
// 定义迭代精度
double eps = 1e-6;
// 定义最大迭代次数
int maxIter = 100;
// 开始迭代
while (true) {
double[] x = new double[3];
for (int i = 0; i < 3; i++) {
double sum = 0;
for (int j = 0; j < 3; j++) {
if (i != j) {
sum += A[i][j] * x0[j];
}
}
x[i] = (b[i] - sum) / A[i][i];
}
// 计算相对误差
double error = 0;
for (int i = 0; i < 3; i++) {
error += Math.abs((x[i] - x0[i]) / x[i]);
}
// 判断是否满足精度要求
if (error < eps) {
break;
}
x0 = x;
k++;
// 判断是否超过最大迭代次数
if (k > maxIter) {
System.out.println("Iterative method failed to converge!");
break;
}
}
// 输出解向量
System.out.println("The solution vector is:");
for (int i = 0; i < 3; i++) {
System.out.println("x[" + i + "] = " + x0[i]);
}
}
}
```
在上面的代码中,我们定义了线性方程组的系数矩阵和右端向量,初始解向量和迭代精度,以及最大迭代次数。然后,在while循环中执行Jacobi迭代公式,计算新的解向量,并判断相对误差是否小于精度要求。如果满足要求,就输出解向量;如果不满足要求,就继续迭代,直到达到最大迭代次数或者迭代失败。
阅读全文