c语言高斯赛德尔迭代法
时间: 2023-10-26 16:04:47 浏览: 223
高斯赛德尔迭代法是一种求解线性方程组的迭代方法。在C语言中,可以通过以下代码实现高斯赛德尔迭代法:
```c
#include <stdio.h>
#include <math.h>
#define N 3 // 矩阵维度
int main() {
double A[N][N] = {{4, -1, 0}, {-1, 4, -1}, {0, -1, 4}}; // 原矩阵
double b[N] = {15, 10, 10}; // 常数项
double x0[N] = {0, 0, 0}; // 初始解
double x[N]; // 迭代解
double eps = 1e-5; // 精度
double err = eps + 1; // 误差
int k = 0; // 迭代次数
while (err > eps) {
for (int i = 0; i < N; i++) {
x[i] = b[i];
for (int j = 0; j < i; j++) {
x[i] -= A[i][j] * x[j];
}
for (int j = i + 1; j < N; j++) {
x[i] -= A[i][j] * x0[j];
}
x[i] /= A[i][i];
}
err = 0;
for (int i = 0; i < N; i++) {
err += pow(x[i] - x0[i], 2);
}
err = sqrt(err);
for (int i = 0; i < N; i++) {
x0[i] = x[i];
}
k++;
}
printf("迭代次数:%d\n", k);
printf("解向量:[");
for (int i = 0; i < N; i++) {
printf("%f ", x[i]);
}
printf("]\n");
return 0;
}
```
其中,`A`为原矩阵,`b`为常数项,`x0`为初始解,`x`为迭代解,`eps`为精度,`err`为误差,`k`为迭代次数。在每次迭代中,按照高斯赛德尔迭代法的公式进行计算,直到误差小于精度为止。
阅读全文