问题描述
我想做类似的事情:
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