hankel.hankel.HankelTransform

class hankel.hankel.HankelTransform(nu=0, N=None, h=0.05)[source]

The basis of the Hankel Transformation algorithm by Ogata 2005.

This algorithm is used to solve the equation \(\int_0^\infty f(x) J_\nu(x) dx\) where \(J_\nu(x)\) is a Bessel function of the first kind of order \(nu\), and \(f(x)\) is an arbitrary (slowly-decaying) function.

The algorithm is presented in H. Ogata, A Numerical Integration Formula Based on the Bessel Functions, Publications of the Research Institute for Mathematical Sciences, vol. 41, no. 4, pp. 949-970, 2005.

This class provides a method for directly performing this integration, and also for doing a Hankel Transform.

Parameters:

nu : int or 0.5, optional, default = 0

The order of the bessel function (of the first kind) J_nu(x)

N : int, optional, default = 3.2/h

The number of nodes in the calculation. Generally this must increase for a smaller value of the step-size h. Default value is based on where the series will truncate according to the double-exponential convergence to the roots of the Bessel function.

h : float, optional, default = 0.1

The step-size of the integration.

Methods

G(f, h[, k]) The absolute value of the non-oscillatory of the summed series’ last term, up to a scaling constant.
__init__([nu, N, h])
deltaG(f, h, *args, **kwargs) The slope (up to a constant) of the last term of the series with h
integrate(f[, ret_err, ret_cumsum]) Do the Hankel-type integral of the function f.
transform(f[, k, ret_err, ret_cumsum, inverse]) Do the Hankel-transform of the function f.
xrange([k]) Tuple giving (min,max) x value evaluated by f(x).
xrange_approx(h, nu[, k]) Tuple giving approximate (min,max) x value evaluated by f(x/k).