⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gauss-seidel.c

📁 高斯斯代尔迭代法
💻 C
字号:
//高斯斯代尔:可以以更快的速度达到精度要求,经过16次迭代。
#include <stdio.h>
#include <math.h>
#define N 6
#define E 0.00001


print_column_N(double array[N][N])
  {
   int i,j;
   for(i=0;i<N;i++)
     {
      for(j=0;j<N;j++)
        printf("%5f ",array[i][j]);
      printf("\n");
     }
  getchar();
  }

print_column_1(double array[N])
  {
   int i;
   for(i=0;i<N;i++)
     {
      printf("%5f ",array[i]);
      printf("\n");
     }
  getchar();
  }

main()
{
 int i,j,n;
 double max;
 double a[N][N]={{4,-1,0,-1,0,0},
           	{-1,4,-1,0,-1,0},
      	     	{0,-1,4,-1,0,-1},
           	{-1,0,0,4,-1,0},
	   	{0,-1,0,-1,4,-1},
	   	{0,0,-1,0,-1,4}
           	};
 double b[N]={0,5,0,6,-2,6}; 
 double u[N],e[N];
 double x[N];

    for(i=0;i<N;i++)
      {
       x[i]=0;
      }
/*examine a[N][N],b[N].*/

print_column_N(a);

print_column_1(b);

/*gaussian_scaled arithmetic core.*/

  n=0;
  while(1)
    {
     n++;
     for(i=0;i<N;i++)
       {
        u[i]=b[i];
       for(j=0;j<N;j++)
         {
          if(i!=j)
            u[i]=u[i]-x[j]*a[i][j];
          }
        u[i]=u[i]/a[i][i];
        e[i]=fabs(u[i]-x[i]);
        x[i]=u[i];
       }
     max=e[0];
     for(i=1;i<N;i++)
       {
        if(max<e[i])
          max=e[i];
       }
     if(max<E)
       {
        printf("satisfy the presion:\n");
        break;
       }
     if(n>25)
       {
        printf("iteration above 25:\n");
        break;
       }
     }

 printf("\n");
 printf("%d",n);
 printf ("\n");
 getchar();
 printf("X:\n");
 print_column_1(x);

} 


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -