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

📄 jacobi.c

📁 雅戈比迭代法
💻 C
字号:
//雅戈比方法:经过25次迭代,无法达到题目所规定的精度。
 
#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]);
       }
     for(i=0;i<N;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 + -