CMP++: Uncertainty Quantification & Bayesian Calibration
Loading...
Searching...
No Matches
cmp::prior::FromDistribution< DistType > Class Template Reference

Adapts a univariate probability distribution to act as a prior on a single coordinate. More...

#include <prior++.h>

Inheritance diagram for cmp::prior::FromDistribution< DistType >:
Collaboration diagram for cmp::prior::FromDistribution< DistType >:

Public Member Functions

 FromDistribution ()=delete
 
 FromDistribution (const FromDistribution &)=default
 
 FromDistribution (FromDistribution &&)=default
 
FromDistributionoperator= (const FromDistribution &)=default
 
FromDistributionoperator= (FromDistribution &&)=default
 
 FromDistribution (const DistType &dist, size_t paramIndex)
 Constructs a Prior from a Univariate Distribution.
 
double eval (const Eigen::VectorXd &par) const override
 
double evalGradient (const Eigen::VectorXd &par, const size_t &i) const override
 
double evalHessian (const Eigen::VectorXd &par, const size_t &i, const size_t &j) const override
 
- Public Member Functions inherited from cmp::prior::Prior
virtual ~Prior ()=default
 

Static Public Member Functions

static std::shared_ptr< Priormake (const DistType &dist, size_t paramIndex)
 

Private Attributes

DistType dist_
 Underlying univariate distribution.
 
size_t paramIndex_
 Parameter vector coordinate index.
 

Detailed Description

template<typename DistType>
class cmp::prior::FromDistribution< DistType >

Adapts a univariate probability distribution to act as a prior on a single coordinate.

Mathematical Formulation Applies a univariate distribution \( \mathcal{D} \) to a specific parameter dimension \( k \):

\[ \log p(\theta) = \log p_{\mathcal{D}}(\theta_k) \]

The gradient is non-zero only for coordinate \( k \):

\[ \frac{\partial \log p(\theta)}{\partial \theta_i} = \begin{cases} \frac{d \log p_{\mathcal{D}}(\theta_k)}{d \theta_k} & \text{if } i = k \\ 0 & \text{otherwise} \end{cases} \]

The Hessian is non-zero only for diagonal entry \( (k, k) \):

\[ \frac{\partial^2 \log p(\theta)}{\partial \theta_i \partial \theta_j} = \begin{cases} \frac{d^2 \log p_{\mathcal{D}}(\theta_k)}{d \theta_k^2} & \text{if } i = j = k \\ 0 & \text{otherwise} \end{cases} \]

Implementation Algorithm Accesses parameter coordinate \( \theta_k \) and delegates log-PDF and its first/second derivative calculations to the underlying dist_ object.

Constructor & Destructor Documentation

◆ FromDistribution() [1/4]

template<typename DistType >
cmp::prior::FromDistribution< DistType >::FromDistribution ( )
delete

◆ FromDistribution() [2/4]

template<typename DistType >
cmp::prior::FromDistribution< DistType >::FromDistribution ( const FromDistribution< DistType > &  )
default

◆ FromDistribution() [3/4]

template<typename DistType >
cmp::prior::FromDistribution< DistType >::FromDistribution ( FromDistribution< DistType > &&  )
default

◆ FromDistribution() [4/4]

template<typename DistType >
cmp::prior::FromDistribution< DistType >::FromDistribution ( const DistType &  dist,
size_t  paramIndex 
)
inline

Constructs a Prior from a Univariate Distribution.

Parameters
distThe distribution instance (e.g., NormalDistribution)
paramIndexThe index in the Eigen::VectorXd this prior applies to

Member Function Documentation

◆ eval()

template<typename DistType >
double cmp::prior::FromDistribution< DistType >::eval ( const Eigen::VectorXd &  par) const
inlineoverridevirtual

Implements cmp::prior::Prior.

◆ evalGradient()

template<typename DistType >
double cmp::prior::FromDistribution< DistType >::evalGradient ( const Eigen::VectorXd &  par,
const size_t &  i 
) const
inlineoverridevirtual

Implements cmp::prior::Prior.

◆ evalHessian()

template<typename DistType >
double cmp::prior::FromDistribution< DistType >::evalHessian ( const Eigen::VectorXd &  par,
const size_t &  i,
const size_t &  j 
) const
inlineoverridevirtual

Implements cmp::prior::Prior.

◆ make()

template<typename DistType >
static std::shared_ptr< Prior > cmp::prior::FromDistribution< DistType >::make ( const DistType &  dist,
size_t  paramIndex 
)
inlinestatic

◆ operator=() [1/2]

template<typename DistType >
FromDistribution & cmp::prior::FromDistribution< DistType >::operator= ( const FromDistribution< DistType > &  )
default

◆ operator=() [2/2]

template<typename DistType >
FromDistribution & cmp::prior::FromDistribution< DistType >::operator= ( FromDistribution< DistType > &&  )
default

Member Data Documentation

◆ dist_

template<typename DistType >
DistType cmp::prior::FromDistribution< DistType >::dist_
private

Underlying univariate distribution.

◆ paramIndex_

template<typename DistType >
size_t cmp::prior::FromDistribution< DistType >::paramIndex_
private

Parameter vector coordinate index.


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