# Gauss Seidel Iteration Method Using C Programming

C Program for Gauss Seidel iterative method for solving systems of linear equations is implemented in this article and output is also provided.

## C Program for Gauss Seidel Method

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

/* Arrange systems of linear
equations to be solved in
diagonally dominant form
and form equation for each
unknown and define here
*/
/* In this example we are solving
3x + 20y - z = -18
2x - 3y + 20z = 25
20x + y - 2z = 17
*/
/* Arranging given system of linear
equations in diagonally dominant
form:
20x + y - 2z = 17
3x + 20y -z = -18
2x - 3y + 20z = 25
*/
/* Equations:
x = (17-y+2z)/20
y = (-18-3x+z)/20
z = (25-2x+3y)/20
*/
/* Defining function */
#define f1(x,y,z)  (17-y+2*z)/20
#define f2(x,y,z)  (-18-3*x+z)/20
#define f3(x,y,z)  (25-2*x+3*y)/20

/* Main function */
int main()
{
float x0=0, y0=0, z0=0, x1, y1, z1, e1, e2, e3, e;
int count=1;
clrscr();
printf("Enter tolerable error:\n");
scanf("%f", &e);

printf("\nCount\tx\ty\tz\n");
do
{
/* Calculation */
x1 = f1(x0,y0,z0);
y1 = f2(x1,y0,z0);
z1 = f3(x1,y1,z0);
printf("%d\t%0.4f\t%0.4f\t%0.4f\n",count, x1,y1,z1);

/* Error */
e1 = fabs(x0-x1);
e2 = fabs(y0-y1);
e3 = fabs(z0-z1);

count++;

/* Set value for next iteration */
x0 = x1;
y0 = y1;
z0 = z1;

}while(e1>e && e2>e && e3>e);

printf("\nSolution: x=%0.3f, y=%0.3f and z = %0.3f\n",x1,y1,z1);

getch();
return 0;
}
``````

## Gauss Seidel C Program Output

```Enter tolerable error:
0.0001

Count   x       y       z
1       0.8500  -1.0275 1.0109
2       1.0025  -0.9998 0.9998
3       1.0000  -1.0000 1.0000
4       1.0000  -1.0000 1.0000

Solution: x=1.000, y=-1.000 and z = 1.000
```