Learn R Programming

gsl (version 2.1-1)

Ellint: Elliptic functions

Description

Elliptic functions as per the Gnu Scientific Library, reference manual section 7.13 and AMS-55, chapter 17. These functions are declared in header file gsl_sf_ellint.h

Usage

ellint_Kcomp(k, mode=0, give=FALSE,strict=TRUE) ellint_Ecomp(k, mode=0, give=FALSE,strict=TRUE) ellint_F(phi,k, mode=0, give=FALSE,strict=TRUE) ellint_E(phi,k, mode=0, give=FALSE,strict=TRUE) ellint_P(phi,k,n, mode=0, give=FALSE,strict=TRUE) ellint_D(phi,k, mode=0, give=FALSE,strict=TRUE) ellint_RC(x, y, mode=0, give=FALSE,strict=TRUE) ellint_RD(x, y, z, mode=0, give=FALSE,strict=TRUE) ellint_RF(x, y, z, mode=0, give=FALSE,strict=TRUE) ellint_RJ(x, y, z, p, mode=0, give=FALSE,strict=TRUE)

Arguments

phi,k,n,p,x,y,z
input: real values
give
Boolean, with default FALSE meaning to return just the answers, and TRUE meaning to return a status vector as well
strict
Boolean
mode
input: mode. For GSL_PREC_DOUBLE, GSL_PREC_SINGLE, GSL_PREC_APPROX use 0,1,2 respectively.

References

http://www.gnu.org/software/gsl

Examples

Run this code
ellint_Kcomp(0.3)
ellint_Ecomp(0.3)
ellint_F(0.4,0.7)
ellint_E(0.4,0.7)
ellint_P(0.4,0.7,0.3)
ellint_D(0.4,0.3)
ellint_RC(0.5,0.6)
ellint_RD(0.5,0.6,0.7)
ellint_RF(0.5,0.6,0.7)
ellint_RJ(0.5,0.6,0.7,0.1)


x <- seq(from=0,to=0.5,by=0.01)
col1 <- ellint_Kcomp(sqrt(x))
col2 <- ellint_Kcomp(sqrt(1-x))
col3 <- exp(-pi*col2/col1)
cbind(x,col1,col2,col3)         #table 17.1, p608

x <- 0:45
col1 <- ellint_Kcomp(sin(pi/180*x))
col2 <- ellint_Kcomp(sin(pi/2-pi/180*x))
col3 <- exp(-pi*col2/col1)
cbind(x,col1,col2,col3)       #table 17.2, p610

x <- seq(from=0,to=90,by=2)
f <- function(a){ellint_F(phi=a*pi/180,sin(x*pi/180))}
g <- function(a){ellint_E(phi=a*pi/180,sin(x*pi/180))}
h <- function(a,n){ellint_P(phi=a*pi/180,sin( a*15*pi/180),n)}
i <- function(x){ellint_P(phi=x*pi/180, k=sin((0:6)*15*pi/180),  n= -0.6)}


cbind(x,f(5),f(10),f(15),f(20),f(25),f(30))          #table 17.5, p613
cbind(x,g(5),g(10),g(15),g(20),g(25),g(30))          #table 17.6, p616



cbind(i(15),i(30),i(45),i(60),i(75),i(90))           #table 17.9,
                                                     #(BOTTOM OF p625)


Run the code above in your browser using DataLab