Write a C program to solve linear system of equations by using Gauss Seidal Method.

#include<stdio.h>
#include<math.h>

void show(float a[][200],int r);

main()
{
    float a[200][200],err,aerr=0.00001,x[200]={0},maxerr,t;
    int r,i,j,maxitr=10,itr,s;
    printf("\nEnter number of variables=");
    scanf("%d",&r);
    for(i=0;i<r;i++)
    {
        for(j=0;j<r;j++)
        {
            printf("\nEnter coefficient of x%d=",j);
            scanf("%f",&a[i][j]);
        }
        printf("\nEnter constant value=");
        scanf("%f",&a[i][r]);
    }
    printf("\nThe augmented matrix is \n");
    show(a,r);
    printf("Iteration\t");
    for(i=0;i<r;i++)
        printf("     x[%2d]     ",i+1);
    printf("\n");

    for(itr=1;itr<=maxitr;itr++)
    {
        maxerr=0;
        for(i=0;i<r;i++)
        {
            s=0;
            for(j=0;j<r;j++)
            {
                if(j!=i)
                {
                    s+=a[i][j]*x[j];
                }
            }
            t=(a[i][r]-s)/a[i][i];
            err=fabs(x[i]-t);
            if(err>maxerr)
                maxerr=err;
            x[i]=t;
        }
        printf("%5d     ",itr);
        for(i=0;i<r;i++)
        {
            printf("%15f",x[i]);
        }
        printf("\n");
        if(maxerr<aerr)
        {
            printf("Converges in %3d Iteration\n",itr);
            for(i=0;i<r;i++)
            {
                printf("x[%d]=%f",i,x[i]);
            }
            return 0;
        }
    }
    printf("\nSolution does not converge, needs more iteration \n");
}

void show(float a[][200],int r)
{
    int i,j;
    for(i=0;i<r;i++)
    {
        for(j=0;j<r;j++)
        {
            printf("%20f",a[i][j]);
        }
        printf("  %20f",a[i][r]);
        printf("\n");
    }
    printf("\n");
}

No comments:

Post a Comment