def hermite_prob(n): ''' Returns the *n-th* probabilistic Hermite polynomial, that is a polynomial of degree *n*. :raises: :exc:`ValueError` if *n* is negative :rtype: :class:`pypol.Polynomial` **Examples** :: >>> hermite_prob(0) + 1 >>> hermite_prob(1) + x >>> hermite_prob(2) + x^2 - 1 >>> hermite_prob(4) + x^4 - 6x^2 + 3 >>> hermite_prob(45) + x^45 - 990x^43 + .. cut .. + 390756386568644372393927184375x^5 - 186074469794592558282822468750x^3 + 25373791335626257947657609375x .. versionadded:: 0.3 ''' if n < 0: raise ValueError('Hermite polynomials (probabilistic) only defined for n >= 0') if n == 0: return ONE if n == 1: return x p = [x] for _ in xrange(n - 1): p.append(p[-1] * x - polyder(p[-1])) return p[-1]
def hermite_phys(n): ''' Returns the *n-th* Hermite polynomial (physicist). :raises: :exc:`ValueError` if *n* is negative :rtype: :class:`pypol.Polynomial` **Examples** :: >>> hermite_phys(0) + 1 >>> hermite_phys(1) + 2x >>> hermite_phys(2) + 4x^2 - 2 >>> hermite_phys(3) + 8x^3 - 12x >>> hermite_phys(4) + 16x^4 - 48x^2 + 12 >>> hermite_phys(9) + 512x^9 - 9216x^7 + 48384x^5 - 80640x^3 + 30240x >>> hermite_phys(11) + 2048x^11 - 56320x^9 + 506880x^7 - 1774080x^5 + 2217600x^3 - 665280x .. versionadded:: 0.3 ''' if n < 0: raise ValueError('Hermite polynomials (physicist) only defined for n >= 0') if n == 0: return ONE p = [ONE] for _ in xrange(n): p.append((p[-1] * x * 2) - polyder(p[-1])) return p[-1]
def testPolyder(self): p = pypol.poly1d([1]*4) assert pypol.poly1d([3, 2, 1]) == funcs.polyder(p) assert pypol.poly1d([6, 2]) == funcs.polyder(p, 2) assert pypol.poly1d([6]) == funcs.polyder(p, 3)