2016-08-08 2 views
0

나는 정의한 행렬 클래스에서 행렬을 취하고 가우스 제거를 사용하여 삼각 행렬을 반환하는 메서드를 구현하려고합니다. 다음 행렬을 고려해 내가 주 대각 아래의 모든 위치에서 0을 가지는 행렬로 끝날 때까지 파이썬에서 분수를 표현하는 방법

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

기본적 난 각 행 다른 이전 행의 배수에 추가 할 필요가있다. 이 과정에 따라, 나는 다음의 행렬이 있어야합니다

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. 직접 시도해야하지만 어쨌든 완성을 위해 답변을 업데이트했습니다. –

관련 문제