import numpy as np
from scipy import integrate

# integral xyz dxdydz, en x de 1 a 2, y de 2 a 3 y z de 0 a 1
f = lambda z, y, x: x*y*z
print(integrate.tplquad(f, 1, 2, 2, 3, 0, 1))


# integral xyz dxdydz, en x de 0 a 1, y de 0 a 1-2x y z de 0 a 1-x-2y
f = lambda z, y, x: x*y*z
print(integrate.tplquad(f, 0, 1, 0, lambda x: 1-2*x, 0, lambda x, y: 1-x-2*y))


# integral axyz dxdydz con a = 1 y 3, en x de 0 a 1, y de 0 a 1 y z de 0 a 1
f = lambda z, y, x, a: a*x*y*z
print(integrate.tplquad(f, 0, 1, 0, 1, 0, 1, args=(1,)))
print(integrate.tplquad(f, 0, 1, 0, 1, 0, 1, args=(3,)))


# integra e^-(x^2+y^2+z^2) dxdydz, en -inf a inf
f = lambda x, y, z: np.exp(-(x ** 2 + y ** 2 + z ** 2))
print(integrate.tplquad(f, -np.inf, np.inf, -np.inf, np.inf, -np.inf, np.inf))
