How to Find cofactor of a matrix using Numpy
In this article, we are going to see how to find the cofactor of a given matrix using NumPy. There is no direct way to find the cofactor of a given matrix using Numpy.
Deriving the formula to find cofactor using the inverse of matrix in Numpy
Formula to find the inverse of a matrix:
A-1 = ( 1 / det(A) )* Adj(A) ----(1)
Adj(A) is the Adjoint matrix of A which can be found by taking the Transpose of the cofactor matrix of A:
Adj(A) = (cofactor(A))T ----(2)
Substituting equation 2 in equation 1 we get the following:
A-1 = ( 1/det(A) ) * (cofactor(A))T
Sending det(A) to another side of the equation:
det(A) * A-1 = (cofactor(A))T
Removing transpose on the Right-hand side(RHS) of the equation will result in applying transpose on the Left-hand side(LHS) of the equation. We can apply transpose after multiplying A-1 by det(A) but for simplicity, we will apply transpose to A-1 then multiply by det(A), however, both results are the same.
det(A) * (A-1)T = cofactor(A)
Finally, we derived the formula to find the cofactor of a matrix:
cofactor(A) = (A-1)T * det(A)
Implementation in Numpy:
Steps Needed:
- Finding the determinant of a given matrix.
- Finding the inverse of a matrix and transposing it.
Example 1: Finding cofactor in the 2D matrix
Python3
import numpy as np def matrix_cofactor(matrix): try : determinant = np.linalg.det(matrix) if (determinant! = 0 ): cofactor = None cofactor = np.linalg.inv(matrix).T * determinant # return cofactor matrix of the given matrix return cofactor else : raise Exception( "singular matrix" ) except Exception as e: print ( "could not find cofactor matrix due to" ,e) print (matrix_cofactor([[ 1 , 2 ], [ 3 , 4 ]])) |
Output:
[[ 4. -3.] [-2. 1.]]
Example 2: Finding cofactor 3D matrix
Python3
import numpy as np def matrix_cofactor(matrix): try : determinant = np.linalg.det(matrix) if (determinant! = 0 ): cofactor = None cofactor = np.linalg.inv(matrix).T * determinant # return cofactor matrix of the given matrix return cofactor else : raise Exception( "singular matrix" ) except Exception as e: print ( "could not find cofactor matrix due to" ,e) print (matrix_cofactor([[ 1 , 9 , 3 ], [ 2 , 5 , 4 ], [ 3 , 7 , 8 ]])) |
Output:
[[ 12. -4. -1.] [-51. -1. 20.] [ 21. 2. -13.]]
Please Login to comment...