高斯-赛德尔迭代算法c++
时间: 2023-07-26 16:15:24 浏览: 60
以下是高斯-赛德尔迭代算法的 C++ 代码示例:
```c++
#include <iostream>
#include <cmath>
using namespace std;
const int MAXN = 100;
const double eps = 1e-6;
double A[MAXN][MAXN], b[MAXN];
int n;
void GSIteration(double x[]) {
double x_new[MAXN];
for (int i = 0; i < n; i++) {
double sum1 = 0.0, sum2 = 0.0;
for (int j = 0; j < i; j++) {
sum1 += A[i][j] * x_new[j];
}
for (int j = i + 1; j < n; j++) {
sum2 += A[i][j] * x[j];
}
x_new[i] = (b[i] - sum1 - sum2) / A[i][i];
}
for (int i = 0; i < n; i++) {
x[i] = x_new[i];
}
}
int main() {
cin >> n;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cin >> A[i][j];
}
cin >> b[i];
}
double x[MAXN] = {0};
int cnt = 0;
while (true) {
GSIteration(x);
cnt++;
double err = 0.0;
for (int i = 0; i < n; i++) {
err += fabs(x[i] - x_new[i]);
}
if (err < eps) break;
}
cout << "Solution:" << endl;
for (int i = 0; i < n; i++) {
cout << x[i] << " ";
}
cout << endl;
cout << "Iteration times:" << cnt << endl;
return 0;
}
```
其中,`n` 表示方程组的未知数个数,`A` 表示系数矩阵,`b` 表示常数向量,`eps` 表示迭代精度,`x` 表示方程组的解向量。 `GSIteration` 函数表示一次高斯-赛德尔迭代的过程。在主函数中,首先输入方程组的系数和常数,然后进行迭代,直到满足精度要求。最后输出解向量和迭代次数。