How to check whether matrix is a singular or not in Python
In this article, we will how to check whether a given matrix is a singular matrix or not in Python. A matrix is said to be a singular matrix if its determinant is equal to zero.
Example
Input: [[2, 32, 12],
[0, 0, 0],
[23, 6, 9]]
Output: Singular Matrix
Explanation: The determinant of the given matrix is zero.
Input: [[3, 4, 18],
[9, 18, 1],
[2, 3, 5]]
Output: Non-Singular Matrix
Explanation: The determinant of the given matrix is not equal to zero.Mathematical formula for calculating the determinnant
For example given matrix A is [[a, b, c], [d, e, f], [g, h, i]] the determinant of the matrix is
|A| = a(e*i − f*h) − b(d*i − f*g) + c(d*h − e*g)
Method 1:
Approach:
1. Check the base when the given matrix is 2×2.
2. If the matrix is the determinant value is matrix[0][0]*matrix[1][1] – matrix[1][0]*matrix[0][1].
3. Declare a variable det to store the determinant.
4. Apply the formulae and store the result in det.
5. Finally, return the determinant.
def get_cofactor(matrix, i, j):
return [row[: j] + row[j+1:] for row in (matrix[: i] + matrix[i+1:])]
def is_singular(matrix):
n = len(matrix)
if (n == 2):
val = matrix[0][0]*matrix[1][1] - matrix[1][0]*matrix[0][1]
return val
det = 0
for i in range(n):
s = (-1)**i
sub_det = is_singular(get_cofactor(matrix, 0, i))
det += (s*matrix[0][i]*sub_det)
return det
matrix = [[78, 45, 4], [0, 0, 0], [7, 4, -54]]
n = len(matrix)
print("The given matrix")
for i in range(n):
for j in range(n):
print(matrix[i][j], end=' ')
print()
if(is_singular(matrix)):
print("The given matrix is non-Singular")
else:
print("The given matrix is singular")Output
The given matrix 78 45 4 0 0 0 7 4 -54 The given matrix is singular
Method 2: Using NumPy
NumPy module in Python has an inbuilt linalg.det() function to calculate the determinant of a matrix.
1. Use linalg.det() function to calculate the determinant.
2. Check whether the determinant is equal to zero. If yes print “Singular Matrix”.
3. Else, print “Non-Singular matrix”.
import numpy as np
arr = np.array([[1,- 2, 2],
[9, 9, 8],
[7, 8, 0]])
if (np.linalg.det(arr)):
print("Non Singular matrix")
else:
print("Singular Matrix")Output
Non Singular matrix
Also read:
Leave a Reply