SciPy中的2D积分

时间:2010-03-03 02:17:10

标签: python integration wolfram-mathematica scipy multidimensional-array

我正在尝试将SciPy中的多变量函数集成到2D区域。 什么相当于以下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 documentation我只能找到对一维积分的支持。有没有办法在SciPy中进行多维积分?

2 个答案:

答案 0 :(得分:12)

我认为它会起作用:

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

编辑:我刚刚发现dblquad似乎完全符合您的要求:

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

答案 1 :(得分: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))