sympy 可以将表达式与分母中的 Heaviside 积分吗?

问题描述

我想做类似的事情:

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