2016-08-08 7 views
0

私が定義した行列クラスから行列をとり、ガウス消去を使って三角行列を返すメソッドを実装しようとしています。 次の行列を考慮してください。私は主対角線以下のすべての場所で0を有するマトリックスで終わるまでPythonで分数を表現する方法

​​

は、基本的に私は、各行に別の前の行の複数を追加する必要があります。このプロセスの後、私は次の行列を持っている必要があります。

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

問題は1/3のような画分は、しばしば出てくると私はフロートを使用して精度を失いたくないということです。分数を表現する方法はありますか?私はそれらの特別な行動を定義する必要がありますか? 自分でそれをするために、私は外部モジュールを使いたくありません。 fractions.Fraction

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

画分は、ほとんどの状況では、通常の数字のように振る舞う:

+1

'import fractions;印刷(分数。分数(-1/5)) '? – Abdou

答えて

3

あなたが望むものを正確に動作するクラスがあります

>>> 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に変換されることは期待できないため、これは理にかなっています。

+0

私は通常の数字と同じように操作を実行できますか? – VlassisFo

+0

@Alan。あなたはそれを自分で試してみるべきですが、私は先に進み、とにかく完全性のための答えを更新しました。 –

関連する問題