CMP++: Uncertainty Quantification & Bayesian Calibration
Loading...
Searching...
No Matches
cmp::distribution::MultivariateNormalDistribution Class Reference

#include <distribution.h>

Inheritance diagram for cmp::distribution::MultivariateNormalDistribution:
Collaboration diagram for cmp::distribution::MultivariateNormalDistribution:

Public Member Functions

 MultivariateNormalDistribution (const Eigen::Ref< const Eigen::VectorXd > &mean, const Eigen::Ref< const Eigen::MatrixXd > &cov)
 
template<typename MatrixType >
 MultivariateNormalDistribution (const Eigen::Ref< const Eigen::VectorXd > &mean, const Eigen::LDLT< MatrixType > &ldltDecomposition)
 
 MultivariateNormalDistribution ()=default
 
double logPDF (const Eigen::Ref< const Eigen::VectorXd > &x) const
 
double logJumpPDF (const Eigen::Ref< const Eigen::VectorXd > &jump)
 
double squaredMahalanobis (const Eigen::Ref< const Eigen::VectorXd > &jump) const
 
Eigen::VectorXd sample (std::default_random_engine &rng, const double &gamma=1.0)
 
Eigen::VectorXd get () const
 
void set (const Eigen::Ref< const Eigen::VectorXd > &x)
 
void setMean (const Eigen::Ref< const Eigen::VectorXd > &mean)
 
void setLdltDecomposition (const Eigen::LDLT< Eigen::MatrixXd > &ldltDecomposition)
 
Eigen::MatrixXd toCanonical (const Eigen::MatrixXd &x) const
 
Eigen::MatrixXd toPhysical (const Eigen::MatrixXd &z) const
 
size_t dimension () const
 
- Public Member Functions inherited from cmp::distribution::ProposalDistribution< MultivariateNormalDistribution >
double logJumpPDF (const Eigen::Ref< const Eigen::VectorXd > &jump)
 
Eigen::VectorXd sample (std::default_random_engine &rng, const double &gamma)
 
Eigen::VectorXd sample (std::default_random_engine &rng)
 
double squaredMahalanobis (const Eigen::Ref< const Eigen::VectorXd > &jump) const
 
Eigen::VectorXd get () const
 
void set (const Eigen::Ref< const Eigen::VectorXd > &x)
 
- Public Member Functions inherited from cmp::distribution::MultivariateDistribution< Derived >
double logPDF (const Eigen::Ref< const Eigen::VectorXd > &x) const
 Computes the joint log probability density function (log-PDF) of the distribution.
 
Eigen::VectorXd sample (std::default_random_engine &rng)
 Draws a single vector sample from the joint distribution.
 
Eigen::MatrixXd toCanonical (const Eigen::MatrixXd &x) const
 Transforms physical samples to standard canonical space.
 
Eigen::MatrixXd fromCanonical (const Eigen::MatrixXd &x) const
 Transforms standard canonical samples back to physical space.
 
size_t dimension () const
 Returns the dimensionality of the multivariate space.
 

Static Public Member Functions

static double logPDF (const Eigen::Ref< const Eigen::VectorXd > &res, const Eigen::LDLT< Eigen::MatrixXd > &ldltDecomposition)
 
static double dLogPDF (const Eigen::Ref< const Eigen::VectorXd > &res, const Eigen::LDLT< Eigen::MatrixXd > &ldltDecomposition, const Eigen::Ref< const Eigen::MatrixXd > &cov_gradient, const Eigen::Ref< const Eigen::VectorXd > &mean_gradient)
 
static double ddLogPDF (const Eigen::Ref< const Eigen::VectorXd > &res, const Eigen::LDLT< Eigen::MatrixXd > &ldltDecomposition, const Eigen::Ref< const Eigen::MatrixXd > &cov_gradient_l, const Eigen::Ref< const Eigen::MatrixXd > &cov_gradient_k, const Eigen::Ref< const Eigen::MatrixXd > &cov_hessian)
 
static MultivariateNormalDistribution canonical (const size_t dim)
 

Private Attributes

Eigen::VectorXd mean_
 Mean vector.
 
Eigen::LDLT< Eigen::MatrixXd > ldltDecomposition_
 LDLT decomposition of the covariance matrix.
 
std::normal_distribution< doubledistN_
 Univariate normal helper for coordinate-wise sampling.
 

Constructor & Destructor Documentation

◆ MultivariateNormalDistribution() [1/3]

cmp::distribution::MultivariateNormalDistribution::MultivariateNormalDistribution ( const Eigen::Ref< const Eigen::VectorXd > &  mean,
const Eigen::Ref< const Eigen::MatrixXd > &  cov 
)
inline

◆ MultivariateNormalDistribution() [2/3]

template<typename MatrixType >
cmp::distribution::MultivariateNormalDistribution::MultivariateNormalDistribution ( const Eigen::Ref< const Eigen::VectorXd > &  mean,
const Eigen::LDLT< MatrixType > &  ldltDecomposition 
)
inline

◆ MultivariateNormalDistribution() [3/3]

cmp::distribution::MultivariateNormalDistribution::MultivariateNormalDistribution ( )
default

Member Function Documentation

◆ canonical()

static MultivariateNormalDistribution cmp::distribution::MultivariateNormalDistribution::canonical ( const size_t  dim)
inlinestatic

◆ ddLogPDF()

static double cmp::distribution::MultivariateNormalDistribution::ddLogPDF ( const Eigen::Ref< const Eigen::VectorXd > &  res,
const Eigen::LDLT< Eigen::MatrixXd > &  ldltDecomposition,
const Eigen::Ref< const Eigen::MatrixXd > &  cov_gradient_l,
const Eigen::Ref< const Eigen::MatrixXd > &  cov_gradient_k,
const Eigen::Ref< const Eigen::MatrixXd > &  cov_hessian 
)
inlinestatic

◆ dimension()

size_t cmp::distribution::MultivariateNormalDistribution::dimension ( ) const
inline

◆ dLogPDF()

static double cmp::distribution::MultivariateNormalDistribution::dLogPDF ( const Eigen::Ref< const Eigen::VectorXd > &  res,
const Eigen::LDLT< Eigen::MatrixXd > &  ldltDecomposition,
const Eigen::Ref< const Eigen::MatrixXd > &  cov_gradient,
const Eigen::Ref< const Eigen::VectorXd > &  mean_gradient 
)
inlinestatic

◆ get()

Eigen::VectorXd cmp::distribution::MultivariateNormalDistribution::get ( ) const
inline

◆ logJumpPDF()

double cmp::distribution::MultivariateNormalDistribution::logJumpPDF ( const Eigen::Ref< const Eigen::VectorXd > &  jump)
inline

◆ logPDF() [1/2]

static double cmp::distribution::MultivariateNormalDistribution::logPDF ( const Eigen::Ref< const Eigen::VectorXd > &  res,
const Eigen::LDLT< Eigen::MatrixXd > &  ldltDecomposition 
)
inlinestatic

◆ logPDF() [2/2]

double cmp::distribution::MultivariateNormalDistribution::logPDF ( const Eigen::Ref< const Eigen::VectorXd > &  x) const
inline

◆ sample()

Eigen::VectorXd cmp::distribution::MultivariateNormalDistribution::sample ( std::default_random_engine &  rng,
const double gamma = 1.0 
)
inline

◆ set()

void cmp::distribution::MultivariateNormalDistribution::set ( const Eigen::Ref< const Eigen::VectorXd > &  x)
inline

◆ setLdltDecomposition()

void cmp::distribution::MultivariateNormalDistribution::setLdltDecomposition ( const Eigen::LDLT< Eigen::MatrixXd > &  ldltDecomposition)
inline

◆ setMean()

void cmp::distribution::MultivariateNormalDistribution::setMean ( const Eigen::Ref< const Eigen::VectorXd > &  mean)
inline

◆ squaredMahalanobis()

double cmp::distribution::MultivariateNormalDistribution::squaredMahalanobis ( const Eigen::Ref< const Eigen::VectorXd > &  jump) const
inline

◆ toCanonical()

Eigen::MatrixXd cmp::distribution::MultivariateNormalDistribution::toCanonical ( const Eigen::MatrixXd &  x) const
inline

◆ toPhysical()

Eigen::MatrixXd cmp::distribution::MultivariateNormalDistribution::toPhysical ( const Eigen::MatrixXd &  z) const
inline

Member Data Documentation

◆ distN_

std::normal_distribution<double> cmp::distribution::MultivariateNormalDistribution::distN_
private

Univariate normal helper for coordinate-wise sampling.

◆ ldltDecomposition_

Eigen::LDLT<Eigen::MatrixXd> cmp::distribution::MultivariateNormalDistribution::ldltDecomposition_
private

LDLT decomposition of the covariance matrix.

◆ mean_

Eigen::VectorXd cmp::distribution::MultivariateNormalDistribution::mean_
private

Mean vector.


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