ellipke,ellipj | R Documentation |
Complete elliptic integrals of the first and second kind, and Jacobi elliptic integrals.
ellipke(m, tol = .Machine$double.eps)
ellipj(u, m, tol = .Machine$double.eps)
u |
numeric vector. |
m |
input vector, all input elements must satisfy |
tol |
tolerance; default is machine precision. |
ellipke
computes the complete elliptic integrals to accuracy
tol
, based on the algebraic-geometric mean.
ellipj
computes the Jacobi elliptic integrals sn
, cn
,
and dn
. For instance, sn
is the inverse function for
u = \int_0^\phi dt / \sqrt{1 - m \sin^2 t}
with sn(u) = \sin(\phi)
.
Some definitions of the elliptic functions use the modules k
instead
of the parameter m
. They are related by k^2=m=sin(a)^2
where
a
is the ‘modular angle’.
ellipke
returns list with two components, k
the values for
the first kind, e
the values for the second kind.
ellipj
returns a list with components the three Jacobi elliptic
integrals sn
, cn
, and dn
.
Abramowitz, M., and I. A. Stegun (1965). Handbook of Mathematical Functions. Dover Publications, New York.
elliptic::sn,cn,dn
x <- linspace(0, 1, 20)
ke <- ellipke(x)
## Not run:
plot(x, ke$k, type = "l", col ="darkblue", ylim = c(0, 5),
main = "Elliptic Integrals")
lines(x, ke$e, col = "darkgreen")
legend( 0.01, 4.5,
legend = c("Elliptic integral of first kind",
"Elliptic integral of second kind"),
col = c("darkblue", "darkgreen"), lty = 1)
grid()
## End(Not run)
## ellipse circumference with axes a, b
ellipse_cf <- function(a, b) {
return(4*a*ellipke(1 - (b^2/a^2))$e)
}
print(ellipse_cf(1.0, 0.8), digits = 10)
# [1] 5.672333578
## Jacobi elliptic integrals
u <- c(0, 1, 2, 3, 4, 5)
m <- seq(0.0, 1.0, by = 0.2)
je <- ellipj(u, m)
# $sn 0.0000 0.8265 0.9851 0.7433 0.4771 0.9999
# $cn 1.0000 0.5630 -0.1720 -0.6690 -0.8789 0.0135
# $dn 1.0000 0.9292 0.7822 0.8176 0.9044 0.0135
je$sn^2 + je$cn^2 # 1 1 1 1 1 1
je$dn^2 + m * je$sn^2 # 1 1 1 1 1 1
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.