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
写入您想计算的那个哦!