programming-examples/java/Numerical_Problems/Java Program to Check if a Matrix is Invertible.java
2019-11-15 12:59:38 +01:00

84 lines
2.7 KiB
Java

/*
This is the java program to check whether the matrix is invertible or not. The square matrix is invertible if and only if its determinant is non zero.
*/
//This is a simple program to check whether the matrix is invertible or not.
//The complexity of the algorithm is O(n^3)
import java.util.*;
public class Invertible_Matrix
{
public double determinant(double A[][],int N)
{
double det=0;
if(N == 1)
{
det = A[0][0];
}
else if (N == 2)
{
det = A[0][0]*A[1][1] - A[1][0]*A[0][1];
}
else
{
det=0;
for(int j1=0; j1<N; j1++)
{
double[][] m = new double[N-1][];
for(int k=0; k<(N-1); k++)
{
m[k] = new double[N-1];
}
for(int i=1; i<N; i++)
{
int j2=0;
for(int j=0; j<N; j++)
{
if(j == j1)
continue;
m[i-1][j2] = A[i][j];
j2++;
}
}
det += Math.pow(-1.0,1.0+j1+1.0)* A[0][j1] * determinant(m,N-1);
}
}
return det;
}
public static void main(String args[])
{
Scanner input = new Scanner(System.in);
System.out.println("Enter the order of the square matrix");
int n = input.nextInt();
System.out.println("Enter the elements of the square matrix");
double[][] mat = new double[n][n];
for(int i=0; i<n; i++)
{
for(int j=0; j<n; j++)
{
mat[i][j] = input.nextDouble();
}
}
Invertible_Matrix I = new Invertible_Matrix();
if(I.determinant(mat, n) == 0)
{
System.out.println("Matrix is not Invertible, as the determinant is : "+I.determinant(mat, n));
}
else
{
System.out.println("Matrix is Invertible, as the determinant is : "+I.determinant(mat, n));
}
input.close();
}
}
/*
Enter the order of the square matrix:
3
Enter the elements of the square matrix:
1 2 3
4 5 6
7 8 9
Matrix is not Invertible, as the determinant is : 0.0