11

2D 영역의 SciPy에 다 변수 함수를 통합하려고합니다. Mathematica 코드에 해당하는 것은 무엇입니까?SciPy의 2D 적분

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에서 1 차원 구적법에 대한 지원 만 찾을 수있었습니다. SciPy에서 다차원 적분을 수행하는 방법이 있습니까?

답변

12

는 나는 이런 식으로 뭔가를 작동 것이라고 생각 :

Wolfram|Alpha agrees

편집

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] 
: 난 그냥 당신이 원하는 것을 정확히 할 것 dblquad을 발견 :

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

이것은 작동합니다. 그러나, 나는 수십만 개의 작은 셀에이 기능을 통합 할 것이다. python 함수를 호출하는 것과 관련하여 너무 느리지 않습니까? – dzhelil

+0

integrate.quad가 함수를 내부적으로 벡터화할지 여부는 알 수 없습니다. 나는 integrate.quadrature가하는 것을 알고 있지만, 이중 적분으로 시도했을 때 오류가 발생했습니다. 공차를 늘림으로써 언제나 통합을 더 빠르게 할 수 있습니다. 또는 더 나은 아직, 정확한 해결책을 찾으십시오! – Paul

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)) 
+0

'xy'에는 x와 y 사이에 공백이 있어야합니다. – MOON

+0

감사합니다. 문제가 해결되었습니다. –