Here you will get C and C++ program to find inverse of a matrix.

We can obtain matrix inverse by following method.

- First calculate deteminant of matrix.
- Then calculate adjoint of given matrix. Adjoint can be obtained by taking transpose of cofactor matrix of given square matrix.
- Finally multiply 1/deteminant by adjoint to get inverse.

The formula to find inverse of matrix is given below.

You can watch below video to learn how inverse is calculated.

In below program I have calculated the inverse of 3×3 matrix.

## C Program to Find Inverse of a Matrix

#include<stdio.h> int main(){ int mat[3][3], i, j; float determinant = 0; printf("Enter elements of matrix row wise:\n"); for(i = 0; i < 3; i++) for(j = 0; j < 3; j++) scanf("%d", &mat[i][j]); printf("\nGiven matrix is:"); for(i = 0; i < 3; i++){ printf("\n"); for(j = 0; j < 3; j++) printf("%d\t", mat[i][j]); } //finding determinant for(i = 0; i < 3; i++) determinant = determinant + (mat[0][i] * (mat[1][(i+1)%3] * mat[2][(i+2)%3] - mat[1][(i+2)%3] * mat[2][(i+1)%3])); printf("\n\ndeterminant: %f\n", determinant); printf("\nInverse of matrix is: \n"); for(i = 0; i < 3; i++){ for(j = 0; j < 3; j++) printf("%.2f\t",((mat[(j+1)%3][(i+1)%3] * mat[(j+2)%3][(i+2)%3]) - (mat[(j+1)%3][(i+2)%3] * mat[(j+2)%3][(i+1)%3]))/ determinant); printf("\n"); } return 0; }

## C++ Program to Find Inverse of a Matrix

#include<iostream> using namespace std; int main(){ int mat[3][3], i, j; float determinant = 0; cout<<"Enter elements of matrix row wise:\n"; for(i = 0; i < 3; i++) for(j = 0; j < 3; j++) cin>>mat[i][j]; printf("\nGiven matrix is:"); for(i = 0; i < 3; i++){ cout<<"\n"; for(j = 0; j < 3; j++) cout<<mat[i][j]<<"\t"; } //finding determinant for(i = 0; i < 3; i++) determinant = determinant + (mat[0][i] * (mat[1][(i+1)%3] * mat[2][(i+2)%3] - mat[1][(i+2)%3] * mat[2][(i+1)%3])); cout<<"\n\ndeterminant: "<<determinant; cout<<"\n\nInverse of matrix is: \n"; for(i = 0; i < 3; i++){ for(j = 0; j < 3; j++) cout<<((mat[(j+1)%3][(i+1)%3] * mat[(j+2)%3][(i+2)%3]) - (mat[(j+1)%3][(i+2)%3] * mat[(j+2)%3][(i+1)%3]))/ determinant<<"\t"; cout<<"\n"; } return 0; }

**Output**

Someone once need helpthank you very much for your example, now i can go to bed easily =D . Really help my task to do inverse matrices from read files

megha kapsewhy you use %3 finding determinant

SrikanthMatrix size 3

Genkers%3 keeps the for loop from trying to access out of bound array

aakashWrite a program in C++ to find the minor of every elements of a square matrix of any order.

The order of the square matrix should be entered by the user.

paulaowhat is the function of the mode in the code

Levi CaesarThank u so much dude… u’ve helped us..

MadanI did not understand this can you explain me clear ‘

cout<<((mat[(j+1)%3][(i+1)%3] * mat[(j+2)%3][(i+2)%3]) – (mat[(j+1)%3][(i+2)%3] * mat[(j+2)%3][(i+1)%3]))/ determinant<<"\t";

what is J+1, i+1 and so on?

RashmiThank you very much to upload this program

Pavan kalyanBro i want the explanation about the full program if u have any related videos plz send to my mail

Arafat HossenWhat would be the changes to calculate 4*4 matrix or further ?

Md. Selim Rezai don’t understand (j+1)%3 and (i+1)%3

nasySo wise! I was trying to implement the same thing by calculating each element manually and that could take forever.. Thank you so much!

HarshitaCan you please give me the pseudo code for this?

IffatMay for such a simple and awesome code I’ve wasted hours in searching from sites to sites.

Live long sir!

SauravEasy to Understand Code It is just Like what the teacher taught me during jee preparation’;

I want to solve it using the rank method

whadduhlol im actually confused on how the c++ program is outputting the inverse array in decimal form when the array itself is an int datatype