GAUSS JACOBI'S METHOD.

//Program to implement Gauss Jacobi
#include<stdio.h>
#include<math.h>
int main()
{
float a[20][20],xold[20],xnew[20],e,big,temp,relerror,sum=0;
         // e = error   maxit=max no. of iterations
int n,i,j,maxit,itr;
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);
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]);
return 0;
}
printf("\n");
}
printf("Doesn't coverge in %d iteration \n",maxit);
return 0;
}

Comments