1 #ifndef MONOTONEEXPANSION_H
2 #define MONOTONEEXPANSION_H
5 #include <boost/property_tree/ptree.hpp>
8 namespace Approximation{
29 MonotoneExpansion(std::shared_ptr<BasisExpansion> monotonePartsIn,
30 bool coeffInput=
false);
32 MonotoneExpansion(std::vector<std::shared_ptr<BasisExpansion>>
const& generalPartsIn,
33 std::vector<std::shared_ptr<BasisExpansion>>
const& monotonePartsIn,
34 bool coeffInput=
false);
39 unsigned NumTerms()
const;
46 std::shared_ptr<MonotoneExpansion> Head(
int numRows)
const;
49 Eigen::VectorXd EvaluateInverse(Eigen::VectorXd
const& refPt)
const;
50 Eigen::VectorXd EvaluateInverse(Eigen::VectorXd
const& refPt,
51 Eigen::VectorXd
const& tgtPt0)
const;
53 Eigen::VectorXd EvaluateForward(Eigen::VectorXd
const& x)
const;
60 virtual Eigen::VectorXd GetCoeffs()
const;
62 virtual void SetCoeffs(Eigen::VectorXd
const& allCoeffs);
65 virtual double LogDeterminant(Eigen::VectorXd
const& evalPt);
66 virtual double LogDeterminant(Eigen::VectorXd
const& evalPt,
67 Eigen::VectorXd
const& coeffs);
70 virtual Eigen::VectorXd GradLogDeterminant(Eigen::VectorXd
const& evalPt);
71 virtual Eigen::VectorXd GradLogDeterminant(Eigen::VectorXd
const& evalPt,
72 Eigen::VectorXd
const& coeffs);
78 virtual void JacobianImpl(
unsigned int const wrtOut,
79 unsigned int const wrtIn,
82 Eigen::MatrixXd JacobianWrtX(Eigen::VectorXd
const& x)
const;
84 std::vector<std::shared_ptr<BasisExpansion>> generalParts;
85 std::vector<std::shared_ptr<BasisExpansion>> monotoneParts;
87 Eigen::VectorXd quadWeights;
88 Eigen::VectorXd quadPts;
91 static Eigen::VectorXi GetInputSizes(std::vector<std::shared_ptr<BasisExpansion>>
const& generalPartsIn,
92 std::vector<std::shared_ptr<BasisExpansion>>
const& monotonePartsIn,
Provides an abstract interface for defining vector-valued model components.
std::vector< std::reference_wrapper< const T > > ref_vector
A vector of references to something ...