|
Janus 2.0.0
High-performance C++20 dual-mode numerical framework
|
Polynomial chaos expansion (PCE) basis, projection, and regression. More...
#include "janus/core/JanusConcepts.hpp"#include "janus/core/JanusError.hpp"#include "janus/core/JanusTypes.hpp"#include "janus/math/Arithmetic.hpp"#include "janus/math/OrthogonalPolynomials.hpp"#include <Eigen/SVD>#include <algorithm>#include <cmath>#include <numeric>#include <string>#include <vector>

Go to the source code of this file.
Classes | |
| struct | janus::PolynomialChaosDimension |
| One stochastic dimension in a polynomial chaos basis. More... | |
| struct | janus::PolynomialChaosBasisOptions |
| Basis construction controls for multidimensional PCE. More... | |
| struct | janus::PolynomialChaosTerm |
| One multidimensional chaos basis term. More... | |
| class | janus::PolynomialChaosBasis |
| Multidimensional polynomial chaos basis with fixed truncation/order. More... | |
Namespaces | |
| namespace | janus |
| namespace | janus::detail |
| Smooth approximation of ReLU function: softplus(x) = (1/beta) * log(1 + exp(beta * x)). | |
Enumerations | |
| enum class | janus::PolynomialChaosFamily { janus::Hermite , janus::Legendre , janus::Jacobi , janus::Laguerre } |
| Univariate Askey-scheme family used for a PCE input dimension. More... | |
| enum class | janus::PolynomialChaosTruncation { janus::TotalOrder , janus::TensorProduct } |
| Multi-index truncation strategy for a multidimensional basis. More... | |
Functions | |
| PolynomialChaosDimension | janus::hermite_dimension () |
| Create a standard normal (Hermite) dimension. | |
| PolynomialChaosDimension | janus::legendre_dimension () |
| Create a uniform (Legendre) dimension on [-1, 1]. | |
| PolynomialChaosDimension | janus::jacobi_dimension (double alpha, double beta) |
| Create a Beta-family (Jacobi) dimension on [-1, 1]. | |
| PolynomialChaosDimension | janus::laguerre_dimension (double alpha=0.0) |
| Create a Gamma-family (Laguerre) dimension on [0, inf). | |
| void | janus::detail::validate_degree (int degree, const std::string &context) |
| void | janus::detail::validate_dimension (const PolynomialChaosDimension &dimension, const std::string &context) |
| template<JanusScalar Scalar> | |
| Scalar | janus::detail::raw_hermite_polynomial (int degree, const Scalar &x) |
| template<JanusScalar Scalar> | |
| Scalar | janus::detail::raw_legendre_polynomial (int degree, const Scalar &x) |
| template<JanusScalar Scalar> | |
| Scalar | janus::detail::raw_jacobi_polynomial (int degree, const Scalar &x, double alpha, double beta) |
| template<JanusScalar Scalar> | |
| Scalar | janus::detail::raw_laguerre_polynomial (int degree, const Scalar &x, double alpha) |
| double | janus::detail::squared_norm_raw (const PolynomialChaosDimension &dimension, int degree) |
| double | janus::detail::squared_norm_probability (const PolynomialChaosDimension &dimension, int degree) |
| bool | janus::detail::multi_index_less (const std::vector< int > &lhs, const std::vector< int > &rhs) |
| void | janus::detail::total_order_recursive (int dim, int order, int axis, std::vector< int > ¤t, std::vector< std::vector< int > > &indices) |
| void | janus::detail::tensor_product_recursive (int dim, int order, int axis, std::vector< int > ¤t, std::vector< std::vector< int > > &indices) |
| std::vector< std::vector< int > > | janus::detail::generate_multi_indices (int dim, int order, PolynomialChaosTruncation truncation) |
| template<JanusScalar Scalar> | |
| JanusVector< Scalar > | janus::detail::apply_operator (const NumericMatrix &op, const JanusVector< Scalar > &values, const std::string &context) |
| template<JanusScalar Scalar> | |
| JanusMatrix< Scalar > | janus::detail::apply_operator (const NumericMatrix &op, const JanusMatrix< Scalar > &values, const std::string &context) |
| void | janus::detail::validate_samples (const NumericMatrix &samples, int dimension, const std::string &context) |
| NumericMatrix | janus::detail::regression_operator (const NumericMatrix &design_matrix, double ridge, const std::string &context) |
| template<JanusScalar Scalar> | |
| Scalar | janus::pce_polynomial (const PolynomialChaosDimension &dimension, int degree, const Scalar &x, bool normalized=true) |
| Evaluate a univariate chaos basis polynomial. | |
| double | janus::pce_squared_norm (const PolynomialChaosDimension &dimension, int degree, bool normalized=true) |
| Return the probability-measure squared norm of a univariate basis term. | |
| template<JanusScalar Scalar> | |
| JanusVector< Scalar > | janus::pce_projection_coefficients (const PolynomialChaosBasis &basis, const NumericMatrix &samples, const NumericVector &weights, const JanusVector< Scalar > &sample_values) |
| Compute PCE projection coefficients from weighted samples (vector). | |
| template<JanusScalar Scalar> | |
| JanusMatrix< Scalar > | janus::pce_projection_coefficients (const PolynomialChaosBasis &basis, const NumericMatrix &samples, const NumericVector &weights, const JanusMatrix< Scalar > &sample_values) |
| Compute PCE projection coefficients from weighted samples (matrix). | |
| template<JanusScalar Scalar> | |
| JanusVector< Scalar > | janus::pce_regression_coefficients (const PolynomialChaosBasis &basis, const NumericMatrix &samples, const JanusVector< Scalar > &sample_values, double ridge=1e-12) |
| Compute PCE coefficients via least-squares regression (vector). | |
| template<JanusScalar Scalar> | |
| JanusMatrix< Scalar > | janus::pce_regression_coefficients (const PolynomialChaosBasis &basis, const NumericMatrix &samples, const JanusMatrix< Scalar > &sample_values, double ridge=1e-12) |
| Compute PCE coefficients via least-squares regression (matrix). | |
| template<JanusScalar Scalar> | |
| Scalar | janus::pce_mean (const JanusVector< Scalar > &coefficients) |
| Extract PCE mean (zeroth coefficient). | |
| template<JanusScalar Scalar> | |
| Scalar | janus::pce_variance (const PolynomialChaosBasis &basis, const JanusVector< Scalar > &coefficients) |
| Compute PCE variance from coefficients. | |
Polynomial chaos expansion (PCE) basis, projection, and regression.