Monte Carlo Integration Library 1.0
High-performance Monte Carlo methods for numerical integration and optimization
Public Member Functions | List of all members
mc::integrators::ISMontecarloIntegrator< dim > Class Template Reference

Importance sampling Monte Carlo integrator. More...

#include <ISintegrator.hpp>

Inheritance diagram for mc::integrators::ISMontecarloIntegrator< dim >:
Collaboration diagram for mc::integrators::ISMontecarloIntegrator< dim >:

Public Member Functions

 ISMontecarloIntegrator (const mc::domains::IntegrationDomain< dim > &d)
 Construct an importance sampling integrator.
 
double integrate (const std::function< double(const mc::geom::Point< dim > &)> &f, int n_samples, const mc::proposals::Proposal< dim > &proposal, std::uint32_t seed) override
 Compute the integral using importance sampling.
 
- Public Member Functions inherited from mc::integrators::Integrator< dim >
 Integrator (const mc::domains::IntegrationDomain< dim > &d)
 Constructs an integrator for a specific domain.
 
virtual ~Integrator ()=default
 Virtual destructor for proper polymorphic cleanup.
 

Additional Inherited Members

- Protected Member Functions inherited from mc::integrators::Integrator< dim >
std::vector< mc::geom::Point< dim > > initializeRandomizer (int numbers)
 Initializes random samples uniformly distributed in the domain.
 
- Protected Attributes inherited from mc::integrators::Integrator< dim >
const mc::domains::IntegrationDomain< dim > & domain
 Reference to the integration domain.
 
std::vector< std::mt19937 > randomizer
 Per-thread random number generators.
 

Detailed Description

template<std::size_t dim>
class mc::integrators::ISMontecarloIntegrator< dim >

Importance sampling Monte Carlo integrator.

Template Parameters
dimDimensionality of the integration domain.

Computes the integral using importance sampling: ∫_Ω f(x) dx = ∫_Ω [f(x)/q(x)] · q(x) dx ≈ (1/N) ∑ᵢ [f(xᵢ)/q(xᵢ)]

where q(x) is a proposal distribution chosen to approximate f(x). This reduces variance compared to uniform sampling when q resembles f.

Note
The proposal should be chosen carefully to match the integrand's shape.

Definition at line 40 of file ISintegrator.hpp.

Constructor & Destructor Documentation

◆ ISMontecarloIntegrator()

template<std::size_t dim>
mc::integrators::ISMontecarloIntegrator< dim >::ISMontecarloIntegrator ( const mc::domains::IntegrationDomain< dim > &  d)
explicit

Construct an importance sampling integrator.

Parameters
dReference to the integration domain.

Member Function Documentation

◆ integrate()

template<std::size_t dim>
double mc::integrators::ISMontecarloIntegrator< dim >::integrate ( const std::function< double(const mc::geom::Point< dim > &)> &  f,
int  n_samples,
const mc::proposals::Proposal< dim > &  proposal,
std::uint32_t  seed 
)
overridevirtual

Compute the integral using importance sampling.

Parameters
fIntegrand function: ℝⁿ → ℝ.
n_samplesNumber of samples drawn from the proposal.
proposalCustom sampling distribution q(x). Should approximate f(x) to minimize variance.
seedRandom seed for reproducibility.
Returns
Estimated integral ∫_Ω f(x) dx with reduced variance.

Uses ISMeanEstimator to compute weighted average: (1/N) ∑ᵢ [f(xᵢ)/q(xᵢ)] where xᵢ ~ q.

Implements mc::integrators::Integrator< dim >.


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