2D-интегралы в SciPy
Я пытаюсь интегрировать многовариантную функцию в SciPy в 2D-области.
Что было бы эквивалентно следующему 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
Глядя на Документацию SciPy Я мог найти поддержку только одномерной квадратуры. Есть ли способ сделать многомерные интегралы в SciPy?
Ответы
Ответ 1
Я думаю, что это сработает примерно так:
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]
Вольфрам | Альфа соглашается
edit: Я только что обнаружил dblquad, который, похоже, делает именно то, что вы хотите:
print integrate.dblquad(func, -pi/2, pi/2, lambda x:-pi/2, lambda x:pi/2)[0]
Ответ 2
Если вы хотите сделать символическую интеграцию, посмотрите на 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))