upsidedown

Jacobi itrative method

Sep 16th, 2011
183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.15 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<math.h>
  4. #define ERROR 0.001
  5.  
  6. int main()
  7. {
  8.  
  9.     int n,i,j,key,flag;
  10.     float a[10][10],b[10],sum,x[10],x0[10],s=0;
  11.  
  12.     printf("enter the no of equations ");
  13.     scanf("%d",&n);
  14.     for(i=0;i<n;i++)
  15.     {
  16.         printf("enter coefficients of equation %d\t",i+1);
  17.         for(j=0;j<n;j++)
  18.             scanf("%f",&a[i][j]);
  19.         printf("\nenter constant of equation %d\t",i+1);
  20.         scanf("%f",&b[i]);
  21.     }
  22.  
  23.     for(i=0;i<n;i++)
  24.     {
  25.         s=0;
  26.         for(j=0;j<n;j++)
  27.         {
  28.             if(i!=j)
  29.                 s+=fabs(a[i][j]);
  30.         }
  31.         if(fabs(a[i][i])<s)
  32.         {
  33.             printf("error");
  34.             exit(1);
  35.         }
  36.    
  37.     }
  38.  
  39.  
  40.     for(i=0;i<n;i++)
  41.         x0[i]=b[i]/a[i][i];
  42.  
  43.  
  44. flag=1;
  45. while(flag)
  46. {
  47.     key=0;
  48.  
  49.    
  50.     for(i=0;i<n;i++)
  51.     {
  52.         sum=b[i];
  53.        
  54.         for(j=0;j<n;j++)
  55.         {
  56.             if(j!=i)
  57.             {
  58.                 sum=sum-(a[i][j]*x0[j]);
  59.             }
  60.         }
  61.  
  62.         x[i]=sum/a[i][i];
  63.        
  64.         if(key==0)
  65.             if(fabs((x[i]-x0[i])/x[i])>ERROR)
  66.                 key=1;
  67.  
  68.        
  69.        
  70.    
  71.     }
  72.  
  73.     if(key==1)
  74.     {
  75.             for(i=0;i<n;i++)
  76.             {
  77.                 x0[i]=x[i];
  78.             }
  79.            
  80.     }
  81.     else
  82.         flag=0;
  83. }
  84.    
  85.  
  86.    
  87.    
  88.  
  89.  
  90.  
  91.     printf("the solutions for the variables are");
  92.    
  93.     for(i=0;i<n;i++)
  94.     {
  95.         printf("%f\t",x[i]);
  96.     }
  97. }
Advertisement
Add Comment
Please, Sign In to add comment