The following C program finds the solution to system of linear equations using Gaussian Elimination, given there exists a unique solution to the problem
#include <stdio.h>
#include <stdlib.h>
int no;
double **A, *B, *x;
void Gauss(int n) {
int r, c, d=no-n;
if(n != 1) {
for(r=d+1; r < no; r++) {
for(c=d+1; c<no; c++)
A[r][c] -= A[r][d]/A[d][d] * A[d][c];
B[r] -= A[r][d]/A[d][d] * B[d];
A[r][d]=0;
}
Gauss(n-1);
}
for(c=d+1; c<no; c++)
B[d] -= A[d][c]*x[c];
x[d] = B[d]/A[d][d];
}
void acceptNsolve() {
int r, c;
printf("Enter the no of unknowns\n");
scanf("%d", &no);
printf("Enter the coefficient matrix\n");
A=malloc(no);
for(r=0; r<no; r++) {
A[r] = malloc(no * sizeof(double));
for(c=0; c<no; c++)
scanf("%lf", &A[r][c]);
}
printf("Enter value of constants in the column vector\n");
B = malloc(no * sizeof(double));
for(r=0; r<no; r++)
scanf("%lf", &B[r]);
x = malloc(no * sizeof(double));
Gauss(no);
printf("The solution of the given linear equations is\n");
for(r=0; r<no; r++)
printf("%g\n",x[r]);
}
int main() {
acceptNsolve();
return 0;
}
Input: Enter the no of unknowns 3 Enter the coefficient matrix 5 3 1 2 1 3 1 2 4 Enter value of constants in the column vector 16 19 25 Output: The solution of the given linear equations is 1 2 5