C PROGRAM TO IMPLEMENT GAUSS JACOBI METHOD

//Program to implement Gauss Jacobi
#include<stdio.h>
#include<math.h>
#include<conio.h>
#include<stdlib.h>
int main()
{
 float a[20][20],xold[20],xnew[20],e,big,temp,relerror,sum=0;
        // e for precision
 int n,i,j,maxit,itr;
 char ch;
 printf("Enter the size of the equation\n");
 scanf("%d",&n);
 for(i=0;i<n;i++)
 {
  printf("Enter the co-efficent of equation of %d and RHS\n",i);
  for(j=0;j<=n;j++)
  scanf("%f",&a[i][j]);
 }
 printf("Enter relative error and number of itereation:\n");
 scanf("%f%d",&e,&maxit);
        // GIVE  e =0.001 or 0.0001 for more accuracy 
      
 for(i=0;i<n;i++)
 {
  printf("Enter initial approx value of x[%d]=\n",i);
  scanf("%f",&xold[i]);
  xnew[i]=0;
 }
 for(itr=1;itr<=maxit;itr++)
 {
  printf("\n Iteration [%d]",itr);
  big=0;
  for(i=0;i<n;i++)
  {
   sum=0;
   for(j=0;j<n;j++)
   {
    if(i!=j)
    sum=sum+a[i][j]*xold[j];
   }
   temp=(a[i][n]-sum)/a[i][i];
   printf("x[%d]=%f",i,temp);
   relerror=fabs(xold[i]-temp);
   if(relerror>big)
    big=relerror;
    xnew[i]=temp;
  }
   for(i=0;i<n;i++)
   xold[i]=xnew[i];
   if(big<=e)
   {
   printf("Converges to a solution in %d iteration\n",itr);
   for(i=0;i<n;i++)
   printf("\n %4f\t",xnew[i]);
   getch();
   exit(1);
 }
 printf("\n");
 }
 printf("Doesn't converge in %d iteration \n",maxit);
 getch();
}

Comments