import numpy as np
from scipy import integrate

# integra xy^2 dxdy, en x de 0 a 2 y y en 0 a 1
f = lambda y, x: x*y**2
print(integrate.dblquad(f, 0, 2, 0, 1))


# integra 1 dxdy, en x en 0 a pi/4 y y en sin(x) a y cos(x)
f = lambda y, x: 1
print(integrate.dblquad(f, 0, np.pi/4, np.sin, np.cos))


# integra axy dxdy para a=1 y 3, en x de 0 a 1 y y en x a 2-x
f = lambda y, x, a: a*x*y
print(integrate.dblquad(f, 0, 1, lambda x: x, lambda x: 2-x, args=(1,)))
print(integrate.dblquad(f, 0, 1, lambda x: x, lambda x: 2-x, args=(3,)))


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