adapt                 package:adapt                 R Documentation

_A_d_a_p_t_i_v_e _I_n_t_e_g_r_a_t_i_o_n _i_n _2-_2_0 _D_i_m_e_n_s_i_o_n_s.

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

     `adapt()' integrates a scalar function over a multidimensional
     rectangle, ie computes  

                  integral[l .. u] functn(t) d^n(t)

     where l =`lower', u =`upper', n =`ndim'. Infinite rectangles are
     not allowed, and `ndim' must be between 2 and 20.

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

     adapt(ndim, lower, upper, minpts, maxpts, functn, eps,...)

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

    ndim: the number of dimensions of the function/integral

   lower: vector of at least length ndim of the lower bounds on the
          integral

   upper: vector of at least length ndim of the upper bounds on the
          integral

  minpts: the minimum number of function evaluations

  maxpts: the maximum number of function evaluations or NULL 

  functn: the name of an R function. `functn' should take a single
          vector argument and possibly some parameters and return the
          function value at that point.  `functn' must return a single
          numeric value.

     eps: The desired accuracy for the relative error.

     ...: Other parameters to be passed to `functn'

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

     This is modified from Mike Meyer's S code. The functions just call
     A.C. Genz's fortran ADAPT subroutine to do all of the
     calculations.  A work array is allocated within the C/Fortran
     code. 

     The Fortran function has been modified to use double precision,
     for compatibility with R. It only works in two or more dimensions;
     for one-dimensional integrals use the `integrate' function in base
     R.

     Setting maxpts to NULL asks the function to keep doubling maxpts
     (starting at `max(minpts,500)') until the desired precision is
     achieved or R runs out of memory.

_V_a_l_u_e:

     A list of `class "integration"' with components 

   value: the estimated integral

  relerr: the estimated relative error; `< eps' argument if

  minpts: the actual number of function evaluations

   ifail: an error indicator.  If ifail is not equal to 0, the function
          warns the user of the error condition.

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

     `integrate'

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

     ## Example of a three dimensional spherical normal distribution:
     ir2pi <- 1/sqrt(2*pi)
     fred <- function(z) { ir2pi^length(z) * exp(-0.5 * sum(z * z))}
     ## not enough evaluations
     adapt(3, c(-2,-2,-2),c(2,2,2),100,300,fred,.01)
     ## enough evaluations
     adapt(3, c(-2,-2,-2),c(2,2,2),100,600,fred,.01) 
     ## no upper limit 
     ## this took 7465 points, ie 5 attempts (on an Athlon/gcc/g77)
     adapt(3, c(-2,-2,-2),c(2,2,2),100,NULL,fred,.00001)

