Answer to Question #100834 in C++ for zahra

Question #100834
Write a program that will find the inverse of any two dimensional array without the usage of
the built-in function solve with do while
1
Expert's answer
2020-01-15T09:47:42-0500
#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);//method call for determinant calculation

if (d == 0)// for matrix with determinant 0, inverrse is not possible

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);

}

//calculating cofactor

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);//transpose function call

}

/*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%.2f", inverse[i][j]);//printing inverse value in d loop

}

printf("\n");

}

}

We use this program for any matrix


The output of 2* 2matrix will be :



The output of 3 * 3matrix will be :







The output of 4* 4 matrix will be :





Need a fast expert's response?

Submit order

and get a quick answer at the best price

for any assignment or question with DETAILED EXPLANATIONS!

Comments

No comments. Be the first!

Leave a comment

LATEST TUTORIALS
New on Blog
APPROVED BY CLIENTS