We consider Sturm-Liouville eigenvalue problems on the real line,
where the boundary conditions are that the solutions should be square-integrable. Furthermore we consider potentials
that are even functions such that
as 
In the "harmonic" case,
the eigenfunctions are the so-called Hermite functions,
where
are the Hermite polynomials. The codes in this project explore convergence rates for different potentials
using the initial sets
of Hermite functions for Galerkin bases. In fact, instead of the
a basis of "normalized" Hermite functions
satisfying
will be used.
Presumably the dependence of the convergence rates on the number of basis functions is asymptotic in such a way that it is not numerically observable until
is beyond a certain minimal threshold. For this reason it is necessary to perform the computations in multiple-precision arithmetic, that is, with floating-point types whose precision can be increased as needed. Two numerical libraries used are:
For certain polynomial potentials such as
for
the Galerkin discretization of the elliptic operator can be assembled "analytically." For for most potentials, however, the entries of the potential matrix,
must be computed via numerical quadrature. Development of the quadpack++ library was initiated toward this purpose and remains ongoing: this is an implementation of the adaptive routines from QUADPACK for a floating-point type that is passed as a C++ template parameter.
The most direct way of examining convergence is to discretize an elliptic operator for two different basis sizes, say
and
and to examine the difference
in the
-th eigenvalue arising from the respective discretizations. (Assumptions on the potentials ensure that all eigenvalues are non-degenerate, hence such a comparison is possible.) The rate at which
as
increases is the quantity of interest.
Since most of the numerical effort is consumed by the computation of the integrals
an efficient approach is to assemble just one matrix
for a reasonably large basis and then to diagonalize each upper left
block, as such any such block is the discretization arising from the first
basis functions. Programs were written for the potentials
Source codes are available by email inquiries.
All functions directly related to the Galerkin discretization are listed under Hermite approximation.
The basis of normalized Hermite functions
is implemented in Normal_Hermite_Ftns. Assembly of the Galerkin discretization requires computing two kind of integrals,
and the respective assembly functions are Hermite_Kinetic and Hermite_Potential. Fortunately there is a closed form expression for the entries 
For potentials
whose growth as
is dominated by the exponential
the integrand of each
is non-singular at infinity. This permits the use of "basic" adaptive quadrature on a finite interval after transforming the integral
by a variable transform. This is the purpose of the function Potential_QAGI; it defines the variable-transformed integrand.
The integrals
have a closed form expression for
for
(The matrix is diagonal when
since the
are the eigenfunctions.) For experimental purposes the assembly routine Hermite_Moment was written for this special case.
Source codes are available by email inquiries.
1.7.1