bessel

Modified Bessel functions for complex arguments.

JAX ships jax.scipy.special.i0e() and i1e() for real arguments only, but cylindrical-conductor physics needs \(I_0\) and \(I_1\) at the complex propagation constant \(\gamma a=\sqrt{j\omega\mu\sigma}\,a\). What that physics actually needs is never a Bessel function alone: it is either a ratio such as \(I_0/I_1\), bounded everywhere off the imaginary axis, or an exponentially scaled function such as \(I_1(x)e^{-x}\). Both are evaluated directly here, so no exponentially large number is ever formed only to be divided away.

Functions

_i1_series(x)

Evaluate $I_1(x)$ from the ascending power series.

_i_ratio_asymptotic(x)

Evaluate $I_0(x)/I_1(x)$ from the large-argument expansion.

_i_ratio_series(x)

Evaluate $I_0(x)/I_1(x)$ from the ascending power series.

_i_series_terms(x)

Return the ascending-series terms of $I_0$ and $I_1$, and their sums.

_k1_series(x)

Evaluate $K_1(x)$ from its convergent logarithmic series.

_k_ratio_asymptotic(x)

Evaluate $K_0(x)/K_1(x)$ from its large-argument expansion.

_k_ratio_series(x)

Evaluate $K_0(x)/K_1(x)$ from the convergent logarithmic series.

_k_series(x, terms, i0, i1)

Return $K_0(x)$ and $K_1(x)$ from their convergent logarithmic series.

_poly_in_inverse(x, coefficients)

Evaluate $sum_k c_k x^{-k}$ by Horner's rule in $1/x$.

i0_over_i1(x)

Ratio $I_0(x)/I_1(x)$ of modified Bessel functions, for complex $x$.

i1e(x)

Exponentially scaled $I_1(x)e^{-x}$, for complex $x$.

k0_over_k1(x)

Ratio $K_0(x)/K_1(x)$ of modified Bessel functions for complex $x$.

k1e(x)

Exponentially scaled $K_1(x)e^{x}$, for complex $x$.