Thursday , August 17 2017
Home / C / How to find inverse of a matrix in C programming?

How to find inverse of a matrix in C programming?

In order to find inverse of a matrix in C programming, you need to know about the C program example for the task of finding inverse of a matrix. So here is the code to use.

C Program to find inverse of a matrix – C code examples

Source Code for finding inverse of a matrix in C

#include<stdio.h>
#include<math.h>
float determinant(float [][25], float);
void cofactor(float [][25], float);
void transpose(float [][25], float [][25], float);
int main()
{
 float a[25][25], k, d;
 int i, j;
 printf("Enter the order of the Matrix : ");
 scanf("%f", &k);
 printf("Enter the elements of %.0fX%.0f Matrix : \n", k, k);
 for (i = 0;i < k; i++)
 {
 for (j = 0;j < k; j++)
 {
 scanf("%f", &a[i][j]);
 }
 }
 d = determinant(a, k);
 if (d == 0)
 printf("\nInverse of Entered Matrix is not possible\n");
 else
 cofactor(a, k);
}

/*For calculating Determinant of the Matrix */
float determinant(float a[25][25], float k)
{
 float s = 1, det = 0, b[25][25];
 int i, j, m, n, c;
 if (k == 1)
 {
 return (a[0][0]);
 }
 else
 {
 det = 0;
 for (c = 0; c < k; c++)
 {
 m = 0;
 n = 0;
 for (i = 0;i < k; i++)
 {
 for (j = 0 ;j < k; j++)
 {
 b[i][j] = 0;
 if (i != 0 && j != c)
 {
 b[m][n] = a[i][j];
 if (n < (k - 2))
 n++;
 else
 {
 n = 0;
 m++;
 }
 }
 }
 }
 det = det + s * (a[0][c] * determinant(b, k - 1));
 s = -1 * s;
 }
 }

 return (det);
}

void cofactor(float num[25][25], float f)
{
 float b[25][25], fac[25][25];
 int p, q, m, n, i, j;
 for (q = 0;q < f; q++)
 {
 for (p = 0;p < f; p++)
 {
 m = 0;
 n = 0;
 for (i = 0;i < f; i++)
 {
 for (j = 0;j < f; j++)
 {
 if (i != q && j != p)
 {
 b[m][n] = num[i][j];
 if (n < (f - 2))
 n++;
 else
 {
 n = 0;
 m++;
 }
 }
 }
 }
 fac[q][p] = pow(-1, q + p) * determinant(b, f - 1);
 }
 }
 transpose(num, fac, f);
}
/*Finding transpose of matrix*/ 
void transpose(float num[25][25], float fac[25][25], float r)
{
 int i, j;
 float b[25][25], inverse[25][25], d;

 for (i = 0;i < r; i++)
 {
 for (j = 0;j < r; j++)
 {
 b[i][j] = fac[j][i];
 }
 }
 d = determinant(num, r);
 for (i = 0;i < r; i++)
 {
 for (j = 0;j < r; j++)
 {
 inverse[i][j] = b[i][j] / d;
 }
 }
 printf("\n\n\nThe inverse of matrix is : \n");

 for (i = 0;i < r; i++)
 {
 for (j = 0;j < r; j++)
 {
 printf("\t%f", inverse[i][j]);
 }
 printf("\n");
 }
}

 

Output of source code

$ gcc inverse_matrix.c -o inverse_matrix
$ ./inverse_matrix
 
Enter the order of the Square Matrix : 3
 
Enter the elements of 3X3 Matrix : 3 5 2 1 5 8 3 9 2
 
The inverse of matrix is : 
 0.704545 -0.090909 -0.340909
 -0.250000 -0.000000 0.250000
 0.068180 0.136364 -0.113636

So this is how using the C program for finding inverse of a matrix in C, you can easily find matrix inverse in C program.

For more, keep checking program code examples.

Check Also

Restrict Mouse Pointer Position C Graphics Program

This C Program will restrict the Mouse Pointer location or to a particular position or x,y ...

Leave a Reply

Your email address will not be published. Required fields are marked *