- from itertools import combinations,permutations
- #检测
- #生成一个排序函数
- #计算逆序数
- #计算行列式
-
- Matrix = [[1,5,3],[7,4,3],[2,4,232]]
- #检测
- def test(Matrix):
- #检测是否是一个方阵
- for i in Matrix:
- if len(i)==len(Matrix):
- pass
- for ii in i:
- if type(ii)==type(101):
- pass
-
- else:
- print("请检查您输入的矩阵")
- print("不可靠的结果")
- else:
- print("请检查您输入的矩阵")
- print("不可靠的结果")
- break
-
- #输出行列式阶数和n!
- sum = 1
- for i in range(len(Matrix)+1):
- sum *= i
-
- return len(Matrix),sum
-
-
- def InversionNumber(l):
- sum = 0
- l0 = []
- for i in range(len(l)):
- if l[i] < l[i-1] and i-1 >= 0:
- l0.append(l[i-1])
- sum += 1
-
- for k in range(i-1):
- if l[i] < l[k]:
- sum += 1
-
- return (-1)**sum
-
-
- def Permute(n):
- #返回一个列表,包含整个序列,最后一位表明(-1)^ε
- l = []
- for k in range(1,n+1):
- l.append(k)
- L = list(permutations(l, len(l)))
- for i in L:
- L[L.index(i)]=list(i)
-
- for i in L:
- i.append(InversionNumber(i))
-
- return L
-
- def main(Matrix):
- l,S = test(Matrix)
- L = Permute(l)
- sum = 0
- for i in L:
- sum1 = 1
- for ii in range(len(Matrix)):
- sum1 *= Matrix[ii][i[ii]-1]
- sum1 *= i[-1]
- sum += sum1
- return sum
-
- if __name__ == "__main__":
- det = main(Matrix)
这个提示一下,咱们得先修改最上头那一段Matrix
写入您想计算的那个哦!