Sympy возвращает ноль для дробей с действительными числами

Я новичок в Sympy и понял, что это очень удобно для вычисления и упрощения алгебраических выражений.

Однако, когда я пишу дроби действительных чисел, он возвращает ноль (нет проблем с дробями символов, таких как «x»). Что я делаю неправильно?

from sympy import *

1./2
Out[2]: 0.5

1/2
Out[3]: 0

person user3218615    schedule 15.02.2014    source источник


Ответы (2)


это потому, что python (2.7) требуется число с плавающей запятой в знаменателе или числителе, чтобы вернуть число с плавающей запятой.

в python 3.x любое деление возвращает число с плавающей запятой

Вы также можете «исправить» в python 2.7, используя:

from __future__ import division

Фактически, python следует правилам целочисленного деления и возвращает целое число, а не число с плавающей запятой.

person Freelancer    schedule 15.02.2014

1/2 вообще не использует SymPy. Это просто оценивается Python. Прочтите http://docs.sympy.org/latest/tutorial/gotchas.html#two-final-notes-and (я действительно рекомендую прочитать весь учебник по SymPy).

В принципе, если вы используете SymPy, вам, вероятно, понадобится рациональное число, которое вы можете получить с помощью Rational(1, 2). Более простой способ набрать это S(1)/2. Функция S преобразует 1 в Integer(1) SymPy, который затем становится Rational при делении на.

person asmeurer    schedule 20.02.2014
comment
Я знаю. Проблема возникала, если я хотел решить такие уравнения, как: x - 1/2 + a = 0, и вы получаете, что решение x = -a вместо x = 1/2 - a - person user3218615; 26.02.2014