I noticed that there are functions for first-order, second-order, and N-order Bessel functions (Y0, Y1, Yn) defined in the standard Go library (Y0). I can't seem to determine the practical application of these mathematical functions that would make them so important as to include in the standard library.
Can someone help me out? It seems like Bessels (which I haven't heard of before) relate to describing [graduated?] shapes of quadratic curves, but I'm unsure why this is of special significance to general development.
I believe it's there mainly because a function of the same name (except capitalisation) and behaviour is in standard POSIX library. That's also the case for many other functions in the page you link to, like ldexp
or lgamma
or nextafter
.
Speaking of the uses of Bessel functions, they just do come in handy from time to time in mathematical simulations. They are tightly connected with Laplacian problems with spherical symmetry, which relates to physical models like that of an ideal circular drum, quantum mechanical model of hydrogen, or sidebands of a FM radio signal (all heavily simplified in this list). A value of a Bessel function is a denominator of von Mises distribution, which is a well-behaved probabilistic distribution on a circle or a sphere, that's also super useful. There are many more, these are just first ideas that came to my mind.
Speaking of motivation, in a way J₀ is the next best-behaved special function after the exponential. In calculating an exponential one sums a power series weighted by an inverse factorial. For J₀, it's basically the same with the inverse factorial squared. If there's enough justification for a cosine or for erf, there's just as much for that, too. In a few words it's just a function that's sufficiently simple to be quite ubiquitous in mathematics, and there's enough programmers of C-like languages that came there for high-performance computation to actually make some momentum in laying out the standard.