Цель состоит в том, чтобы реализовать кусочное выражение, которое дает 0, когда n четное, и 1, когда n нечетное. Один из способов сделать это — использовать функцию пола, как показано ниже:
from sympy import *
from sympy.abc import n
f = Lambda((n,), Piecewise((0, Eq(n, floor(n / S(2)))),
(1, Eq(n, floor(n / S(2))+1))))
print(f(0))
print(f(1))
print(f(2))
print(f(3))
Однако это возвращает неправильный вывод:
0
1
1
Piecewise()
Правильный вывод должен быть:
0
1
0
1
Другой способ добиться того же - использовать:
from sympy import *
from sympy.abc import n
f = Lambda((n,), Piecewise((0, Eq((-1)**n, 1)),
(1, Eq((-1)**n, -1))))
print(f(0))
print(f(1))
print(f(2))
print(f(3))
и это возвращает правильный вывод. Есть ли способ добиться этого, используя функцию пола в исходном коде?