elliptic-package: Weierstrass and Jacobi Elliptic Functions

Description Details Author(s) References Examples

Description

A suite of elliptic and related functions including Weierstrass and Jacobi forms. Also includes various tools for manipulating and visualizing complex functions.

Details

The DESCRIPTION file: This package was not yet installed at build time.

Index: This package was not yet installed at build time.

The primary function in package elliptic is P(): this calculates the Weierstrass P function, and may take named arguments that specify either the invariants g or half periods Omega. The derivative is given by function Pdash and the Weierstrass sigma and zeta functions are given by functions sigma() and zeta() respectively; these are documented in ?P. Jacobi forms are documented under ?sn and modular forms under ?J.

Notation follows Abramowitz and Stegun (1965) where possible, although there only real invariants are considered; ?e1e2e3 and ?parameters give a more detailed discussion. Various equations from AMS-55 are implemented (for fun); the functions are named after their equation numbers in AMS-55; all references are to this work unless otherwise indicated.

The package uses Jacobi's theta functions (?theta and ?theta.neville) where possible: they converge very quickly.

Various number-theoretic functions that are required for (eg) converting a period pair to primitive form (?as.primitive) are implemented; see ?divisor for a list.

The package also provides some tools for numerical verification of complex analysis such as contour integration (?myintegrate) and Newton-Raphson iteration for complex functions (?newton_raphson).

Complex functions may be visualized using view(); this is customizable but has an extensive set of built-in colourmaps.

Author(s)

Robin K. S. Hankin [aut, cre] (<https://orcid.org/0000-0001-5982-0415>)

Maintainer: Robin K. S. Hankin <hankin.robin@gmail.com>

References

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
     ## Example 8, p666, RHS:
 P(z=0.07 + 0.1i, g=c(10,2)) 

     ## Now a nice little plot of the zeta function:
 x <- seq(from=-4,to=4,len=100)
 z <- outer(x,1i*x,"+")
 par(pty="s")
 view(x,x,limit(zeta(z,c(1+1i,2-3i))),nlevels=3,scheme=1)
 view(x,x,P(z*3,params=equianharmonic()),real=FALSE)

     ## Some number theory:
 mobius(1:10)
 plot(divisor(1:300,k=1),type="s",xlab="n",ylab="divisor(n,1)")

    ## Primitive periods:
 as.primitive(c(3+4.01i , 7+10i))
 as.primitive(c(3+4.01i , 7+10i),n=10)   # Note difference

    ## Now some contour integration:
 f <- function(z){1/z}
 u <- function(x){exp(2i*pi*x)}
 udash <- function(x){2i*pi*exp(2i*pi*x)}
 integrate.contour(f,u,udash) - 2*pi*1i


 x <- seq(from=-10,to=10,len=200)
 z <- outer(x,1i*x,"+")
 view(x,x,P(z,params=lemniscatic()),real=FALSE)
 view(x,x,P(z,params=pseudolemniscatic()),real=FALSE)
 view(x,x,P(z,params=equianharmonic()),real=FALSE)

Example output

Attaching package: 'elliptic'

The following objects are masked from 'package:stats':

    sd, sigma

The following object is masked from 'package:base':

    is.primitive

[1] -22.9745-63.05323i
 [1]  1 -1 -1  0 -1  1 -1  0  0  1
[1]  1+1.98i -2-2.03i
attr(,"class")
[1] "primitive"
[1] 1+0.05i 0+1.93i
attr(,"class")
[1] "primitive"
[1] -3.56164e-17-8.881784e-16i

elliptic documentation built on May 2, 2019, 9:37 a.m.