Hermite polynomial

Hermite polynomial appears at the solution of the Stationary Schroedinger equation with quadratic potential. Also, the Hermite polynomials appear in the Hermite Gauss modes.

The $$m$$th Hermite polynomial can be defined as

$$H_m(x)=(-1)^m \exp(-x^2) \partial_x^m \exp(-x^2)$$

The $$m$$th Hermite polynomial is denoted with $$H_m(x)=\mathrm{HermiteH}[m,x]$$. In particular,
$$H_0(x)=1$$,
$$H_1(x)=2x$$,
$$H_2(x)=4x^2-2$$

Recurrent relations

$$H_{n+1}(x)=2xH_n(x)-2nH_{n-1}(x)$$

$$H_n'(x)=2nH_{n-1}(x)$$

Orthogonality

Hermite polynomials are orthogonal at the whole real axis with weight $$U(x)=\exp(-x^2)$$ :

$$\displaystyle \int_{-\infty}^{\infty} \exp(-x^2)\, H_m(x)\, H_n(x)\, \mathrm d x= 2^n\, n!\, \sqrt{\pi}\, \delta_{m,n}$$

The normalisation factor $$~ ~ ~ N_n=2^n\, n!\, \sqrt{\pi}$$

is used to define normalised hermites

$$\displaystyle h_n(z)= \frac{1}{\sqrt{N_n}} \mathrm{HermiteH}[n,x]=\frac{H_n(x)}{\sqrt{N_n}}$$

Explicit plot of $$h_n$$ for $$n=2$$ .. $$6$$ is hown in figure at the top. Below, the complex map of $$h_6$$ is shown.

Oscillator functions

$$F_n(x)=h_n(x) \, \exp(-x^2/2)$$ $$=N_n^{-1/2}\, H_n(x)\, \exp(-x^2/2)$$

appear both, as solutions for the stationary Schroedinger equations for the Harmonic oscillator and at the Hermite Gauss modes. Explicit plot $$y\!=\!F_n(x)$$ is shown in figure at right for $$n=0 .. 6$$.

The oscillator function $$f_n$$ is solution of the equation

$$F''(x)+(2n\!+\!1-x^2)\, F(x) = 0$$

that is stationary Schroedinger equation of a particle of mass unity in the quadratic potential; then, $$x^2$$ can be interpreted as twiced potential, and expression $$2n\!+\!1$$ can be interpreted as energy of the eigenstate of the system.

Hermite number

There is special name for

$$H_n=H_n(0)=\mathrm{HermiteH}[n,0]$$.

It is called Hermite number; originally, $$H_n$$ is defined only for integer $$n$$. 

$$\displaystyle H_n= \frac {2^n \sqrt{\pi}} \mathrm{Factorial}\left(- \frac{1\!+\!n}{2}\right)$$ $$\displaystyle = \left\{ \begin{array}{ccc} 0 & \mathrm{for ~ odd} & n \\ \displaystyle (-1)^{n/2} \frac{n!}{(n/2)!} &\mathrm{for ~ even} & n \end{array} \right.$$

C++ implementation

For fast generation of complex diagrams, it may have sense to use the fast implementation for the Hermite polynomials (with already pre-calculated coefficients). The implementation of $$H_n(x)$$ for $$0<n<14$$ is suggested below:

DB HermitH0= // COEFFICIENTS OF EVEN HERMITEH
{{1, 0, 0, 0, 0, 0, 0},
{-2, 4, 0, 0, 0, 0, 0},
{12, -48, 16, 0, 0, 0, 0},
{-120, 720, -480, 64, 0, 0, 0},
{1680, -13440, 13440, -3584, 256, 0, 0},
{-30240, 302400, -403200, 161280, -23040, 1024, 0},
{665280, -7983360, 13305600, -7096320, 1520640, -135168, 4096}};

DB HermitH1= // COEFFICIENTS OF ODD HERMITEH
{{2, 0, 0, 0, 0, 0, 0},
{-12, 8, 0, 0, 0, 0, 0},
{120, -160, 32, 0, 0, 0, 0},
{-1680, 3360, -1344, 128, 0, 0, 0},
{30240, -80640, 48384, -9216, 512, 0, 0},
{-665280, 2217600, -1774080, 506880, -56320, 2048, 0},
{17297280, -69189120, 69189120, -26357760,4392960, -319488, 8192}};

DB HermitH(int n,DB x){ int m,M; DB s, xx;
if(n==0) return 1.;
if(n==1) return x+x;
if(n>13) {printf("hermite number %2d is not yet implemented (max. is 13)\n consider to stop..",n); getchar(); return 0;}
xx=x*x; //printf("Hernith called with n=%3d x=%8.2lf\n",n,x);
if(n/2*2==n){M=n/2; s=0.;for(m=M;m>0;m--) {s+=HermitH0[M][m]; s*=xx;}
return HermitH0[M]+s; }
else{ M=(n-1)/2; s=0.; for(m=M;m>0;m--) {s+=HermitH1[M][m]; s*=xx;}
return (HermitH1[M]+s)*x; }
}