sympy是很能够 “解决” 这个积分用有限的限制:
import sympy as sym
x, y, z = sym.symbols('x y z', real=True)
a3, a4, SPR1 = sym.symbols('a3, a4, SPR1', real=True, positive=True)
f2 = sym.Rational(63493635934241,1000000000000000)*sym.exp(3893/8)*sym.exp(-15*x)*sym.exp(x**2/2)*sym.exp(-17*y/4)*sym.exp(y**2/8)*sym.exp(-52*z)*sym.exp(2*z**2)
gx = sym.exp(-15*x)*sym.exp(x**2/2)
gy = sym.exp(-17*y/4)*sym.exp(y**2/8)
gz = sym.exp(-52*z)*sym.exp(2*z**2)
Gx = sym.integrate(sym.powsimp(gx), (x,SPR1, 100))
Gy = sym.integrate(sym.powsimp(gy), (y,-100, a4))
Gz = sym.integrate(sym.powsimp(gz), (z,-100, a3))
sym.pprint(Gx)
sym.pprint(Gy)
sym.pprint(Gz)
F2 = sym.Rational(63493635934241,1000000000000000)*sym.exp(sym.Rational(3893,8))*Gx*Gy*Gz
sym.pprint(F2)
sym.pprint(sym.simplify(F2))
注意使用sym.Rational(3893,8)
代替3893/8
。这确保sympy将这个数字视为理性的。否则python会在将它传递给sympy之前将其评估为一些浮点数。
出于某种原因sympy不计算下面的积分:
sym.pprint(sym.integrate(sym.exp(-x)*sym.exp(x**2),(x,0,100)))
如果你告诉sympy整合之前要简化表达然而它的作用:
sym.pprint(sym.integrate(sym.powsimp(sym.exp(-x)*sym.exp(x**2)),(x,0,100)))
编辑:类似于japseow的评论我发现了一种更简单的方式来进行整合。 Simpliy添加以下到上面的代码:
F2x = sym.integrate(f2.powsimp(), (x,SPR1, 100))
F2xy = sym.integrate(F2x.powsimp(), (y,-100, a4))
F2xyz = sym.integrate(F2xy.powsimp(), (z,-100, a3))
sym.pprint(F2xyz)
sym.pprint(sym.simplify(F2-F2xyz))
或作为一个衬里(以下容易阅读,但仍然精确的)
F2complete = sym.integrate(sym.integrate(sym.integrate(f2.powsimp(), (x,SPR1, 100)).powsimp(), (y,-100,a4)).powsimp(), (z,-100,a3))
sym.pprint(F2complete)
sym.pprint(sym.simplify(F2-F2complete))
最后一行显示,这两种方法导致完全相同的结果。
您能否提供您从wolfram alpha获得的输出?再次验证你的等式。在我看来,'sp.integrate(sp.exp(-z)* sp.exp(z ** 2),(z,-sp.oo,b))'不能收敛,所以你的整个表达式不应该收敛。 – Hannebambel
我把sp.oo切换到100,它仍然没有评估: '63493635934241 * exp(3893/8)*积分(exp(-15 * x)* exp(x ** 2/2),(x, (exp(-17 * y/4)* exp(y ** 2/8),(y,-100,B))*积分(exp(-52 * z)* exp 2 * z ** 2),(z,-100,A))/ 1000000000000000' Wolfram [link](https://www.wolframalpha.com/input/?i=63493635934241*exp(3893%2F8) *积分(EXP(-15 * X)* EXP(X ** 2%2F2),+(X,+ C,+ 100))*积分(EXP(-17 * Y%2F4)* EXP(Y ** 2%2F8),+(Y,+ - 100,+ B))*积分(EXP(-52 * Z)* EXP(2 * Z ** 2),+(Z,+ - 100,+ A)) %2F1000000000000000) – japseow
感谢您的链接。我仍然希望看到你的原始问题,即积分中的无穷大。只是出于好奇心,阿尔法对这个说法。 – Hannebambel