х + х ^ 1,0 не упростит использование sympy - PullRequest
0 голосов
/ 10 апреля 2020

Например:

eqn = N('1.00*x +1.00*x**1.0')

Это возвращает:

1.0*x + 1.0*x**1.0

Я думаю, что мне нужно сделать, это преобразовать числа, эквивалентные целым числам, в целые числа, потому что это:

eqn = N('1.00*x+1.00*x**1')

Возвращает:

2.0*x

Это то, что я хочу.

Я пробовал это, но, похоже, что-то делает:

eqn = eqn.replace(lambda x: x.is_integer, lambda x: int(x))

I думаю, что это не работает, потому что sympy is_integer работает только для целых чисел, а не с плавающей точкой, которые эквивалентны целым числам.

1 Ответ

0 голосов
/ 10 апреля 2020

Наблюдая за новым поведением, не выдерживая, вы можете внести изменения с помощью

>>> eqn.xreplace({k: int(k) for k in eqn.atoms(Float) if k == int(k)})
2*x

. replace не будет действовать на вещи, для которых old == new.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...