我想使用sympy库在python中集成exp( - (x ^ 2 + y ^ 2))。 我可以找到exp( - (x ^ 2))
的积分>>> B1 = sympy.exp(-alpha1 * (r1_x**2))
>>> p = integrate(B1,r1_x)
>>> p
pi**(1/2)*erf(alpha1**(1/2)*r1_x)/(2*alpha1**(1/2))
但是当我想尝试整合exp( - (x ^ 2 + y ^ 2))
时>>> B1 = sympy.exp(-alpha1 * (r1_x**2 + r1_y**2))
>>> p = integrate(B1,r1_x)
>>> p
Integral(exp(-alpha1*(r1_x**2 + r1_y**2)), r1_x)
没有输出,python无法获取积分!
答案 0 :(得分:6)
(我是SymPy的首席开发人员)
DSM是正确的,您可以通过调用expand来使其工作,并且没有通用的方法来执行此操作(因为通常,积分没有封闭的表单)。
我只是想指出,如果SymPy不能做一个封闭形式的积分,我们认为这是一个错误,你可以随时在http://code.google.com/p/sympy/issues报告。
答案 1 :(得分:3)
sympy
并不总能识别每种形式,所以有时你必须给它一点帮助:
>>> import sympy
>>> alpha1, r1_x, r1_y = sympy.var("alpha1 r1_x r1_y")
>>> B1 = sympy.exp(-alpha1 * (r1_x**2 + r1_y**2))
>>> B1.integrate(r1_x)
Integral(exp(-alpha1*(r1_x**2 + r1_y**2)), r1_x)
>>> B1.expand(alpha1)
exp(-alpha1*r1_x**2)*exp(-alpha1*r1_y**2)
>>> B1.expand(alpha1).integrate(r1_x)
sqrt(pi)*exp(-alpha1*r1_y**2)*erf(sqrt(alpha1)*r1_x)/(2*sqrt(alpha1))