📄 dht.texi
字号:
@cindex discrete Hankel transforms@cindex Hankel transforms, discrete@cindex transforms, HankelThis chapter describes functions for performing Discrete HankelTransforms (DHTs). The functions are declared in the header file@file{gsl_dht.h}.@menu* Discrete Hankel Transform Definition:: * Discrete Hankel Transform Functions:: * Discrete Hankel Transform References:: @end menu@node Discrete Hankel Transform Definition@section DefinitionsThe discrete Hankel transform acts on a vector of sampled data, wherethe samples are assumed to have been taken at points related to thezeroes of a Bessel function of fixed order; compare this to the case ofthe discrete Fourier transform, where samples are taken at pointsrelated to the zeroes of the sine or cosine function.Specifically, let @math{f(t)} be a function on the unit interval.Then the finite @math{\nu}-Hankel transform of @math{f(t)} is definedto be the set of numbers @math{g_m} given by,@tex\beforedisplay$$g_m = \int_0^1 t dt\, J_\nu(j_{\nu,m}t) f(t),$$\afterdisplay@end tex@noindentso that,@tex\beforedisplay$$f(t) = \sum_{m=1}^\infty {{2 J_\nu(j_{\nu,m}x)}\over{J_{\nu+1}(j_{\nu,m})^2}} g_m.$$\afterdisplay@end tex@noindentSuppose that @math{f} is band-limited in the sense that@math{g_m=0} for @math{m > M}. Then we have the followingfundamental sampling theorem.@tex\beforedisplay$$g_m = {{2}\over{j_{\nu,M}^2}} \sum_{k=1}^{M-1} f({{j_{\nu,k}}\over{j_{\nu,M}}}) {{J_\nu(j_{\nu,m} j_{\nu,k} / j_{\nu,M})}\over{J_{\nu+1}(j_{\nu,k})^2}}.$$\afterdisplay@end tex@noindentIt is this discrete expression which defines the discrete Hankeltransform. The kernel in the summation above defines the matrix of the@math{\nu}-Hankel transform of size @math{M-1}. The coefficients ofthis matrix, being dependent on @math{\nu} and @math{M}, must beprecomputed and stored; the @code{gsl_dht} object encapsulates thisdata. The allocation function @code{gsl_dht_alloc} returns a@code{gsl_dht} object which must be properly initialized with@code{gsl_dht_init} before it can be used to perform transforms on datasample vectors, for fixed @math{\nu} and @math{M}, using the@code{gsl_dht_apply} function. The implementation allows a scaling ofthe fundamental interval, for convenience, so that one can assume thefunction is defined on the interval @math{[0,X]}, rather than the unitinterval.Notice that by assumption @math{f(t)} vanishes at the endpointsof the interval, consistent with the inversion formulaand the sampling formula given above. Therefore, this transformcorresponds to an orthogonal expansion in eigenfunctionsof the Dirichlet problem for the Bessel differential equation.@node Discrete Hankel Transform Functions@section Functions@deftypefun {gsl_dht *} gsl_dht_alloc (size_t @var{size})This function allocates a Discrete Hankel transform object of size@var{size}.@end deftypefun@deftypefun int gsl_dht_init (gsl_dht * @var{t}, double @var{nu}, double @var{xmax})This function initializes the transform @var{t} for the given values of@var{nu} and @var{x}.@end deftypefun@deftypefun {gsl_dht *} gsl_dht_new (size_t @var{size}, double @var{nu}, double @var{xmax})This function allocates a Discrete Hankel transform object of size@var{size} and initializes it for the given values of @var{nu} and@var{x}.@end deftypefun@deftypefun void gsl_dht_free (gsl_dht * @var{t})This function frees the transform @var{t}.@end deftypefun@deftypefun int gsl_dht_apply (const gsl_dht * @var{t}, double * @var{f_in}, double * @var{f_out})This function applies the transform @var{t} to the array @var{f_in}whose size is equal to the size of the transform. The result is storedin the array @var{f_out} which must be of the same length.@end deftypefun@deftypefun double gsl_dht_x_sample (const gsl_dht * @var{t}, int @var{n})This function returns the value of the n'th sample point in the unit interval,@c{${{j_{\nu,n+1}}\over{j_{\nu,M}}} X$}@math{(j_@{\nu,n+1@}/j_@{\nu,M@}) X}. These are thepoints where the function @math{f(t)} is assumed to be sampled.@end deftypefun@deftypefun double gsl_dht_k_sample (const gsl_dht * @var{t}, int @var{n})This function returns the value of the n'th sample point in "k-space",@c{${{j_{\nu,n+1}}\over X}$}@math{j_@{\nu,n+1@}/X}.@end deftypefun@node Discrete Hankel Transform References@section References and Further Reading@noindentThe algorithms used by these functions are described in the following papers,@itemize @asis@itemH. Fisk Johnson, Comp. Phys. Comm. 43, 181 (1987).@end itemize@itemize @asis@itemD. Lemoine, J. Chem. Phys. 101, 3936 (1994).@end itemize
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -