This julia package provides the following:
K(m) | Complete elliptic integral of the first kind, K(m) = F(π/2|m) |
F(phi, m) | Incomplete elliptic integral of the first kind, F(φ|m) |
E(m) | Complete elliptic integral of the second kind, E(m) = E(π/2|m) |
E(phi, m) | Incomplete elliptic integral of the second kind, E(φ|m) |
Pi(n, phi, m) | Incomplete elliptic integral of the third kind, Π(n;φ|m) |
The parameter m = k^2 = sin(α)^2
where α
is the modular angle and k
is the modulus.
julia> import Elliptic
julia> Elliptic.K(0.5)
1.854074677301372
am(u, m) | Jacobi amplitude, defined by u = F(am(u|m)|m) |
sn(u, m) | Jacobi elliptic function, sn(u|m) = sin(am(u|m)) |
cn(u, m) | Jacobi elliptic function, cn(u|m) = cos(am(u|m)) |
dn(u, m) | Jacobi elliptic function, dn(u|m) = sqrt(1 - m sn(u|m)^2) |
cd(u, m) | Jacobi elliptic function, cd(u|m) |
sd(u, m) | Jacobi elliptic function, sd(u|m) |
nd(u, m) | Jacobi elliptic function, nd(u|m) = 1/dn(u|m) |
dc(u, m) | Jacobi elliptic function, dc(u|m) |
nc(u, m) | Jacobi elliptic function, nc(u|m) = 1/cn(u|m) |
sc(u, m) | Jacobi elliptic function, sc(u|m) |
ns(u, m) | Jacobi elliptic function, ns(u|m) = 1/sn(u|m) |
ds(u, m) | Jacobi elliptic function, ds(u|m) |
cs(u, m) | Jacobi elliptic function, cs(u|m) |
julia> import Elliptic.Jacobi
julia> Jacobi.sn(2, 9)
-0.15028246569211734
ellipj(u, m) | returns (sn(u,m), cn(u,m), dn(u,m)) |
ellipke(m) | returns (K(m), E(m)) |
For convenience, the matlab compatible ellipj
and ellipke
routines are
also provided. ellipj(u,m)
is equivalent to sn(u,m), cn(u,m), dn(u,m)
,
but faster if you want all three. Likewise, ellipke(m)
is equivalent to
K(m), E(m)
, but faster if you want both.
julia> import Elliptic
julia> k,e = Elliptic.ellipke(0.5)
(1.854074677301372,1.3506438810476757)
julia> sn,cn,dn = Elliptic.ellipj(0.672, 0.36)
(0.6095196917919022,0.792770928653356,0.9307281387786907)
julia> Pkg.update()
julia> Pkg.add("Elliptic")