Special                 package:base                 R Documentation

_S_p_e_c_i_a_l _F_u_n_c_t_i_o_n_s _o_f _M_a_t_h_e_m_a_t_i_c_s

_D_e_s_c_r_i_p_t_i_o_n:

     Special mathematical functions related to the beta and gamma
     functions.

_U_s_a_g_e:

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

_A_r_g_u_m_e_n_t_s:

 a, b, x: numeric vectors.

    n, k: integer vectors.

_D_e_t_a_i_l_s:

     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.

_R_e_f_e_r_e_n_c_e_s:

     Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) _The New S
     Language_. Wadsworth & Brooks/Cole. (for 'gamma' and 'lgamma'.)

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

_S_e_e _A_l_s_o:

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

_E_x_a_m_p_l_e_s:

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

     ## gamma has discontinuities are 0, -1, -2, ...
     ## Don't run: 
     ## use plots of points to show this.
     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")
     ## End Don't run

     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)
     }

