Quantcast
Channel: The Crazy Programmer
Viewing all articles
Browse latest Browse all 761

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

$
0
0

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.

Matrix Inverse Formula

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

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

The post C and C++ Program to Find Inverse of a Matrix appeared first on The Crazy Programmer.


Viewing all articles
Browse latest Browse all 761

Trending Articles