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

General Matérn covariance function. More...

#include <covariance.h>

Inheritance diagram for cmp::covariance::Matern:
Collaboration diagram for cmp::covariance::Matern:

Public Member Functions

 Matern (const Matern &)=default
 
 Matern (Matern &&)=default
 
Maternoperator= (const Matern &)=default
 
Maternoperator= (Matern &&)=default
 
 Matern (const size_t &index, const double &nu, const int &indexX=-1)
 
double eval (const Eigen::VectorXd &x1, const Eigen::VectorXd &x2, const Eigen::VectorXd &par) const
 
double evalGradient (const Eigen::VectorXd &x1, const Eigen::VectorXd &x2, const Eigen::VectorXd &par, const size_t &i) const
 
double evalHessian (const Eigen::VectorXd &x1, const Eigen::VectorXd &x2, const Eigen::VectorXd &par, const size_t &i, const size_t &j) const
 
- Public Member Functions inherited from cmp::covariance::Covariance
virtual ~Covariance ()=default
 

Static Public Member Functions

static std::shared_ptr< Covariancemake (const size_t &l, const double &nu, const int &i)
 

Private Attributes

size_t index_
 Hyperparameter index for the lengthscale parameter.
 
int indexX_
 Dimension index to evaluate, or -1 for the full isotropic kernel.
 
double nu_
 Smoothness parameter nu.
 

Detailed Description

General Matérn covariance function.

Mathematical Formulation Evaluates the Matérn covariance function between two inputs \(\mathbf{x}_1, \mathbf{x}_2\):

\[ k(\mathbf{x}_1, \mathbf{x}_2) = \frac{2^{1-\nu}}{\Gamma(\nu)} \left( \frac{\sqrt{2\nu}d}{\ell} \right)^\nu K_\nu\left( \frac{\sqrt{2\nu}d}{\ell} \right) \]

where \(d\) is the distance, \(\ell = \theta_{\text{index}}\) is the lengthscale hyperparameter, \(\nu\) is the smoothness parameter, \(\Gamma\) is the Gamma function, and \(K_\nu\) is the modified Bessel function of the second kind.

Implementation Algorithm

  1. Computes distance \(d\) and scaling parameter \(r = \frac{\sqrt{2\nu}d}{\ell}\).
  2. Evaluates the term using std::tgamma and Boost's boost::math::cyl_bessel_k implementation of the modified Bessel function.
  3. Evaluates analytical derivatives with respect to the lengthscale \(\ell\).

Constructor & Destructor Documentation

◆ Matern() [1/3]

cmp::covariance::Matern::Matern ( const Matern )
default

◆ Matern() [2/3]

cmp::covariance::Matern::Matern ( Matern &&  )
default

◆ Matern() [3/3]

cmp::covariance::Matern::Matern ( const size_t &  index,
const double &  nu,
const int &  indexX = -1 
)
inline

Member Function Documentation

◆ eval()

double cmp::covariance::Matern::eval ( const Eigen::VectorXd &  x1,
const Eigen::VectorXd &  x2,
const Eigen::VectorXd &  par 
) const
inlinevirtual

◆ evalGradient()

double cmp::covariance::Matern::evalGradient ( const Eigen::VectorXd &  x1,
const Eigen::VectorXd &  x2,
const Eigen::VectorXd &  par,
const size_t &  i 
) const
inlinevirtual

◆ evalHessian()

double cmp::covariance::Matern::evalHessian ( const Eigen::VectorXd &  x1,
const Eigen::VectorXd &  x2,
const Eigen::VectorXd &  par,
const size_t &  i,
const size_t &  j 
) const
inlinevirtual

◆ make()

static std::shared_ptr< Covariance > cmp::covariance::Matern::make ( const size_t &  l,
const double &  nu,
const int &  i 
)
inlinestatic

◆ operator=() [1/2]

Matern & cmp::covariance::Matern::operator= ( const Matern )
default

◆ operator=() [2/2]

Matern & cmp::covariance::Matern::operator= ( Matern &&  )
default

Member Data Documentation

◆ index_

size_t cmp::covariance::Matern::index_
private

Hyperparameter index for the lengthscale parameter.

◆ indexX_

int cmp::covariance::Matern::indexX_
private

Dimension index to evaluate, or -1 for the full isotropic kernel.

◆ nu_

double cmp::covariance::Matern::nu_
private

Smoothness parameter nu.


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