maxframe.tensor.special.elliprj#

maxframe.tensor.special.elliprj(x, y, z, p, **kwargs)[source]#

Symmetric elliptic integral of the third kind.

The function RJ is defined as [1]

\[R_{\mathrm{J}}(x, y, z, p) = \frac{3}{2} \int_0^{+\infty} [(t + x) (t + y) (t + z)]^{-1/2} (t + p)^{-1} dt\]

Warning

This function should be considered experimental when the inputs are unbalanced. Check correctness with another independent implementation.

Parameters:
  • x (array_like) – Real or complex input parameters. x, y, or z are numbers in the complex plane cut along the negative real axis (subject to further constraints, see Notes), and at most one of them can be zero. p must be non-zero.

  • y (array_like) – Real or complex input parameters. x, y, or z are numbers in the complex plane cut along the negative real axis (subject to further constraints, see Notes), and at most one of them can be zero. p must be non-zero.

  • z (array_like) – Real or complex input parameters. x, y, or z are numbers in the complex plane cut along the negative real axis (subject to further constraints, see Notes), and at most one of them can be zero. p must be non-zero.

  • p (array_like) – Real or complex input parameters. x, y, or z are numbers in the complex plane cut along the negative real axis (subject to further constraints, see Notes), and at most one of them can be zero. p must be non-zero.

  • out (ndarray, optional) – Optional output array for the function values

Returns:

R – Value of the integral. If all of x, y, z, and p are real, the return value is real. Otherwise, the return value is complex.

If p is real and negative, while x, y, and z are real, non-negative, and at most one of them is zero, the Cauchy principal value is returned. [1] [2]

Return type:

scalar or ndarray

See also

elliprc

Degenerate symmetric integral.

elliprd

Symmetric elliptic integral of the second kind.

elliprf

Completely-symmetric elliptic integral of the first kind.

elliprg

Completely-symmetric elliptic integral of the second kind.

Notes

The code implements Carlson’s algorithm based on the duplication theorems and series expansion up to the 7th order. [3] The algorithm is slightly different from its earlier incarnation as it appears in [1], in that the call to elliprc (or atan/atanh, see [4]) is no longer needed in the inner loop. Asymptotic approximations are used where arguments differ widely in the order of magnitude. [5]

The input values are subject to certain sufficient but not necessary constraints when input arguments are complex. Notably, x, y, and z must have non-negative real parts, unless two of them are non-negative and complex-conjugates to each other while the other is a real non-negative number. [1] If the inputs do not satisfy the sufficient condition described in Ref. [1] they are rejected outright with the output set to NaN.

In the case where one of x, y, and z is equal to p, the function elliprd should be preferred because of its less restrictive domain.

References