| WeierstrassP {elliptic} | R Documentation |
Weierstrass elliptic function and its derivative, Weierstrass sigma function, and the Weierstrass zeta function
P(z, g=NULL, Omega=NULL, params=NULL, use.fpp=TRUE, give.all.3=FALSE, ...) Pdash(z, g=NULL, Omega=NULL, params=NULL, use.fpp=TRUE, ...) sigma(z, g=NULL, Omega=NULL, params=NULL, use.theta=TRUE, ...) zeta(z, g=NULL, Omega=NULL, params=NULL, use.fpp=TRUE, ...)
z |
Primary complex argument |
g |
Invariants g=c(g2,g3). Supply exactly one of
(g, Omega, params). |
Omega |
Half periods |
params |
Object with class “parameters” (typically
provided by parameters()). If not of this class, interpret
as a two element vector g=c(g2,g3). |
use.fpp |
Boolean, with default TRUE meaning to calculate
P(z^C) where z^C is congruent to z
in the period lattice. The default means that accuracy is greater
for large z but has the deficiency that slight
discontinuities may appear near parallelogram boundaries. |
give.all.3 |
Boolean, with default FALSE meaning to return
P(z) and TRUE meaning to return the other forms given
in equation 18.10.5, p650. Use TRUE to check for accuracy. |
use.theta |
Boolean, with default TRUE meaning to use
theta function forms, and FALSE meaning to use a Laurent
expansion. Usually, the theta function form is faster, but not
always. |
... |
Extra parameters passed to theta1() and theta1dash(). |
In this package, function sigma() is the Weierstrass sigma
function. For the number theoretic divisor function also known as
“sigma”, see divisor().
Robin K. S. Hankin
## Example 8, p666, RHS:
P(z=0.07 + 0.1i,g=c(10,2))
## Example 8, p666, RHS:
P(z=0.1 + 0.03i,g=c(-10,2))
## Right answer!
## Compare the Laurent series, which also gives the Right Answer (tm):
P.laurent(z=0.1 + 0.03i,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,"+")
view(x,x,limit(zeta(z,c(1+1i,2-3i))),nlevels=6,code=1)
#now figure 18.5, top of p643:
p <- parameters(Omega=c(1+0.1i,1+1i))
n <- 40
f <- function(r,i1,i2=1)seq(from=r+1i*i1, to=r+1i*i2,len=n)
g <- function(i,r1,r2=1)seq(from=1i*i+r1,to=1i*i+2,len=n)
solid.lines <-
c(
f(0.1,0.5),NA,
f(0.2,0.4),NA,
f(0.3,0.3),NA,
f(0.4,0.2),NA,
f(0.5,0.0),NA,
f(0.6,0.0),NA,
f(0.7,0.0),NA,
f(0.8,0.0),NA,
f(0.9,0.0),NA,
f(1.0,0.0)
)
dotted.lines <-
c(
g(0.1,0.5),NA,
g(0.2,0.4),NA,
g(0.3,0.3),NA,
g(0.4,0.2),NA,
g(0.5,0.0),NA,
g(0.6,0.0),NA,
g(0.7,0.0),NA,
g(0.8,0.0),NA,
g(0.9,0.0),NA,
g(1.0,0.0),NA
)
plot(P(z=solid.lines,params=p),xlim=c(-4,4),ylim=c(-6,0),type="l",asp=1)
lines(P(z=dotted.lines,params=p),xlim=c(-4,4),ylim=c(-6,0),type="l",lty=2)