Open In App

How to Find cofactor of a matrix using Numpy

Improve
Improve
Like Article
Like
Save
Share
Report

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:

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.]]


Last Updated : 23 Nov, 2021
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads