2022年 11月 5日

Python计算行列式

  1. from itertools import combinations,permutations
  2. #检测
  3. #生成一个排序函数
  4. #计算逆序数
  5. #计算行列式
  6. Matrix = [[1,5,3],[7,4,3],[2,4,232]]
  7. #检测
  8. def test(Matrix):
  9. #检测是否是一个方阵
  10. for i in Matrix:
  11. if len(i)==len(Matrix):
  12. pass
  13. for ii in i:
  14. if type(ii)==type(101):
  15. pass
  16. else:
  17. print("请检查您输入的矩阵")
  18. print("不可靠的结果")
  19. else:
  20. print("请检查您输入的矩阵")
  21. print("不可靠的结果")
  22. break
  23. #输出行列式阶数和n!
  24. sum = 1
  25. for i in range(len(Matrix)+1):
  26. sum *= i
  27. return len(Matrix),sum
  28. def InversionNumber(l):
  29. sum = 0
  30. l0 = []
  31. for i in range(len(l)):
  32. if l[i] < l[i-1] and i-1 >= 0:
  33. l0.append(l[i-1])
  34. sum += 1
  35. for k in range(i-1):
  36. if l[i] < l[k]:
  37. sum += 1
  38. return (-1)**sum
  39. def Permute(n):
  40. #返回一个列表,包含整个序列,最后一位表明(-1)^ε
  41. l = []
  42. for k in range(1,n+1):
  43. l.append(k)
  44. L = list(permutations(l, len(l)))
  45. for i in L:
  46. L[L.index(i)]=list(i)
  47. for i in L:
  48. i.append(InversionNumber(i))
  49. return L
  50. def main(Matrix):
  51. l,S = test(Matrix)
  52. L = Permute(l)
  53. sum = 0
  54. for i in L:
  55. sum1 = 1
  56. for ii in range(len(Matrix)):
  57. sum1 *= Matrix[ii][i[ii]-1]
  58. sum1 *= i[-1]
  59. sum += sum1
  60. return sum
  61. if __name__ == "__main__":
  62. det = main(Matrix)

这个提示一下,咱们得先修改最上头那一段Matrix

写入您想计算的那个哦!