Go to the documentation of this file.
42 #ifndef O2SCL_MCARLO_PLAIN_H
43 #define O2SCL_MCARLO_PLAIN_H
50 #include <boost/numeric/ublas/vector.hpp>
52 #include <o2scl/multi_funct.h>
53 #include <o2scl/mcarlo.h>
54 #include <o2scl/rng_gsl.h>
56 #ifndef DOXYGEN_NO_O2NS
72 virtual int minteg_err(func_t &func,
size_t ndim,
const vec_t &a,
73 const vec_t &b,
double &res,
double &err) {
79 double vol=1.0, m=0.0, q=0.0;
80 for(
size_t i=0;i<ndim;i++) vol*=b[i]-a[i];
82 for(
size_t n=0;n<this->
n_points;n++) {
83 for(
size_t i=0;i<ndim;i++) {
87 cc[i]=a[i]+r*(b[i]-a[i]);
98 if (this->n_points<2) {
101 err=vol*sqrt(q/(this->n_points*(this->n_points-1.0)));
111 virtual double minteg(func_t &func,
size_t ndim,
const vec_t &a,
119 virtual const char *
type() {
return "mcarlo_plain"; }
123 #ifndef DOXYGEN_NO_O2NS
double interror
The uncertainty for the last integration computation.
virtual int minteg_err(func_t &func, size_t ndim, const vec_t &a, const vec_t &b, 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)
Integrate function func over the hypercube from to for ndim-1.
unsigned long n_points
Number of integration points (default 1000)
rng_gsl_uniform_real rng_dist
The random number distribution.
The main O<span style='position: relative; top: 0.3em; font-size: 0.8em'>2</span>scl O$_2$scl names...
virtual const char * type()
Return string denoting type ("mcarlo_plain")
rng_gsl rng
The random number generator.
std::function< double(size_t, const boost::numeric::ublas::vector< double > &)> multi_funct
Multi-dimensional function typedef in src/base/multi_funct.h.
Multidimensional integration using plain Monte Carlo (GSL)
Monte-Carlo integration [abstract base].
Documentation generated with Doxygen. Provided under the
GNU Free Documentation License (see License Information).