In [12]:
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
from scipy import integrate
The 2d polar integral of a scalar function $f(r, \theta)$ is defined as:
$$ I(r_{max}) = \int_0^{r_{max}} \int_0^{2\pi} f(r, \theta) r d\theta $$Write a function integrate_polar(f, rmax)
that performs this integral numerically using scipy.integrate.dblquad
.
In [15]:
def integrate_polar(f, rmax):
thmin = 0
thmax = 2*np.pi
rmin = lambda t: 0
rm = lambda t:rmax
function= lambda r,t: r*f(r,t)
integral,e= integrate.dblquad(function,thmin,thmax,rmin,rm)
return (integral)
In [16]:
assert np.allclose(integrate_polar(lambda r,t: 1, 1.0), np.pi)
assert np.allclose(integrate_polar(lambda r, t: np.exp(-r)*(np.cos(t)**2), np.inf), np.pi)