高斯-赛德尔迭代算法c语言
时间: 2023-07-26 08:21:43 浏览: 138
以下是高斯-赛德尔迭代算法的 C 语言代码示例:
```c
#include <stdio.h>
#include <math.h>
#define MAXN 100
#define 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() {
scanf("%d", &n);
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
scanf("%lf", &A[i][j]);
}
scanf("%lf", &b[i]);
}
double x[MAXN] = {0};
int cnt = 0;
while (1) {
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;
}
printf("Solution:\n");
for (int i = 0; i < n; i++) {
printf("%lf ", x[i]);
}
printf("\n");
printf("Iteration times:%d\n", cnt);
return 0;
}
```
其中,`n` 表示方程组的未知数个数,`A` 表示系数矩阵,`b` 表示常数向量,`eps` 表示迭代精度,`x` 表示方程组的解向量。 `GSIteration` 函数表示一次高斯-赛德尔迭代的过程。在主函数中,首先输入方程组的系数和常数,然后进行迭代,直到满足精度要求。最后输出解向量和迭代次数。
阅读全文