2015-10-26 2 views

ответ

3

Если число n положительное, вы можете использовать Mod(n, 1) и floor(n).

Для отрицательных чисел, поскольку мода и пол в SymPy (который использует соглашения Python) обрабатывают отрицательные аргументы, вам необходимо использовать 1 - Mod(n, 1) и floor(n) + 1.

Вы можете объединить их в отдельные выражения с Piecewise.

Piecewise((Mod(n, 1), n >= 0), (1 - Mod(n, 1), n < 0)) 
Piecewise((floor(n), n >= 0), (1 + floor(n), n < 0)) 

EDIT: Вы также можете использовать frac(n) вместо Mod(n, 1). Я не могу комментировать, что лучше.

Смежные вопросы