我想做这样的事情:
integrate(1/(1 + Heaviside(x)),x)
它只是返回
Integral(1/(Heaviside(x) + 1), x)
未评估。
问题是
Heaviside(0)
,没有定义。例如,在 Mathematica 中,有 UnitStep
函数,它类似于 Heaviside
,只不过 UnitStep(0)
等于 1。我可以在 sympy 中模仿这个吗?
我尝试过 Heaviside(x,1) 但不起作用。
我不认为问题是
Heaviside(0)
。只是 sympy 没有在集成例程中处理这种特殊情况的代码。您可以通过将 Heaviside 重写为分段来帮助解决这个问题:
In [36]: Integral(1/(Heaviside(x) + 1), x).rewrite(Piecewise).doit()
Out[36]:
⎧x for x < 0
⎪
⎨x
⎪─ otherwise
⎩2