**Radiation force
and the Struve function**

The radiation force for a uniformly exited circular piston
is represented by Bessel and Struve functions (Kinsler and Frey, Pierce).
Routines for computing Bessel functions are readily available for some higher
level languages but not for others, whereas routines for computing the Struve
function are less common. An excellent resource that provides Fortran
routines for these and a wide range of other special functions is the book,
Computation of Special Functions, by S.-J. Zhang and J. Jin. These
Fortran subroutines are available online (http://jin.ece.uiuc.edu/routines/routines.html),
and these have also been converted into Matlab functions (http://ceta.mit.edu/ceta/comp_spec_func/).
The Matlab versions of these routines accept only scalar arguments, so these
have been modified for vector inputs as well, and the results are included here
(struveh0.m,
struveh1.m,
besselj0.m,
besselj1.m,
jinc.m).
There is also a routine (besselzeros.m)
that calculates the zeros of J_{m}(x) and J_{m}’(x).
This routine has been modified with respect to the original such that the zeros
are returned in matrices/tables (see Fundamentals of Physical Acoustics by
Blackstock, p. 393) instead of the original encoded vectors. Another
routine calculates the Fresnel sine and cosine integrals (fcs.m).
The Bessel functions now also return the correct answer for negative real
arguments, which is not the case for the besselj() function evaluated for
integer order in Matlab.

An interesting approximation to the Struve function H_{1}
is derived in a paper by Aarts and Janssen (JASA, 2003). The Struve
function H_{1} is approximated by a linear combination of the Bessel
function J_{0} and the spherical Bessel functions j_{0} and j_{1}.
This is an effective approximation for all values of ka, and the error is
smaller than the asymptotic expression for H_{1} up to approximately
2ka = 60. A Matlab function for this approximate expression is included
here (struveh1approx.m),
and a routine that evaluates the asymptotic expansion for large arguments and
the series expansion for H_{1} for small arguments is included here (struveh1approx2.m).

Note: The cephes library (http://www.netlib.org/cephes/) also contains C language listings of many special functions, including Bessel functions and Struve functions.

These routines should run correctly on Matlab, Octave, and Lyme.

**References:**

Kinsler, L., Frey, A., Coppens, A., and Sanders, J.
(1982). *Fundamentals of Acoustics* (Wiley, New York).

Pierce, A. (1989). *Acoustics, An Introduction to
Its Physical Principles and Applications* (ASA, New York).

Zhang, S. and Jin, J. (1996). *Computation of
Special Functions* (Wiley, New York).

Aarts RM and Janssen AJ, “Approximation of the Struve
function H1 occurring in impedance calculations.” *J Acoust Soc Am.*
2003 May;113(5):2635-7.

Blackstock, D. *Fundamentals of Physical Acoustics*
(Wiley-Interscience, New York).

Copyright 2005 – Robert J. McGough.

Updated 2008 – Robert J. McGough.