Monte Carlo Integration Library
1.0
High-performance Monte Carlo methods for numerical integration and optimization
src
montecarlo
proposals
gaussianProposal.hpp
Go to the documentation of this file.
1
// gaussianProposal.hpp
16
#ifndef MONTECARLO_1_GAUSSIAN_PROPOSAL_HPP
17
#define MONTECARLO_1_GAUSSIAN_PROPOSAL_HPP
18
19
#include "
proposal.hpp
"
20
#include "../domains/integration_domain.hpp"
21
22
#include <array>
23
#include <cmath>
24
#include <random>
25
#include <stdexcept>
26
#include <vector>
27
28
namespace
mc
{
29
namespace
proposals {
30
31
template
<
size_t
dim>
32
class
GaussianProposal
:
public
Proposal
<dim>
33
{
34
public
:
35
GaussianProposal
(
const
mc::domains::IntegrationDomain<dim>
& d,
36
const
std::vector<double>& mean,
37
const
std::vector<double>& sigma);
38
39
mc::geom::Point<dim>
sample
(std::mt19937& rng)
const override
;
40
double
pdf
(
const
mc::geom::Point<dim>
& x)
const override
;
41
42
private
:
43
const
mc::domains::IntegrationDomain<dim>
& domain;
// kept for consistency / future use
44
45
std::vector<double> mu;
46
std::vector<double> sig;
47
std::vector<double> inv_sig2;
// 1/(sigma^2)
48
49
double
log_norm_const = 0.0;
// log((2pi)^(-d/2) * prod_i (1/sigma_i))
50
51
void
init_from_mu_sig_();
52
};
53
54
}
// namespace proposals
55
}
// namespace mc
56
57
#include "
gaussianProposal.tpp
"
58
59
#endif
// MONTECARLO_1_GAUSSIAN_PROPOSAL_HPP
mc::domains::IntegrationDomain
Abstract base class for N-dimensional integration domains.
Definition
integration_domain.hpp:29
mc::geom::Point
N-dimensional point representation.
Definition
geometry.hpp:32
mc::proposals::GaussianProposal
Definition
gaussianProposal.hpp:33
mc::proposals::GaussianProposal::GaussianProposal
GaussianProposal(const mc::domains::IntegrationDomain< dim > &d, const std::vector< double > &mean, const std::vector< double > &sigma)
mc::proposals::GaussianProposal::pdf
double pdf(const mc::geom::Point< dim > &x) const override
Evaluate the proposal probability density function.
mc::proposals::GaussianProposal::sample
mc::geom::Point< dim > sample(std::mt19937 &rng) const override
Draw a random sample from the proposal distribution.
mc::proposals::Proposal
Abstract proposal distribution interface.
Definition
proposal.hpp:29
gaussianProposal.tpp
mc
Definition
hypercylinder.hpp:15
proposal.hpp
Abstract base for probability distributions used in importance sampling.
Generated by
1.9.8