Program for Gauss Siedel Method (Computational Mathematics)

The Gauss Seidel method is an iterative process to solve a square system of (multiple) linear equations. It is also prominently known as ‘Liebmann’ method. In any iterative method in numerical analysis, every solution attempt is started with an approximate solution of an equation and iteration is performed until the desired accuracy is obtained. In Gauss-Seidel method, the most recent values are used in successive iterations. The Gauss-Seidel Method allows the user to control round-off error.

The Gauss Seidel method is very similar to Jacobi method and is called as the method of successive displacement. (Since recently obtained values are used in the subsquent equations). The Gauss Seidel convergence criteria depend upon the following two properties: (must be satisfied).

  • The matrix is diagonally dominant.
  • The matrix is symmetrical and positive.

Steps involved:

  • Step 1: Compute value for all the linear equations for Xi. (Initial array must be available)
  • Step 2: Compute each Xi and repeat the above steps.
  • Step 3: Make use of the absolute relative approximate error after every step to check if the error occurs within a pre-specified tolerance.

Code for Gauss Siedel method:

filter_none

edit
close

play_arrow

link
brightness_4
code

#include <stdio.h>
  
int main()
{
    int count, t, limit;
    float temp, error, a, sum = 0;
    float matrix[10][10], y[10], allowed_error;
      
    printf("\nEnter the Total Number of Equations:\t");
    scanf("%d", & limit);
    // maximum error limit till which errors are considered, 
    // or desired accuracy is obtained)
      
    printf("Enter Allowed Error:\t"); 
    scanf("%f", & allowed_error);
    printf("\nEnter the Co-Efficients\n");
      
    for(count = 1; count < = limit; count++)
    {
        for(t = 1; t < = limit + 1; t++)
        {
            printf(" Matrix[%d][%d] = " , count, t);
            scanf(" %f" , & matrix[count][t]);
        }
    }
      
    for(count = 1; count < = limit; count++)
    {
        y[count] = 0;
    }
    do
    {
        a = 0;
        for(count = 1; count < = limit; count++)
        {
            sum = 0;
            for(t = 1; t  a)
            {
                a = error;
            }
            y[count] = temp;
            printf("\nY[%d]=\t%f", count, y[count]);
        }
        printf("\n");
    }
    while(a > = allowed_error);
      
    printf("\n\nSolution\n\n");
      
    for(count = 1; count < = limit; count++)
    {
        printf(" \nY[%d]:\t%f" , count, y[count]);
    }
    return 0;
}

chevron_right


Output:

Enter the Total Number of Equations:   1
Enter Allowed Error:   0.5

Enter the Co-Efficients
Matrix[1][1] = 1
Matrix[1][2] = 4

Y[1]=   4.000000

Y[1]=   4.000000

Solution

Y[1]:   4.000000  

Advantages:

  • Faster iteration process. (than other methods)
  • Simple and easy to implement.
  • Low on memory requirements.

Disadvantages:

  • Slower rate of convergence. (than other methods)
  • Requires a large number of iterations to reach the convergence point.


My Personal Notes arrow_drop_up

Game Design | Cryptography | Web Development

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.