Evaluates a sequence of modified Bessel functions of the first kind with real order and complex arguments.
#include <imsl.h>
f_complex *imsl_c_bessel_Ix (float xnu, f_complex z, int n, ¼, 0)
The type d_complex function is imsl_z_bessel_Ix.
float xnu
(Input)
The lowest order desired. Argument xnu must be greater
than −1/2.
f_complex z
(Input)
Argument for which the sequence of Bessel functions is to be
evaluated.
int n
(Input)
Number of elements in the sequence.
A pointer to the n values of the function through the series. Element i contains the value of the Bessel function of order xnu + i for i = 0, ¼, n − 1.
f_complex
*imsl_c_bessel_Ix (float
xnu,
f_complex
z, int n,
IMSL_RETURN_USER, f_complex
bessel[],
0)
IMSL_RETURN_USER, f_complex bessel[]
(Output)
Store the sequence of Bessel functions in the user-provided array
bessel[].
The Bessel function In(z) is defined to be

For large arguments, z, Temme’s (1975) algorithm is used to find In(z). The In(z) values are recurred upward (if this is stable). This involves evaluating a continued fraction. If this evaluation fails to converge, the answer may not be accurate.
For moderate and small arguments, Miller’s method is used.
In this example, J0.3+n-1 (1.2 + 0.5i), ν = 1, ¼, 4 is computed and printed.
#include
<imsl.h>
main()
{
int n = 4;
int i;
float xnu = 0.3;
static f_complex z = {1.2, 0.5};
f_complex *sequence;
sequence =
imsl_c_bessel_Ix(xnu, z, n, 0);
for (i = 0; i < n;
i++)
printf("I sub %4.2f ((%4.2f,%4.2f)) =
(%5.3f,%5.3f)\n",
xnu+i, z.re,
z.im, sequence[i].re, sequence[i].im);
}
I sub 0.30 ((1.20,0.50)) = (1.163,0.396)
I sub 1.30
((1.20,0.50)) = (0.447,0.332)
I sub 2.30 ((1.20,0.50)) = (0.082,0.127)
I
sub 3.30 ((1.20,0.50)) = (0.006,0.029)
|
Visual Numerics, Inc. PHONE: 713.784.3131 FAX:713.781.9260 |