//Program to implement Gauss Seidel method
#include<stdio.h>
#include<math.h>
#include<conio.h>
#include<stdlib.h>
int main()
{
float a[20][20],x[20],e,big,temp,relerror,sum=0;
//e=relative error
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 coefficent 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 iteration:\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",&x[i]);
x[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]*x[j];
}
temp=(a[i][n]-sum)/a[i][i];
printf(" x[%d]=%f",i,temp);
relerror=fabs(x[i]-temp);
if(relerror>big)
big=relerror;
x[i]=temp;
}
if(big<=e)
{
printf("Converges to a solution in %d iteration\n",itr);
for(i=0;i<n;i++)
printf("\n %4f\t",x[i]);
getch();
exit(1);
}
}
printf("Doesn't converge in %d iteration \n",maxit);
getch();
}
Comments
Post a Comment