Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Zeros of Bessel functions J and Y #460

Open
ivan-pi opened this issue Jul 12, 2021 · 0 comments
Open

Zeros of Bessel functions J and Y #460

ivan-pi opened this issue Jul 12, 2021 · 0 comments
Labels
idea Proposition of an idea and opening an issue to discuss it topic: mathematics linear algebra, sparse matrices, special functions, FFT, random numbers, statistics, ...

Comments

@ivan-pi
Copy link
Member

ivan-pi commented Jul 12, 2021

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.

@ivan-pi ivan-pi added topic: mathematics linear algebra, sparse matrices, special functions, FFT, random numbers, statistics, ... idea Proposition of an idea and opening an issue to discuss it labels Jul 12, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
idea Proposition of an idea and opening an issue to discuss it topic: mathematics linear algebra, sparse matrices, special functions, FFT, random numbers, statistics, ...
Projects
None yet
Development

No branches or pull requests

1 participant