如何在python

时间:2016-08-08 13:45:24

标签: python matrix fractions

我正在尝试实现一种方法,该方法从矩阵类中定义矩阵并使用高斯消元法返回三角矩阵。 考虑以下矩阵:

m1 = [[2, -3, -4],
      [-1, 4, 5],
      [1, -3, -4]]

基本上我需要向每一行添加另一个前一行的倍数,直到我最终得到一个在主对角线下面的所有位置都有0的矩阵。按照这个过程,我应该有以下矩阵:

m2 = [[2, -3, -4],
      [0, 5/2, 3],
      [0, 0, -1/5]]

问题是像1/3这样的分数经常出现,我不想通过使用浮点数来降低精度。那么有没有办法表示分数?我是否必须为那些人定义特殊行为? 为了自己做这件事,我不想使用任何外部模块。

1 个答案:

答案 0 :(得分:3)

有一个课程可以完全符合您的要求:fractions.Fraction

>>> from fractions import Fraction
>>> print(Fraction(5, 6))
5/6

在大多数情况下,分数的行为类似于常规数字:

>>> print(Fraction(5, 6) + 6)
41/6
>>> print(Fraction(5, 6) + Fraction(1, 2))
4/3
>>> print(Fraction(5, 6) + 17.445)
18.278333333333332

最后一个示例显示,如果另一个操作数是float,则该分数将转换为float。这是有道理的,因为您不希望将未确定精度的浮点数转换为Fraction

相关问题