Scaled spherical bessel functions

조회 수: 17 (최근 30일)
Bart Boesman
Bart Boesman 2013년 3월 12일
답변: Joshua Frechem 2019년 4월 2일
Hi all,
Does anyone know about routines that compute - preferably scaled - spherical bessel functions of the first and second kinds immediately by recursion? This in order to avoid under- and overflow for high-order bessels with small arguments. I know about the standard routines implemented in matlab for the bessel functions of integer order and for deriving the spherical ones from them, however I'd like to have a more stable routine.
Looking forward to any tips.

답변 (1개)

Joshua Frechem
Joshua Frechem 2019년 4월 2일
I doubt this is still needed, but:
If you want to write your own script, you can use outward recursion for small arguments and then inward recursion for large arguments. However, this requires the knowledge of and in order to do the outward recursion and they are also helpful for the inward recursion for scaling (since they will be very large when unscaled). However, there are other ways to do the scaling because the amplitudes all add to one, which can be reasonably approximated if you take n high enough. The issue with the outward recursion is that it becomes unstable after approximately n=10, while the inward recursion doesn't, but it gets huge as you iterate in and you might run into precision issues if you don't work carefully - i.e. use doubles.
If you use the below algorithm and code it in matlab, you get excellent results for nearly any order spherical bessel for, at least a wide range, of the argument. I have tested it out to 50, but I can not confirm it past that. Though, they have scaling done so that it should work very well for large arguments.
If you make use of a parfor loop over the argument, you can interate the recursion through your desired argument range quite quickly, though perhaps not the most efficiently.


Help CenterFile Exchange에서 Bessel functions에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by