MUQ  0.4.3
muq::Approximation::SeparableKarhunenLoeve Class Reference

Implements KL expansions that take advantage of separable structure in both the domain and covariance kernel. More...

#include <SeparableKarhunenLoeve.h>

Detailed Description

Implements KL expansions that take advantage of separable structure in both the domain and covariance kernel.

@seealso KarhunenLoeveExpansion

Background

Consider a two dimensional covariance kernel of the form \(k((x,y),(x^\prime, y^\prime))\) that can be written as

\[ k((x,y),(x^\prime, y^\prime)) = k_x(x,x^\prime)k_y(y,y^\prime). \]

This type of kernel is separable in all of its components. It is also possible to have kernels that are partially separable. For example, a three dimensional kernel \(k_2((x,y,z),(x^\prime, y^\prime,z^\prime))\) might be separable in \(x\) and \((y,z)\) but not all three components. This would result in a decomposition of the form

\[ k_2((x,y,z),(x^\prime, y^\prime,z^\prime)) = k_x(x,x^\prime) k_{yz}((y,z), (y^\prime,z^\prime)). \]

In both the separable and partially separable cases, it can often be more efficient to construct the KL decompositions for each component kernel (e.g., \(k_x, k_y, \ldots\)) seperately and then combine the individual expansions to form an expansion for the original kernel. This is possible when the full-dimensional seed points are formed from a tensor product of points in the separable dimensions.

Definition at line 41 of file SeparableKarhunenLoeve.h.

Public Member Functions

 SeparableKarhunenLoeve (std::vector< std::shared_ptr< KernelBase >> kernelsIn, std::vector< Eigen::MatrixXd > const &seedPtsIn, std::vector< Eigen::VectorXd > const &seedWtsIn, boost::property_tree::ptree options=boost::property_tree::ptree())
 
virtual Eigen::MatrixXd GetModes (Eigen::Ref< const Eigen::MatrixXd > const &pts) const override
 
virtual unsigned int NumModes () const override
 

Constructor & Destructor Documentation

◆ SeparableKarhunenLoeve()

SeparableKarhunenLoeve::SeparableKarhunenLoeve ( std::vector< std::shared_ptr< KernelBase >>  kernelsIn,
std::vector< Eigen::MatrixXd > const &  seedPtsIn,
std::vector< Eigen::VectorXd > const &  seedWtsIn,
boost::property_tree::ptree  options = boost::property_tree::ptree() 
)

Construct the separable expansion from a list of the seperate kernels and seed points/weights.

Parameters
[in]kernelsInA vector of kernels for each separable component. Note: Each individual kernel can be defined with multiple input dimensions, but there can be no shared dimensions between kernels. As an example, the three component kernel \(k_2((x,y,z),(x^\prime, y^\prime,z^\prime))\) mentioned above would have one kernel that depended on dimension "{0}" and another that depended on dimensions "{1,2}", which is allowed. However, the first kernel could not depend on "{0,1}", because then both kernels would depend on the second "y" component and the product would no long be separable.
[in]seedPtsInA vector of seed points for each component. The length of this vector must match the length of the kernels vector. Each component of the vector is an \(N\times M\) matrix, where \(N\) is the number of inputs to the kernel (e.g., 1 for \(k_x\) and 2 for \(k_{yz}\)) and \(M\) is the number of points used to define the quadrature rule.
[in]seedWtsInA vector containing weights corresponding to the seed points. There must be the same number of wts and pts for each component.

Definition at line 8 of file SeparableKarhunenLoeve.cpp.

Member Function Documentation

◆ GetModes()

Eigen::MatrixXd SeparableKarhunenLoeve::GetModes ( Eigen::Ref< const Eigen::MatrixXd > const &  pts) const
overridevirtual

Definition at line 53 of file SeparableKarhunenLoeve.cpp.

◆ NumModes()

unsigned int SeparableKarhunenLoeve::NumModes ( ) const
overridevirtual

Definition at line 48 of file SeparableKarhunenLoeve.cpp.

Member Data Documentation

◆ components

std::vector<std::shared_ptr<KarhunenLoeveBase> > muq::Approximation::SeparableKarhunenLoeve::components
private

Definition at line 80 of file SeparableKarhunenLoeve.h.

◆ modeInds

std::shared_ptr<MultiIndexSet> muq::Approximation::SeparableKarhunenLoeve::modeInds
private

Definition at line 82 of file SeparableKarhunenLoeve.h.

◆ numModes

unsigned int muq::Approximation::SeparableKarhunenLoeve::numModes
private

Definition at line 83 of file SeparableKarhunenLoeve.h.


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