5

sympyライブラリを使用してexp(-(x ^ 2 + y ^ 2))をPythonに統合したいと思います。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は積分を取ることができません!

4

2 に答える 2

7

(私は SymPy の主任開発者です)

expand を呼び出すことでこれを機能させることができ、これを行う一般的な方法がないという DSM は正しいです (一般に、積分には閉じた形式がないため)。

SymPy が閉形式を持つ積分を実行できない場合、これをバグと見なすので、http://code.google.com/p/sympy/issuesで気軽に報告してください。 .

于 2012-08-30T01:29:30.110 に答える
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))
于 2012-08-29T02:03:36.970 に答える