Gaussの掃き出し法のような感じで行列式は計算できるのだが、行列が大きくなると非常に大変。かつ、疎な行列の場合は、余因子展開したほうが速い。 from poly import Poly def determinant(Mat): n = len(Mat) if n == 1: return Mat[0][0]; f = Poly([]) for i in range(0, n): if Mat[0][i] == 0: continue minor_det = determinant(make_minor_matrix(Mat, i)) if i % 2 == 0: f = f + Mat[0][i] * minor_det else: f = f - Mat[0][i] * minor_det return f def make_minor_matrix(Mat, c0): L = [