2014-02-15 5 views
1

저는 Sympy를 처음 사용하고 대수 표현을 계산하고 단순화하는 데 매우 유용하다는 것을 깨달았습니다.Sympy는 실수가있는 분수에 대해 0을 반환합니다.

그러나 실제 숫자의 분수를 쓸 때 0을 반환합니다 ('x'와 같은 기호의 분수에는 문제가 없습니다). 내가 도대체 ​​뭘 잘못하고있는 겁니까?

from sympy import * 

1./2 
Out[2]: 0.5 

1/2 
Out[3]: 0 

답변

7

왜냐하면 파이썬 (2.7)은 플로트를 반환하기 위해 분모 나 분자에 float가 필요하기 때문입니다. 어떤 부문 float를 반환 파이썬 3.x의에서

할 수 있습니다 또한 사용하여 파이썬 2.7에서 '수정'

from __future__ import division 

사실 파이썬에서 정수 나누기 규칙을 따라 정수를 반환 부동 소수점 숫자가 아닙니다

0

1/2은 SymPy를 전혀 사용하지 않습니다. 이것은 단지 Python에 의해 평가됩니다. http://docs.sympy.org/latest/tutorial/gotchas.html#two-final-notes-and을 읽어보십시오 (실제로는 whole SymPy tutorial을 통해 읽는 것이 좋습니다).

기본적으로 SymPy를 사용하는 경우 Rational(1, 2)으로 얻을 수있는 유리한 숫자가 필요할 수 있습니다. 이것을 입력하는 쉬운 방법은 S(1)/2입니다. S 함수는 1을 SymPy의 Integer(1)으로 변환합니다.이 값은로 나눌 때 Rational이됩니다.

+0

알아요. x - 1/2 + a = 0과 같은 방정식을 풀고 싶다면 문제가 발생했습니다. x = 1/2 대신에 x = -a가됩니다. – user3218615