我试图对这个函数进行lambdify
def f(x):
if ceil(x)%2 == 0:
return -1
else :
return +1
a = sympy.lambdify(x,f(x))
当我尝试这样做时出现错误。我也尝试了分段,但它没有给我想要的结果
y = lambdify(x,(Piecewise((1, ceil(x)%2 == 0), (-1,True))))
请帮助提前谢谢
您需要将符号表达式传递给,lambdify
因此 Python 函数并不好。此外,您还需要使用符号 sympy 函数,并且 sympy 的 ceil 函数实际上被称为ceiling
. 最后==
比较两个表达式是否相同,这与构造符号布尔值不同。为此,您需要Eq
:
In [19]: p = Piecewise((1, Eq(ceiling(x)%2, 0)), (-1,True))
In [20]: p
Out[20]:
⎧1 for ⌈x⌉ mod 2 = 0
⎨
⎩-1 otherwise
In [21]: y = lambdify(x, p)
In [22]: y([1, 2, 3])
Out[22]: array([-1., 1., -1.])
参考:
https://docs.sympy.org/latest/modules/functions/elementary.html#ceiling https://docs.sympy.org/latest/tutorial/gotchas.html#equals-signs