在SymPy中,如果我通过以下方法对一般高斯积分:
x = Symbol("x", real=True)
y = Symbol("y", real=True)
s = Symbol("s", real=True)
gaussian = exp(-((x-y)**2)/(2*(s**2)))
nfactor = simplify(integrate(gaussian, (x,-oo,oo)))
我得到nfactor
作为Piecewise
依赖于periodic_argument
和{
必须小于pi/2
才能得到我想要的解决方案。有没有一个很好的方法来解决这个问题-在Mathematica中,可以使用Assuming
和Refine
或{
将
s
设置为正值就足够了。实际上,我认为答案应该是Abs(s)
,因为对于reals
,sqrt(s**2) = Abs(s)
(不过,我对此并不肯定)。在在SymPy的gitmaster分支中,可以使用refine手动假设您想要的确切条件
另一种方法是,如果你知道你的积分满足条件,但是你不能让它们简化(因为不幸的是,在SymPy中对这些条件的简化很差),你可以使用}(这不需要git版本来工作)。在
^{pr2}$integrate(conds='none')
,或者{你也可以把它分片取出
当然,首选的方法是使用
refine
,但不幸的是,使用新假设系统的东西(使用Q
的任何东西)仍在开发中,因此可能还不能工作,或者只能在SymPy开发版本中工作。在答案涉及到
Symbol
的平方根,它绑定到s
。在声明
s
为正以使其正确简化。签署人:相关问题 更多 >
编程相关推荐