高斯赛德尔迭代法c语言
时间: 2023-10-26 15:20:42 浏览: 31
用C语言实现高斯-赛德尔迭代方法
4星 · 用户满意度95%
以下是高斯赛德尔迭代法的c语言实现代码:
```
#include<stdio.h>
#include<math.h>
#define N 100 // 最大迭代次数
#define M 20 // 矩阵维数
int main()
{
int n, i, j, k = 0;
double a[M][M], b[M], x[M], y[M], t, eps;
printf("请输入矩阵阶数n: ");
scanf("%d", &n);
printf("请输入增广矩阵:\n");
for(i = 0; i < n; i++)
{
for(j = 0; j < n; j++)
{
scanf("%lf", &a[i][j]);
}
scanf("%lf", &b[i]);
}
printf("请输入初始向量:\n");
for(i = 0; i < n; i++)
{
scanf("%lf", &x[i]);
}
printf("请输入精度eps: ");
scanf("%lf", &eps);
do
{
for(i = 0; i < n; i++)
{
t = b[i];
for(j = 0; j < n; j++)
{
if(i != j)
{
t -= a[i][j] * x[j];
}
}
y[i] = t / a[i][i];
if(fabs(y[i] - x[i]) < eps)
{
k++;
}
x[i] = y[i];
}
}while(k < n && k < N);
if(k == N)
{
printf("迭代次数超过%d次,迭代失败!\n", N);
}
else
{
printf("迭代%d次,解为:\n", k);
for(i = 0; i < n; i++)
{
printf("%lf ", x[i]);
}
printf("\n");
}
return 0;
}
```
其中,n表示矩阵的阶数,a表示系数矩阵,b表示常数向量,x表示初始向量,y表示迭代计算得到的新解向量,t表示方程的右侧值,eps表示精度,k表示迭代次数。迭代次数不能超过N次,否则认为迭代失败。
阅读全文