EllipticFunctions.jl documentation

Jacobi theta functions and related functions.

using EllipticFunctions
using Images
# array of complex values.
z = (1:-0.001:-1) .* im .+ (-1:0.001:1)';
# function z->RGB 
function colormap(z)
    if isinf(z) || isnan(z)
        return RGB(0, 0, 0)
    end
    r = mod(abs(z), 1.0)
    g = 2 * mod(angle(z), 0.5)
    b = mod(real(z) * imag(z), 1.0)
    if isnan(b)
        return RGB(0, 0, 0)
    end
    return RGB(
        (1.0 - cos(r-0.5))*8.0,
        (1.0 - cos(g-0.5))*8.0,
        (1.0 - cos(b-0.5))*8.0
    )
end
# function to be plotted
function f(z)
    return EllipticFunctions.wzeta(z; tau = 0.1 + 3im)
end
# raster image
image = colormap.(f(3*z))

Functions

The Weierstrass elliptic functions $\wp$, $\sigma$ and $\zeta$ are vectorized in the variable $z$. That means you do not need to use broadcasting in order to apply them to an array of $z$ values (this would be slower).

EllipticFunctions.ljtheta1Function
ljtheta1(z, q)

Logarithm of the first Jacobi theta function.

Arguments

  • z: real or complex number or array of numbers
  • q: the nome
EllipticFunctions.jtheta1Function
jtheta1(z, q)

First Jacobi theta function.

Arguments

  • z: real or complex number or array of numbers
  • q: the nome
EllipticFunctions.ljtheta2Function
ljtheta2(z, q)

Logarithm of the second Jacobi theta function.

Arguments

  • z: real or complex number or array of numbers
  • q: the nome
EllipticFunctions.jtheta2Function
jtheta2(z, q)

Second Jacobi theta function.

Arguments

  • z: real or complex number or array of numbers
  • q: the nome
EllipticFunctions.ljtheta3Function
ljtheta3(z, q)

Logarithm of the third Jacobi theta function.

Arguments

  • z: real or complex number or array of complex numbers
  • q: the nome
EllipticFunctions.jtheta3Function
jtheta3(z, q)

Third Jacobi theta function.

Arguments

  • z: real or complex number or array of numbers
  • q: the nome
EllipticFunctions.ljtheta4Function
ljtheta4(z, q)

Logarithm of the fourth Jacobi theta function.

Arguments

  • z: real or complex number or array of complex numbers
  • q: the nome
EllipticFunctions.jtheta4Function
jtheta4(z, q)

Fourth Jacobi theta function.

Arguments

  • z: real or complex number or array of numbers
  • q: the nome
EllipticFunctions.jtheta_abFunction
jtheta_ab(a, b, z, q)

Jacobi theta function with characteristics. This is a family of functions parameterized by a and b, which contains the opposite of the first Jacobi theta function (a=b=0.5), the second Jacobi theta function (a=0.5,b=0), the third Jacobi theta function (a=b=0), and the fourth Jacobi theta function (a=0,b=0.5).

Arguments

  • a: first characteristic, a real or complex number
  • b: second characteristic, a real or complex number
  • z: real or complex number or array of numbers
  • q: the nome
EllipticFunctions.jtheta1dashFunction
jtheta1dash(z, q)

Derivative of the first Jacobi theta function.

Arguments

  • z: real or complex number or array of numbers
  • q: the nome
EllipticFunctions.qfromtauFunction
qfromtau(tau)

The nome q given the tau parameter.

Arguments

  • tau: complex number with nonnegative imaginary part
EllipticFunctions.taufromqFunction
taufromq(q)

The tau parameter given the nome q.

Arguments

  • q: complex number, the nome; it must not be a negative real number and its modulus must be strictly smaller than 1
EllipticFunctions.lambdaFunction
lambda(tau)

Lambda modular function.

Arguments

  • tau: complex number with nonnegative imaginary part
EllipticFunctions.kleinjFunction
kleinj(tau)

Klein j-invariant function.

Arguments

  • tau: complex number with nonnegative imaginary part
EllipticFunctions.CarlsonRDFunction
CarlsonRD(x, y, z)

Carlson 'RD' integral.

Arguments

  • x,y,z: real or complex numbers; at most one of them can be zero
EllipticFunctions.CarlsonRFFunction
CarlsonRF(x, y, z)

Carlson 'RF' integral.

Arguments

  • x,y,z: real or complex numbers; at most one of them can be zero
EllipticFunctions.CarlsonRJFunction
CarlsonRJ(x, y, z, p)

Carlson 'RJ' integral.

Arguments

  • x,y,z,p: real or complex numbers; at most one of them can be zero
EllipticFunctions.ellipticEFunction
ellipticE(phi, m)

Incomplete elliptic integral of the second kind.

Arguments

  • phi: real or complex number, the amplitude
  • m: real or complex number, the squared modulus
ellipticE(m)

Complete elliptic integral of the second kind.

Arguments

  • m: real or complex number, the squared modulus
EllipticFunctions.ellipticFFunction
ellipticF(phi, m)

Incomplete elliptic integral of the first kind.

Arguments

  • phi: real or complex number, the amplitude
  • m: real or complex number, the squared modulus
EllipticFunctions.ellipticKFunction
ellipticK(m)

Complete elliptic integral of the first kind.

Arguments

  • m: real or complex number, the squared modulus
EllipticFunctions.ellipticPIFunction
ellipticPI(phi, n, m)

Incomplete elliptic integral of first kind.

Arguments

  • phi: real or complex number, the amplitude
  • n: real or complex number, the characteristic
  • m: real or complex number, the squared modulus
EllipticFunctions.ellipticZFunction
ellipticZ(phi, m)

Jacobi Zeta function.

Arguments

  • phi: real or complex number, the amplitude
  • m: real or complex number, the squared modulus
EllipticFunctions.agmFunction
agm(x, y)

Arithmetic-geometric mean.

Arguments

  • x,y: real or complex numbers
EllipticFunctions.EisensteinE2Function
EisensteinE2(q)

Eisenstein E-series of weight 2.

Arguments

  • q: nome, real or complex number; it must not be a negative real number and its modulus must be strictly smaller than 1
EllipticFunctions.EisensteinE4Function
EisensteinE4(q)

Eisenstein E-series of weight 4.

Arguments

  • q: nome, real or complex number; it must not be a negative real number and its modulus must be strictly smaller than 1
EllipticFunctions.EisensteinE6Function
EisensteinE6(q)

Eisenstein E-series of weight 6.

Arguments

  • q: nome, real or complex number; it must not be a negative real number and its modulus must be strictly smaller than 1
EllipticFunctions.ellipticInvariantsFunction
ellipticInvariants(omega1, omega2)

Weierstrass elliptic invariants $g_2$ and $g_3$ from the half-periods.

Arguments

  • omega1,omega2: the Weierstrass half periods, real or complex numbers
EllipticFunctions.halfPeriodsFunction
halfPeriods(g2, g3)

Half-periods $\omega_1$ and $\omega_2$ from the elliptic invariants.

Arguments

  • g2,g3: the Weierstrass elliptic invariants, real or complex numbers
EllipticFunctions.wpFunction
wp(z; tau, omega, g, derivative=0)

Weierstrass p-function. One and only one of the parameters tau, omega or g must be given.

Arguments

  • z: real or complex number or array of numbers
  • tau: half-periods ratio, complex number with non negative imaginary part
  • omega: half-periods, a pair (tuple) of complex numbers
  • g: elliptic invariants, a pair (tuple) of complex numbers
  • derivative: order of differentiation, 0, 1, 2 or 3
EllipticFunctions.wsigmaFunction
wsigma(z; tau, omega, g)

Weierstrass sigma-function. One and only one of the parameters tau, omega or g must be given.

Arguments

  • z: real or complex number or array of numbers
  • tau: half-periods ratio, complex number with non negative imaginary part
  • omega: half-periods, a pair (tuple) of complex numbers
  • g: elliptic invariants, a pair (tuple) of complex numbers
EllipticFunctions.wzetaFunction
wzeta(z; tau, omega, g)

Weierstrass zeta-function. One and only one of the parameters tau, omega or g must be given.

Arguments

  • z: real or complex number or array of numbers
  • tau: half-periods ratio, complex number with non negative imaginary part
  • omega: half-periods, a pair of complex numbers
  • g: elliptic invariants, a pair of complex numbers
EllipticFunctions.thetaCFunction
thetaC(z; tau, m)

Neville C-theta function. Only one of the parameters tau or m must be supplied.

Arguments

  • z: real or complex number or array of numbers
  • tau: complex number with nonnegative imaginary part
  • m: real or complex number, square of the elliptic modulus
EllipticFunctions.thetaDFunction
thetaD(z; tau, m)

Neville D-theta function. Only one of the parameters tau or m must be supplied.

Arguments

  • z: real or complex number or array of numbers
  • tau: complex number with nonnegative imaginary part
  • m: real or complex number, square of the elliptic modulus
EllipticFunctions.thetaNFunction
thetaN(z; tau, m)

Neville N-theta function. Only one of the parameters tau or m must be supplied.

Arguments

  • z: real or complex number or vector/array of complex numbers
  • tau: complex number with nonnegative imaginary part
  • m: real or complex number, square of the elliptic modulus
EllipticFunctions.thetaSFunction
thetaS(z; tau, m)

Neville S-theta function. Only one of the parameters tau or m must be supplied.

Arguments

  • z: real or complex number or array of numbers
  • tau: complex number with nonnegative imaginary part
  • m: real or complex number, square of the elliptic modulus
EllipticFunctions.jellipFunction
jellip(kind, u; tau, m)

Jacobi elliptic functions. Only one of the parameters tau or m must be supplied.

Arguments

  • kind: a string with two characters among 'c', 'd', 'n' or 's'; this string specifies the function: the two letters respectively denote the basic functions sn, cn, dn and 1, and the string specifies the ratio of two such functions, e.g. ns=1/sn and cd=cn/dn
  • u: a real or complex number or array of numbers
  • tau: complex number with nonnegative imaginary part
  • m: real or complex number, square of the elliptic modulus
EllipticFunctions.amFunction
am(u, m)

Amplitude function.

Arguments

  • u: real or complex number or array of numbers
  • m: real or complex number, square of the elliptic modulus

Index