Skip to content

Zeros of Bessel functions J and Y #460

Open
@ivan-pi

Description

@ivan-pi

Description

A short description can be found at WolframMathWorld - Bessel Function Zeros.

Books:

  1. Abramovitz & Stegun, Handbook of Mathematical Functions with Formulas, Graphs, and Mathematical Tables, Dover, 1972, Section 9.5, pp. 370-374.
  2. NIST Digital Library of Mathematical Functions, Section 10.21
  3. Shanjie Zhang & Jianming Jin, Computation of Special Functions, Wiley, 1996, Chapter 5.
  4. Ali Ümit Keskin, Ordinary Differential Equations for Engineers, Springer, 2019, Section 5.2, pg. 294.

Papers:

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
! ...
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
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:

Related issues: #305, #179, #102

Since Fortran already supports Bessel functions

  • bessel_j0(x)
  • bessel_j1(x)
  • bessel_jn(n,x) or bessel_jn(n1,n2,x)
  • bessel_y0(x)
  • bessel_y1(x)
  • bessel_yn(n,x) or bessel_yn(n1,n2,x)

it would be nice to come up with a similar interface.

Metadata

Metadata

Assignees

No one assigned

    Labels

    ideaProposition of an idea and opening an issue to discuss ittopic: mathematicslinear algebra, sparse matrices, special functions, FFT, random numbers, statistics, ...

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions