Special                 package:base                 R Documentation

Special Functions of Mathematics

Description:

     Special mathematical functions related to the beta and gamma
     functions.

Usage:

     beta(a, b)
     lbeta(a, b)
     gamma(x)
     lgamma(x)
     digamma(x)
     trigamma(x)
     tetragamma(x)
     pentagamma(x)
     choose(n, k)
     lchoose(n, k)

Arguments:

 a, b, x: numeric vectors.

    n, k: integer vectors.

Details:

     The functions `beta' and `lbeta' return the beta function and the
     natural logarithm of the beta function,

              B(a,b) = (Gamma(a)Gamma(b))/(Gamma(a+b)).


     The functions `gamma' and `lgamma' return the gamma function
     Gamma(x) and the natural logarithm of the absolute value of the
     gamma function.

     The functions `digamma', `trigamma', `tetragamma' and `pentagamma'
     return the first, second, third and fourth derivatives of the
     logarithm of the gamma function.

  `digamma(x)' = psi(x) = d/dx {ln Gamma(x)} = Gamma'(x) / Gamma(x)


     The functions `choose' and `lchoose' return binomial coefficients
     and their logarithms.

References:

     Abramowitz, M. and Stegun, I. A. (1972) Handbook of Mathematical
     Functions. New York: Dover. Chapter 6: Gamma and Related
     Functions.

See Also:

     `Arithmetic' for simple, `sqrt' for miscellaneous mathematical
     functions and `Bessel' for the real Bessel functions.

Examples:

     choose(5, 2)
     for (n in 0:10) print(choose(n, k = 0:n))

     curve(gamma(x),-3,4, n=1001, ylim=c(-10,100),
           col="red", lwd=2, main="gamma(x)")
     abline(h=0,v=0, lty=3, col="midnightblue")

     x <- seq(.1, 4, length = 201); dx <- diff(x)[1]
     par(mfrow = c(2, 3))
     for (ch in c("", "l","di","tri","tetra","penta")) {
       is.deriv <- nchar(ch) >= 2
       if (is.deriv) dy <- diff(y) / dx
       nm <- paste(ch, "gamma", sep = "")
       y <- get(nm)(x)
       plot(x, y, type = "l", main = nm, col = "red")
       abline(h = 0, col = "lightgray")
       if (is.deriv) lines(x[-1], dy, col = "blue", lty = 2)
     }
     par(mfrow = c(2, 2))

