Elsevier Science Home
Computer Physics Communications Program Library
Full text online from Science Direct
Programs in Physics & Physical Chemistry
CPC Home

[Licence| Download | New Version Template] adjy_v1_0.gz(3 Kbytes)
Manuscript Title: ELF and GNOME: two tiny codes to evaluate the real zeros of the Bessel functions of the first kind for real orders.
Authors: J. Segura, A. Gil
Program title: ELF, GNOME
Catalogue identifier: ADJY_v1_0
Distribution format: gz
Journal reference: Comput. Phys. Commun. 117(1999)250
Programming language: Fortran.
Computer: Hewlett Packard 715/100.
Operating system: UNIX.
Keywords: General purpose, First kind, Bessel functions, Zeros of bessel, Functions, Newton method.
Classification: 4.7.

Nature of problem:
We include two codes in order to evaluate the zeros of first kind Bessel functions for real orders nu:
The subroutine ELF finds the zero jnu,s of the first kind Bessel function Jnu(x) in the neighbourhood of a given starting value x0 (x0 and jnu,s in the same branch of Hnu(x)=Jnu(x)/Jnu-1(x)).
The subroutine GNOME finds the zeros in a given interval [xmin, xmax].
The zeros of first kind Bessel functions appear in the solution of many different physical and engineering applications: wave guides, diffraction by a cylinder, quantum billiards, plasma physics, cyclic membrane vibrations...

Solution method:
We have built a Newton-Raphson method based on the monotonicity properties of the function fnu(x) = x**(2nu-1)Jnu(x)/Jnu-1(x); this method has been shown to be convergent for any real order nu and any starting value x0.

Restrictions:
For positive orders the codes have no limitation in practice, except for the possible slow convergence of the continued fraction for x >> |nu|. We have limited to 10**5 the maximum allowed number of iterations for the evaluation of the continued fraction Hnu(x) = Jnu(x)/Jnu-1(x). This way, zeros larger than 10**6 are not evaluated.
The codes work with a precision eps chosen by the user. The codes achieve full double precision except when evaluating the first positive zero for real orders nu = -kappa + gamma, kappa = 1,2,... and gamma = nu-INT(nu)+1 a small real number (0<gamma<<1). In this case, the best precision reachable is 10**-16/gamma; besides, one should demand a precision eps such that eps < gamma when evaluating the first zero for kappa > 1.
The program GNOME has been limited to work in the range nu > -1. ELF can be used for any real nu with the limitations above described.

Running time:
Of the order of 10**-2s for each evaluated zero (in a HP 715/100 machine), increasing as larger zeros are evaluated and larger orders are considered (see LONG WRITE-UP, section 5).