.. Version 1: Konrad Griessinger (konradg(at)gmx.net), 12/2013 .. index:: single: Hermite polynomials single: Hermite functions .. :math:`He_n(x)` .. @math{H_n(x)} .. how can you get greek characters in the index in Texinfo?!? .. @cindex @math{psi_n(x)} The Hermite polynomials exist in two variants: the probabilists' version :math:`He_n(x)` and the physicists'version :math:`H_n(x)`. The are defined by the derivatives .. only:: not texinfo .. math:: He_n(x) & = (-1)^n e^{x^2/2} \left({d \over dx}\right)^n e^{-x^2/2} \\ H_n(x) & = (-1)^n e^{x^2} \left({d \over dx}\right)^n e^{-x^2} .. only:: texinfo :: He_n(x) = (-1)^n e^{x^2/2} (d / dx)^n e^{-x^2/2} H_n(x) = (-1)^n e^{x^2} (d / dx)^n e^{-x^2} They are connected via .. only:: not texinfo .. math:: He_n(x) & = 2^{-n/2} H_n \left( {x \over \sqrt{2}} \right) \\ H_n(x) & = 2^{n/2} He_n \left( \sqrt{2} x \right) .. only:: texinfo :: He_n(x) = 2^{-n/2} H_n(x / \sqrt{2}) H_n(x) = 2^{n/2} He_n(\sqrt{2} x) and satisfy the ordinary differential equations .. only:: not texinfo .. math:: He_n^{\prime\prime}(x) - x He_n^{\prime}(x) + n He_n(x) & = 0 \\ H_n^{\prime\prime}(x) - 2x H_n^{\prime}(x) + 2n H_n(x) & = 0 .. only:: texinfo :: He_n^{''}(x) - x He_n^{'}(x) + n He_n(x) = 0 H_n^{''}(x) - 2x H_n^{'}(x) + 2n H_n(x) = 0 The closely related Hermite functions are defined by .. only:: not texinfo .. math:: \psi_n(x) = \left( n! \sqrt{\pi} \right)^{-1/2} e^{-x^2/2} He_n \left( {\sqrt{2} x} \right) .. only:: texinfo :: psi_n = (n! sqrt(\pi))^{-1/2} e^{-x^2/2} He_n({sqrt(2) x}) and satisfy the Schrödinger equation for a quantum mechanical harmonic oscillator .. only:: not texinfo .. math:: \psi_n^{\prime\prime}(x) + (2n + 1 - x^2) \psi_n(x) = 0 .. only:: texinfo :: psi_n^{''}(x) + (2n + 1 - x^2) psi_n(x) = 0 Maybe most importantly, the Hermite functions :math:`\psi_n` are eigenfunctions of the (continuous) Fourier transform. For further information see Abramowitz & Stegun, Chapter 22 and Szego, Gabor (1939, 1958, 1967), Orthogonal Polynomials, American Mathematical Society. The Hermite polynomials and functions are defined in the header file :file:`gsl_sf_hermite.h`. Hermite Polynomials ------------------- .. function:: double gsl_sf_hermite_prob (const int n, const double x) int gsl_sf_hermite_prob_e (const int n, const double x, gsl_sf_result * result) These routines evaluate the probabilists' Hermite polynomial :math:`He_n(x)` of order :data:`n` at position :data:`x`. .. function:: int gsl_sf_hermite_prob_array (const int nmax, const double x, double * result_array) This routine evaluates all probabilists' Hermite polynomials :math:`He_n(x)` up to order :data:`nmax` at position :data:`x`. The results are stored in :data:`result_array`. .. function:: double gsl_sf_hermite_prob_series (const int n, const double x, const double * a) int gsl_sf_hermite_prob_series_e (const int n, const double x, const double * a, gsl_sf_result * result) These routines evaluate the series :math:`\sum_{j=0}^n a_j He_j(x)` with :math:`He_j` being the :math:`j`-th probabilists' Hermite polynomial using the Clenshaw algorithm. .. function:: double gsl_sf_hermite_phys (const int n, const double x) int gsl_sf_hermite_phys_e (const int n, const double x, gsl_sf_result * result) These routines evaluate the physicists' Hermite polynomial :math:`H_n(x)` of order :data:`n` at position :data:`x`. .. function:: int gsl_sf_hermite_phys_array (const int nmax, const double x, double * result_array) This routine evaluates all physicists' Hermite polynomials :math:`H_n` up to order :data:`nmax` at position :data:`x`. The results are stored in :data:`result_array`. .. function:: double gsl_sf_hermite_phys_series (const int n, const double x, const double * a) int gsl_sf_hermite_phys_series_e (const int n, const double x, const double * a, gsl_sf_result * result) These routines evaluate the series :math:`\sum_{j=0}^n a_j H_j(x)` with :math:`H_j` being the :math:`j`-th physicists' Hermite polynomial using the Clenshaw algorithm. Hermite Functions ----------------- .. function:: double gsl_sf_hermite_func (const int n, const double x) int gsl_sf_hermite_func_e (const int n, const double x, gsl_sf_result * result) These routines evaluate the Hermite function :math:`\psi_n(x)` of order :data:`n` at position :data:`x`. .. function:: int gsl_sf_hermite_func_array (const int nmax, const double x, double * result_array) This routine evaluates all Hermite functions :math:`\psi_n(x)` up to order :data:`nmax` at position :data:`x`. The results are stored in :data:`result_array`. .. function:: double gsl_sf_hermite_func_series (const int n, const double x, const double * a) int gsl_sf_hermite_func_series_e (const int n, const double x, const double * a, gsl_sf_result * result) These routines evaluate the series :math:`\sum_{j=0}^n a_j \psi_j(x)` with :math:`\psi_j` being the :math:`j`-th Hermite function using the Clenshaw algorithm. Derivatives of Hermite Polynomials ---------------------------------- .. index:: single: Hermite polynomials, derivatives .. function:: double gsl_sf_hermite_prob_der (const int m, const int n, const double x) int gsl_sf_hermite_prob_der_e (const int m, const int n, const double x, gsl_sf_result * result) These routines evaluate the :data:`m`-th derivative of the probabilists' Hermite polynomial :math:`He_n(x)` of order :data:`n` at position :data:`x`. .. function:: int gsl_sf_hermite_prob_array_der (const int m, const int nmax, const double x, double * result_array) This routine evaluates the :data:`m`-th derivative of all probabilists' Hermite polynomials :math:`He_n(x)` up to order :data:`nmax` at position :data:`x`. The results are stored in :data:`result_array`. .. function:: int gsl_sf_hermite_prob_der_array (const int mmax, const int n, const double x, double * result_array) This routine evaluates all derivatives (starting from 0) up to the :data:`mmax`-th derivative of the probabilists' Hermite polynomial of order :data:`n` :math:`He_n(x)` at position :data:`x`. The results are stored in :data:`result_array`. .. function:: double gsl_sf_hermite_phys_der (const int m, const int n, const double x) int gsl_sf_hermite_phys_der_e (const int m, const int n, const double x, gsl_sf_result * result) These routines evaluate the :data:`m`-th derivative of the physicists' Hermite polynomial :math:`H_n(x)` of order :data:`n` at position :data:`x`. .. function:: int gsl_sf_hermite_phys_array_der (const int m, const int nmax, const double x, double * result_array) This routine evaluates the :data:`m`-th derivative of all physicists' Hermite polynomials :math:`H_n` up to order :data:`nmax` at position :data:`x`. The results are stored in :data:`result_array`. .. function:: int gsl_sf_hermite_phys_der_array (const int mmax, const int n, const double x, double * result_array) This routine evaluates all derivatives (starting from 0) up to the :data:`mmax`-th derivative of the physicists' Hermite polynomial of order :data:`n` :math:`H_n` at position :data:`x`. The results are stored in :data:`result_array`. Derivatives of Hermite Functions -------------------------------- .. index:: single: Hermite functions, derivatives .. function:: double gsl_sf_hermite_func_der (const int m, const int n, const double x) int gsl_sf_hermite_func_der_e (const int m, const int n, const double x, gsl_sf_result * result) These routines evaluate the :data:`m`-th derivative of the Hermite function :math:`\psi_n(x)` of order :data:`n` at position :data:`x`. Zeros of Hermite Polynomials and Hermite Functions -------------------------------------------------- .. index:: single: Hermite polynomials, zeros single: Hermite functions, zeros These routines calculate the :math:`s`-th zero of the Hermite Polynomial/Function of order :math:`n`. Since the zeros are symmetrical around zero, only positive zeros are calculated, ordered from smallest to largest, starting from index 1. Only for odd polynomial orders a zeroth zero exists, its value always being zero. .. function:: double gsl_sf_hermite_prob_zero (const int n, const int s) int gsl_sf_hermite_prob_zero_e (const int n, const int s, gsl_sf_result * result) These routines evaluate the :data:`s`-th zero of the probabilists' Hermite polynomial :math:`He_n(x)` of order :data:`n`. .. function:: double gsl_sf_hermite_phys_zero (const int n, const int s) int gsl_sf_hermite_phys_zero_e (const int n, const int s, gsl_sf_result * result) These routines evaluate the :data:`s`-th zero of the physicists' Hermite polynomial :math:`H_n(x)` of order :data:`n`. .. function:: double gsl_sf_hermite_func_zero (const int n, const int s) int gsl_sf_hermite_func_zero_e (const int n, const int s, gsl_sf_result * result) These routines evaluate the :data:`s`-th zero of the Hermite function :math:`\psi_n(x)` of order :data:`n`.