'Return the normalization of the specified functional form.
This function integrates over the coordinates of the Wavefunction, with
the bounds specified.
Examples
>>> from sympy import symbols, pi
>>> from sympy.functions import sqrt, sin
>>> from sympy.physics.quantum.state import Wavefunction
>>> x, L = symbols(\'x,L\', positive=True)
>>> n = symbols(\'n\', integer=True, positive=True)
>>> g = sqrt(2/L)*sin(n*pi*x/L)
>>> f = Wavefunction(g, (x, 0, L))
>>> f.norm
1
>>> g = sin(n*pi*x/L)
>>> f = Wavefunction(g, (x, 0, L))
>>> f.norm
sqrt(2)*sqrt(L)/2'

@property
@cacheit
def norm(self):

    exp = (self.expr * conjugate(self.expr))
    var = self.variables
    limits = self.limits
    for v in var:
        curr_limits = limits[v]
        exp = integrate(exp, (v, curr_limits[0], curr_limits[1]))
    return sqrt(exp)
