This chapter describes functions for performing Discrete Hankel Transforms (DHTs).
The discrete Hankel transform acts on a vector of sampled data, where the samples are assumed to have been taken at points related to the zeroes of a Bessel function of fixed order; compare this to the case of the discrete Fourier transform, where samples are taken at points related to the zeroes of the sine or cosine function.
Specifically, let f(t) be a function on the unit interval. Then the finite
\nu-Hankel transform of f(t) is defined to be the set of numbers g_m given by,
so that, Suppose that f is band-limited in the sense that g_m=0 for m > M.
Then we have the following fundamental sampling theorem. It is this discrete
expression which defines the discrete Hankel transform. The kernel in the
summation above defines the matrix of the \nu-Hankel transform of size M-1.
The coefficients of this matrix, being dependent on \nu and M, must be
precomputed and stored; the GSL::Dht
object encapsulates this data.
The constructor GSL::Dht.alloc
returns a GSL::Dht
object
which must be properly initialized with GSL::Dht#init
before
it can be used to perform transforms on data sample vectors,
for fixed \nu and M, using the GSL::Dht#apply
method.
The implementation allows a scaling of the fundamental
interval, for convenience, so that one can assume the function is defined on
the interval [0,X], rather than the unit interval.
Notice that by assumption f(t) vanishes at the endpoints of the interval, consistent with the inversion formula and the sampling formula given above. Therefore, this transform corresponds to an orthogonal expansion in eigenfunctions of the Dirichlet problem for the Bessel differential equation.
GSL::Dht.alloc(size)
GSL::Dht.alloc(size, nu, xmax)
GSL::Dht
of size size.
If three arguments are given, the object is initialized with the values of
nu, xmax.GSL::Dht#init(nu, xmax)
GSL::Dht#apply(vin, vout)
GSL::Dht#apply(vin)
GSL::Dht#x_sample(n)
GSL::Dht#k_sample(n)
GSL::Dht#size
GSL::Dht#nu
GSL::Dht#xmax
GSL::Dht#kmax
GSL::Dht#j
GSL::Vector::View
.GSL::Dht#Jjj
GSL::Vector::View
.GSL::Dht#J2
GSL::Dht#coef
GSL::Dht#coef(n, m)