2D integrals in SciPy

multidimensional-array, numerical-integration, python, scipy, wolfram-mathematica

Solution

I think it would work something like this:

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 agrees

edit: I just discovered dblquad which seems to do exactly what you want:

print integrate.dblquad(func, -pi/2, pi/2, lambda x:-pi/2, lambda x:pi/2)[0]

Problem

I am trying to integrate a multivariable function in SciPy over a 2D area. What would be the equivalent of the following Mathematica code? ``` In[1]:= F[x_, y_] := Cos[x] + Cos[y] In[2]:= Integrate[F[x, y], {x, -\[Pi], \[Pi]}, {y, -\[Pi], \[Pi]}] Out[2]= 0 ``` Looking at the SciPy documentation I could only find support for one-dimensional quadrature. Is there a way to do multidimensional integrals in SciPy?

Original source