我已将符号设置为正= True并且我已检查过Wolfram Alpha上的积分。积分应该是可行的,输出应该包含erfi函数。
@font-face {
font-family: 'FontAwesome';
src: url('../font/fontawesome-webfont.eot');
}
答案 0 :(得分:2)
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之前将其评估为某个浮点数。
由于某种原因,同情不计算以下积分:
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))
最后一行显示两种方法都会产生完全相同的结果。