Open
Description
Description
A short description can be found at WolframMathWorld - Bessel Function Zeros.
Books:
- Abramovitz & Stegun, Handbook of Mathematical Functions with Formulas, Graphs, and Mathematical Tables, Dover, 1972, Section 9.5, pp. 370-374.
- NIST Digital Library of Mathematical Functions, Section 10.21
- Shanjie Zhang & Jianming Jin, Computation of Special Functions, Wiley, 1996, Chapter 5.
- Ali Ümit Keskin, Ordinary Differential Equations for Engineers, Springer, 2019, Section 5.2, pg. 294.
Papers:
- Gard, J., & Zakrajšek, E. (1973). Method for evaluation of zeros of Bessel functions. IMA Journal of Applied Mathematics, 11(1), 57-72. https://doi.org/10.1093/imamat/11.1.57
- Temme, N. M. (1979). An algorithm with ALGOL 60 program for the computation of the zeros of ordinary Bessel functions and those of their derivatives. Journal of Computational Physics, 32(2), 270-279. https://doi.org/10.1016/0021-9991(79)90134-7
- Ikebe, Y., Kikuchi, Y., & Fujishiro, I. (1991). Computing zeros and orders of Bessel functions. Journal of Computational and Applied Mathematics, 38(1-3), 169-184. https://doi.org/10.1016/0377-0427(91)90169-K
- Elbert, A. (2001). Some recent results on the zeros of Bessel functions and orthogonal polynomials. Journal of computational and applied mathematics, 133(1-2), 65-83. https://doi.org/10.1016/S0377-0427(00)00635-X
Prior Art
A thread at comp.lang.fortran suggests several good resources:
SUBROUTINE JYZO(N,NT,RJ0,RJ1,RY0,RY1)
! ======================================================
! Purpose: Compute the zeros of Bessel functions Jn(x),
! Yn(x), and their derivatives
! Input : n --- Order of Bessel functions (0 to 100)
! NT --- Number of zeros (roots)
! Output: RJ0(L) --- L-th zero of Jn(x), L=1,2,...,NT
! RJ1(L) --- L-th zero of Jn'(x), L=1,2,...,NT
! RY0(L) --- L-th zero of Yn(x), L=1,2,...,NT
! RY1(L) --- L-th zero of Yn'(x), L=1,2,...,NT
! ...
- CERN Program Library (GPL-licensed according to Wikipedia)
SUBROUTINE DBZEJY(A,N,MODE,REL,X)
REAL(DP), INTENT(IN) :: A ! Order a
INTEGER, INTENT(IN) :: N ! Number N of zeros wanted
INTEGER, INTENT(IN) :: MODE ! Defines the function for which the zeros are to be calculated
REAL(DP), INTENT(IN) :: REL ! Requested relative accuracy
REAL(DP), INTENT(OUT) :: X(N) ! On exit, contains the first N positive zeros of the function defined by MODE
- NAG Library (
s17alf
orbessel_zeros
)
subroutine bessel_zeros(a,n,mode,rel,x,ifail)
integer, intent(in) :: n, mode
integer, intent(inout) :: ifail
real(kind=nag_wp), intent(in) :: a, rel
real(kind=nag_wp), intent(out) :: x(n)
Finally, the results of a non-exhaustive search for Bessel zero resources:
- Boost C++ Libraries: Finding Zeros of Bessel Functions of the First and Second Kinds (the implementation is discussed towards the bottom of the page)
- GSL: Zeros of Regular Bessel functions
- Online Calculator from CASIO
- scipy.special (Zeros of Bessel functions) - Cites code from Ref. 3 of the resources above, available in the SPECIAL_FUNCTIONS package from John Burkardt's collection. Here is a permalink to the code in Scipy.
- FunctionZeros.jl (an issue is open to add this to the Julia SpecialFunctions.jl)
- MATLAB Central Packages:
- Bessel Zero Solver by Jason Nicholson
- Bessel Function Zeros by Greg von Winckel
- Bessel Derivative Zeros by Carey Smith
- misc/besz.c - fast zero finder for bessel functions J_nu(x) by E. Onofri
Related issues: #305, #179, #102
Since Fortran already supports Bessel functions
bessel_j0(x)
bessel_j1(x)
bessel_jn(n,x)
orbessel_jn(n1,n2,x)
bessel_y0(x)
bessel_y1(x)
bessel_yn(n,x)
orbessel_yn(n1,n2,x)
it would be nice to come up with a similar interface.