gaussseidel迭代法c++
时间: 2023-12-25 11:04:21 浏览: 61
Gauss-Seidel迭代法是一种解线性方程组的方法,它通过不断迭代逼近方程组的解。以下是使用C语言实现Gauss-Seidel迭代法的代码:
```c
#include <stdio.h>
#include <math.h>
#define N 3 // 方程组的维度
int main()
{
double A[N][N] = {{2,-1,0},{-1,2,-1},{0,-1,2}}; // 系数矩阵
double b[N] = {1,0,1}; // 常数向量
double x[N] = {0}; // 初始解向量
double eps = 1e-6; // 收敛精度
double delta; // 当前迭代的误差
int i, j, k;
for (k = 0; k < 1000; k++) // 最大迭代次数为1000次
{
delta = 0;
for (i = 0; i < N; i++)
{
double sum = b[i];
for (j = 0; j < N; j++)
{
if (i != j)
{
sum -= A[i][j] * x[j];
}
}
double new_x = sum / A[i][i];
delta += fabs(new_x - x[i]);
x[i] = new_x;
}
if (delta < eps) // 当误差小于精度时停止迭代
{
break;
}
}
printf("Solution:\n");
for (i = 0; i < N; i++)
{
printf("x[%d] = %f\n", i, x[i]);
}
return 0;
}
```
在这个代码中,我们先定义了一个3×3的系数矩阵A和一个3维的常数向量b,以及一个初始解向量x。然后我们进行了最多1000次的迭代,每次迭代都计算新的解向量,并计算当前的误差。当误差小于预设的收敛精度时,迭代结束。最后输出解向量x的值。
以上就是使用C语言实现Gauss-Seidel迭代法的代码。
阅读全文