Integrating products of Bessel functions with an additional exponential or rational factor
We provide two MATLAB programs to compute integrals of the form [GRAPHICS] with J(nu i) (x) the Bessel function of the first kind and (real) order vi. The parameter m is a real number such that Sigma(i) nu(i) + m > -1 (to assure integrability near zero), r is real and the numbers c and a(i) are all strictly positive. The program can deliver accurate error estimates. Program summary Program title: BESSELINTR, BESSELINTC Catalogue identifier: AEAH_v1_0 Program summary URL: Program obtainable from: CPC Program Library, Queen's University, Belfast, N. Ireland Licensing provisions: Standard CPC licence, No. of lines in distributed program, including test data, etc.: 1601 No. of bytes in distributed program, including test data, etc.: 13 161 Distribution format: tar.gz Programming language: Matlab (version >= 6.5), Octave (version >= 2.1.69) Computer. All supporting Matlab or Octave Operating system: All supporting Matlab or Octave RAM: For k Bessel functions our program needs approximately (500 + 140k) double precision variables Classification: 4.11 Nature of problem: The problem consists in integrating an arbitrary product of Bessel functions with an additional rational or exponential factor over a semi-infinite interval. Difficulties arise from the irregular oscillatory behaviour and the possible slow decay of the integrand, which prevents truncation at a finite point. Solution method: The interval of integration is split into a finite and infinite part. The integral over the finite part is computed using Gauss-Legendre quadrature. The integrand on the infinite part is approximated using asymptotic expansions and this approximation is integrated exactly with the aid of the upper incomplete gamma function. In the case where a rational factor is present, this factor is first expanded in a Taylor series around infinity. Restrictions: Some (and eventually all) numerical accuracy is lost when one or more of the parameters r, c, a(i) or vi grow very large, or when r becomes small. Running time: Less than 0.02 s for a simple problem (two Bessel functions, small parameters), A few seconds for a more complex problem (more than six Bessel functions, large parameters), in Matlab 7.4 (R2007a) on a 2.4 GHz AMD Opteron Processor 250.
Source (journal)
Computer physics communications. - Amsterdam
Amsterdam : 2008
178:8(2008), p. 578-590
Full text (Publisher's DOI)
Full text (publisher's version - intranet only)
Research group
Publication type
Publications with a UAntwerp address
External links
Web of Science
Creation 24.02.2012
Last edited 23.06.2017
To cite this reference