离散汉克尔变换
本章描述进行离散汉克尔变换(Discrete Hankel transformation, DHTs)的函数。这些函数声明在头文件gsl_dht.h中。
35.1 定义
离散的汉克尔变换作用于采样数据的向量,其中样本被假定在与固定阶贝塞尔函数的零点相关的点上取;将它与离散傅里叶变换的情况相比较,在离散傅里叶变换中,采样点与正弦或余弦函数的零点有关。
从它的定义开始,函数f 定义为一个ν阶汉克尔变换(或贝塞尔变换),其中ν >−1/2,(见Johnson, 1987和Lemoine, 1994)
如果该积分存在,Fν 被称为的f汉克尔变换。逆变换由下式给出,
其中0∞f(t)t1/2dt 必须存在且绝对收敛,且f(t)在区间[0,∞]内满足Dirichlet条件(总波动有限)。
现在,离散汉克尔变换作用于一个离散函数f,它在点n = 1…M采样,其在实空间位置tn = (jν,n/jν,M)X,在倒数空间中的位置un = jν,n/X。这里,jν,m是按升序排列的贝塞尔函数Jν (x)的第m个零。此外,假设离散函数是带限的,因此对于n > M, f(tn) = 0, f(un) = 0。因此,函数f在区间[0,X]上定义的。
根据Johnson, 1987和Lemoine, 1994的工作,离散汉克尔变换定义如下,
正是这个离散表达式定义了GSL计算的离散汉克尔变换。在GSL中,正向和反向变换是相等定义的,并计算Fν(um)。根据Johnson,反向转换读取
显然,使用正向转换而不是反向转换将得到一个额外的因数X4/jv,M2=tm2/um2 。
上述求和中的核心定义了M−1的ν汉克尔变换矩阵。这个矩阵的系数依赖于ν和M,必须预先计算并存储;gsl_dht对象封装了这个数据。分配函数gsl_dht_alloc()返回一个gsl_dht对象,该对象必须使用gsl_dht_init()正确初始化,然后才能用于对数据样本向量执行转换,对于固定的ν和M,使用gsl_dht_apply()函数。为了方便,实现允许定义基本区间的长度X,而离散汉克尔变换通常定义在单位区间上,而不是[0,X]。
注意,假设f(t)在区间的端点处消失,这与反演公式和上面给出的抽样公式一致。因此,该变换对应于贝塞尔微分方程Dirichlet问题本征函数的正交展开。
35.2 函数
gsl_dht
计算离散汉克尔变换的工作空间。
gsl_dht * gsl_dht_alloc(size_t size)
本函数分配了一个大小为size的离散汉克尔变换对象。
int gsl_dht_init(gsl_dht * t, double nu, double xmax)
本函数用给定的nu和xmax值初始化变换t。
gsl_dht * gsl_dht_new(size_t size, double nu, double xmax)
本函数分配一个大小为size的离散汉克尔变换对象,并根据给定的nu和xmax值对其进行初始化。