12

2D 領域でSciPyに多変数関数を統合しようとしています。次のMathematicaコードに相当するものは何ですか?

In[1]:= F[x_, y_] := Cos[x] + Cos[y] 

In[2]:= Integrate[F[x, y], {x, -\[Pi], \[Pi]}, {y, -\[Pi], \[Pi]}]

Out[2]= 0

SciPy のドキュメントを見ると、1 次元の求積法のサポートしか見つかりませんでした。SciPyで多次元積分を行う方法はありますか?

4

2 に答える 2

13

私はそれが次のように機能すると思います:

def func(x,y):
    return cos(x) + cos(y)

def func2(y, a, b):
    return integrate.quad(func, a, b, args=(y,))[0]

print integrate.quad(func2, -pi/2, pi/2, args=(-pi/2, pi/2))[0]

Wolfram|Alphaは同意します

編集:私はちょうどあなたが望むことを正確に行うように見えるdblquadを発見しました:

print integrate.dblquad(func, -pi/2, pi/2, lambda x:-pi/2, lambda x:pi/2)[0]
于 2010-03-03T02:43:16.560 に答える
9

シンボリック統合を行いたい場合は、sympy ( code.google.com/p/sympy )をご覧ください。

import sympy as s
x, y = s.symbols('x, y')
expr = s.cos(x) + s.sin(y)
expr.integrate((x, -s.pi, s.pi), (y, -s.pi, s.pi))
于 2010-03-03T20:27:55.813 に答える