gsl_miser Class Template Reference

Multidimensional integration using Miser Monte Carlo (GSL). More...

#include <gsl_miser.h>

Inheritance diagram for gsl_miser:

mcarlo_inte multi_inte

Detailed Description

template<class param_t, class func_t = multi_funct<param_t>, class rng_t = gsl_rnga, class vec_t = ovector_base, class alloc_vec_t = ovector, class alloc_t = ovector_alloc>
class gsl_miser< param_t, func_t, rng_t, vec_t, alloc_vec_t, alloc_t >

Idea for future:
Rewrite the interface so that min_calls and min_calls_per_bisection are arguments to the miser_minteg_err() function. Also, allow the user to modify these values while still using the minteg() and minteg_err() functions.
Idea for future:
The testing file requires setting err_nonconv to true in the composite_inte section. Fix this.
Based on Press90 .

Definition at line 74 of file gsl_miser.h.


Public Member Functions

virtual int allocate (size_t ldim)
 Allocate memory.
virtual int free ()
 Free allocated memory.
virtual int miser_minteg_err (func_t &func, size_t ndim, const vec_t &xl, const vec_t &xu, size_t calls, param_t &pa, double &res, double &err)
 Integrate function func over the hypercube from $ x_i=\mathrm{xl}_i $ to $ x_i=\mathrm{xu}_i $ for $ 0<i< $ ndim-1.
virtual int minteg_err (func_t &func, size_t ndim, const vec_t &a, const vec_t &b, param_t &pa, double &res, double &err)
 Integrate function func from x=a to x=b.
virtual double minteg (func_t &func, size_t ndim, const vec_t &a, const vec_t &b, param_t &pa)
 Integrate function func over the hypercube from $ x_i=a_i $ to $ x_i=b_i $ for $ 0<i< $ ndim-1.
virtual const char * type ()
 Return string denoting type ("gsl_miser").

Data Fields

double dither
 Introduce random variation into bisection (default 0.0).
double estimate_frac
 Specify fraction of function calls for estimating variance (default 0.1).
double alpha
 How estimated variances for two sub-regions are combined (default 2.0).
size_t min_calls
 Minimum number of calls to estimate the variance.
size_t min_calls_per_bisection
 Minimum number of calls required to proceed with bisection.

Protected Member Functions

virtual int estimate_corrmc (func_t &func, size_t ndim, const vec_t &xl, const vec_t &xu, param_t &pa, size_t calls, double &res, double &err, const double lxmid[], double lsigma_l[], double lsigma_r[])
 Esimate the variance.

Protected Attributes

size_t dim
 The number of dimensions.
alloc_t ao
 Memory allocator.
alloc_vec_t x
 The most recent integration point.
Arrays which contain a value for each dimension
double * xmid
 The current midpoint.
double * sigma_l
 The left variance.
double * sigma_r
 The right variance.
double * fmax_l
 The maximum function value in the left half.
double * fmax_r
 The maximum function value in the right half.
double * fmin_l
 The minimum function value in the left half.
double * fmin_r
 The minimum function value in the right half.
double * fsum_l
 The sum in the left half.
double * fsum_r
 The sum in the right half.
double * fsum2_l
 The sum of the squares in the left half.
double * fsum2_r
 The sum of the squares in the right half.
size_t * hits_l
 The number of evaluation points in the left half.
size_t * hits_r
 The number of evaluation points in the right half.

Member Function Documentation

virtual double minteg ( func_t &  func,
size_t  ndim,
const vec_t &  a,
const vec_t &  b,
param_t &  pa 
) [inline, virtual]

This function is just a wrapper to minteg_err() which allocates the memory, sets min_calls and min_calls_per_bisection, calls miser_minteg_err(), and then frees the previously allocated memory.

Reimplemented from multi_inte.

Definition at line 642 of file gsl_miser.h.

virtual int minteg_err ( func_t &  func,
size_t  ndim,
const vec_t &  a,
const vec_t &  b,
param_t &  pa,
double &  res,
double &  err 
) [inline, virtual]

This function is just a wrapper to miser_minteg_err() which allocates the memory, sets min_calls and min_calls_per_bisection, calls miser_minteg_err(), and then frees the previously allocated memory.

Implements multi_inte.

Definition at line 622 of file gsl_miser.h.

virtual int miser_minteg_err ( func_t &  func,
size_t  ndim,
const vec_t &  xl,
const vec_t &  xu,
size_t  calls,
param_t &  pa,
double &  res,
double &  err 
) [inline, virtual]

Note:
The values of min_calls and min_calls_per_bisection must be set before calling this function.

Definition at line 381 of file gsl_miser.h.


Field Documentation

double alpha

From GSL documentation:

      This parameter controls how the estimated variances for the two
      sub-regions of a bisection are combined when allocating points.
      With recursive sampling the overall variance should scale better
      than 1/N, since the values from the sub-regions will be obtained
      using a procedure which explicitly minimizes their variance.  To
      accommodate this behavior the MISER algorithm allows the total
      variance to depend on a scaling parameter \alpha,
	
      \Var(f) = {\sigma_a \over N_a^\alpha} + {\sigma_b \over N_b^\alpha}.
	
      The authors of the original paper describing MISER recommend the
      value \alpha = 2 as a good choice, obtained from numerical
      experiments, and this is used as the default value in this
      implementation.
      

Definition at line 129 of file gsl_miser.h.

double dither

From GSL documentation:

      This parameter introduces a random fractional variation of size
      DITHER into each bisection, which can be used to break the
      symmetry of integrands which are concentrated near the exact
      center of the hypercubic integration region.  The default value of
      dither is zero, so no variation is introduced. If needed, a
      typical value of DITHER is 0.1.
      

Definition at line 92 of file gsl_miser.h.

double estimate_frac

From GSL documentation:

      This parameter specifies the fraction of the currently available
      number of function calls which are allocated to estimating the
      variance at each recursive step. The default value is 0.1.
      

Definition at line 105 of file gsl_miser.h.

size_t min_calls

This is set by minteg() and minteg_err() to be 16 times the number of dimensions in the problem (the GSL default).

From GSL documentation:

      This parameter specifies the minimum number of function calls
      required for each estimate of the variance. If the number of
      function calls allocated to the estimate using ESTIMATE_FRAC falls
      below MIN_CALLS then MIN_CALLS are used instead.  This ensures
      that each estimate maintains a reasonable level of accuracy.  The
      default value of MIN_CALLS is `16 * dim'.
      

Definition at line 147 of file gsl_miser.h.

This is set by minteg() and minteg_err() to be 512 times the number of dimensions in the problem (the GSL default).

From GSL documentation:

      This parameter specifies the minimum number of function calls
      required to proceed with a bisection step.  When a recursive step
      has fewer calls available than MIN_CALLS_PER_BISECTION it performs
      a plain Monte Carlo estimate of the current sub-region and
      terminates its branch of the recursion.  The default value of this
      parameter is `32 * min_calls'.
      

Definition at line 165 of file gsl_miser.h.


The documentation for this class was generated from the following file:

Documentation generated with Doxygen and provided under the GNU Free Documentation License. See License Information for details.

Project hosting provided by SourceForge.net Logo, O2scl Sourceforge Project Page