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
The 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}} {\displaystyle \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[7][7]= // 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[7][7]= // 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][0]+s; } else{ M=(n-1)/2; s=0.; for(m=M;m>0;m--) {s+=HermitH1[M][m]; s*=xx;} return (HermitH1[M][0]+s)*x; } }

Keywords
Hermite Gauss mode, HermiteH, Hermite polynomial