2017-11-24 66 views
-1

線形代数ではPythonとrustyの新機能が追加されました。しかし、Numpyを使わずにPythonの行列から行列式を作成する正しい方法についてのガイダンスを探しています。以下のコードのスニペットをご覧ください。どんな支援も大歓迎です。Pythonを使って行列の行列式を見つける方法

import math 
from math import sqrt 
import numbers 
import operators 

def determinant(self) 

     if not self.is_square(): 
      raise(ValueError, "Cannot calculate determinant of non-square matrix.") 
     if self.h > 2: 
      raise(NotImplementedError, "Calculating determinant not implemented for matrices larger than 2x2.") 


     |x| = A 

    det(A) = [[A, B][C, D]] 

    assert self.rows == A.cols 
    assert self.row > 1 
    term_list = [] 
+1

このコードは、まったく意味がありません。あなたはいくつかのチュートリアルを読むことから始めるべきです... – Julien

+1

'scipy.linalg import det、det([[1,2]、[3、4]])' – percusse

+0

これは一般的に 'gaussian elimination'を見たいと思っています計算で二乗された行列の行列式を見つけるために使用されます。ここには良い読書かもしれない別のリンクがあります。 http://www.geeksforgeeks.org/determinant-of-a-matrix/ – user1767754

答えて

1
def determinant(matrix, mul): 
width = len(matrix) 
if width == 1: 
    return mul * matrix[0][0] 
else: 
    sign = -1 
    sum = 0 
    for i in range(width): 
     m = [] 
     for j in range(1, width): 
      buff = [] 
      for k in range(width): 
       if k != i: 
        buff.append(matrix[j][k]) 
      m.append(buff) 
     sign *= -1 
     sum += mul * determinant(m, sign * matrix[0][i]) 
    return sum 

test_matrix = [[1,-2,3],[0,-3,-4],[0,0,-3]] 

print(determinant(test_matrix, 1)) 
+0

あなたのコメントをいただき、ありがとうございました。 –

関連する問題