2
的目的是實現一個分段表達式,給出0,當n爲偶數時,以及1當n爲奇數。一個辦法做到這一點是使用地板之類的函數如下:Sympy分段表達式偶數和奇數
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))
並返回正確的輸出。有沒有一種方法可以在原始代碼中使用floor函數來實現這一點?