您的位置:首页 > 其它

高斯-塞德尔迭代法Gauss-Seidel_解线性方程组的迭代法

2018-01-15 22:07 393 查看

高斯-塞德尔迭代法Gauss-Seidel_解线性方程组的迭代法

标签:计算方法实验

#include <stdio.h>
#include <math.h>

#define maxn 3

int main()
{
double a[maxn][maxn + 1], x[maxn] = {0};
double eps = 1e-9;
int n, k, kmax = 100;

freopen("gauss.txt", "r", stdin);
scanf("%d", &n);
for(int i = 0; i < n; i++)
for(int j = 0; j < n + 1; j++)
scanf("%lf", &a[i][j]);
//for(int i = 0; i < n; i++)
//{
//for(int j = 0; j < n + 1; j++)  printf("%-15f", a[i][j]);
//printf("\n");
//}

for(k = 0; k < kmax; k++)
{
double norm = 0;

for(int i = 0; i < n; i++)
{
double x0 = x[i];
double sum = 0;
for(int j = 0; j < n; j++)  if(j != i)  sum += a[i][j] * x[j];  ///
x[i] = (a[i]
- sum) / a[i][i];  //n
if(fabs(x[i] - x0) > norm) norm = fabs(x[i] - x0);  //norm
}
printf("\nk = %2d  x =  ", k + 1);
for(int i = 0; i < n; i++)  printf("%-15f", x[i]);
if(norm < eps)  break;
}
if(k < kmax)
{
printf("\n\nk = %d\n", k + 1);
for(int i = 0; i < n; i++)  printf("x%d = %-15f\n", i + 1, x[i]);
}
else  printf("\n\nfailed\n");

return 0;
}


数据文件



实验结果

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐