¿Cómo usar tplquad?

Intento integrar esto:

integra (integra (integra (2 * sin (z) * cos (atan ((2 * cos (y) -0.5 + x) / (2 * sin (y)))), y, 0, pi / 2), x, 0,1), z, 0, pi / 2);

Wolfram encuentra la solución, pero me gustaría controlar la precisión. Intento con tplquad pero hay algún error.

def f(x,y,z): return 2*sin(z)*cos(atan((2*cos(y)-0.5+x)/(2*sin(y)))) tplquad(f,0,1,0,pi/2,0,pi/2) 

Los errores son:

Blockquote File “”, línea 3, en File “/usr/lib/python2.7/dist-packages/scipy/integrate/quadpack.py”, línea 526, en tplquad return dblquad (_infunc2, a, b, gfun, hfun , (func, qfun, rfun, args), epsabs = epsabs, epsrel = epsrel) Archivo “/usr/lib/python2.7/dist-packages/scipy/integrate/quadpack.py”, línea 461, en dblquad return quad (_infunc, a, b, (func, gfun, hfun, args), epsabs = epsabs, epsrel = epsrel) Archivo “/usr/lib/python2.7/dist-packages/scipy/integrate/quadpack.py”, línea 281, en quad retval = _quad (func, a, b, args, full_output, epsabs, epsrel, limit, points) Archivo “/usr/lib/python2.7/dist-packages/scipy/integrate/quadpack.py”, línea 345, en _quad return _quadpack._qagse (func, a, b, args, full_output, epsabs, epsrel, limit) Archivo “/usr/lib/python2.7/dist-packages/scipy/integrate/quadpack.py”, línea 406, en _infunc a = gfun (x)

¿Tienes una idea de dónde podría venir el error?

La documentación de tplquad indica que los límites de integración de las integrales internas deben proporcionarse como funciones de las variables de integración externas (incluso si son constantes como en su caso).

El uso correcto de tplquad en su caso se muestra a continuación. Tenga en cuenta que el orden de los argumentos en la definición de f debe corresponder al ordenamiento de las integraciones. El primer (último) argumento de f es el último (primero) en integrarse. En este caso, el ordenamiento es irrelevante debido a los límites de integración fijos.

 import numpy as np from scipy.integrate import tplquad def f(y,x,z): return 2*np.sin(z)*np.cos(np.arctan((2*np.cos(y)-0.5+x)/(2*np.sin(y)))) tplquad(f,0,np.pi/2, lambda z: 0, lambda z:1, lambda z, x: 0, lambda z, x: np.pi/2) 

(1.9999999999999998, 2.492629060475153e-14)