computing determinant of a matrix (nxn) recursively

前端 未结 5 1158
心在旅途
心在旅途 2021-01-19 05:26

I\'m about to write some code that computes the determinant of a square matrix (nxn), using the Laplace algorithm (Meaning recursive algorithm) as written Wikipedia\'s Lapla

5条回答
  •  没有蜡笔的小新
    2021-01-19 05:55

    import numpy as np
    
    def smaller_matrix(original_matrix,row, column):
        for ii in range(len(original_matrix)):
            new_matrix=np.delete(original_matrix,ii,0)
            new_matrix=np.delete(new_matrix,column,1)
            return new_matrix
    
    
    def determinant(matrix):
        """Returns a determinant of a matrix by recursive method."""
        (r,c) = matrix.shape 
        if r != c:
            print("Error!Not a square matrix!")
            return None
        elif r==2:
            simple_determinant = matrix[0][0]*matrix[1][1]-matrix[0][1]*matrix[1][0]
            return simple_determinant
        else: 
            answer=0
            for j in range(r):
                cofactor = (-1)**(0+j) * matrix[0][j] * determinant(smaller_matrix(matrix, 0, j))
                answer+= cofactor
            return answer
    
    
    
    #test the function
    #Only works for numpy.array input
    np.random.seed(1)
    matrix=np.random.rand(5,5)
    
    determinant(matrix)
    

提交回复
热议问题