Clear Filters
Clear Filters

Besselh function in terms of besselj and bessely functions?

1 view (last 30 days)
For the program I am writing, I have the need to increase the precision of the besselh function in MATLAB, because I routinely get infinity as an output. This is NOT an error, as it is just the nature of the problem I am dealing with (it has to do with a wide range of particle sizes in a Mie Scattering calculation).
How I'm attacking this is by using the symbolic math toolbox, however, the besselh function does not support input arguments of type 'sym'. Why it doesn't and besseli, besselj, besselk, and bessely do, I don't know. So, I'm trying to relate the Hankel function (besselh) to the Bessel functions:
besselh(x,y) = besselj(x,y) + (bessely(x,y) * j)
Where x and y are arbitrary values. I'm writing this to not only confirm that this is the right mathematical representation of the besselh function in terms of the besselj and bessely functions, but also to ask if solving besselh (in terms of besselj and bessely) is the best route (or only) to take to increase the precision of the besselh function.
Suggestions and comments are welcome! Thanks so much.
  2 Comments
David Goodmanson
David Goodmanson on 13 May 2017
Hi Clayton, That's correct for besselh_1, and then besselh_2 = besselj(x,y) - (bessely(x,y) * j). Here are a couple of links to Mie scattering in Matlab:
https://www.mathworks.com/matlabcentral/fileexchange/36831-matscat
John D'Errico
John D'Errico on 13 May 2017
Edited: John D'Errico on 13 May 2017
The help for besselh specifically states:
The relationship between the Hankel and Bessel functions is:
besselh(nu,1,z) = besselj(nu,z) + i*bessely(nu,z)
besselh(nu,2,z) = besselj(nu,z) - i*bessely(nu,z)

Sign in to comment.

Answers (0)

Categories

Find more on Special Functions in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!