1 #ifndef INDEXEDSCALARBASIS_H_
2 #define INDEXEDSCALARBASIS_H_
11 namespace Approximation {
31 static std::shared_ptr<IndexedScalarBasis>
Construct(std::string
const& polyName);
45 double const x)
const = 0;
52 Eigen::VectorXd output(maxOrder+1);
53 for(
int i=0; i<=maxOrder; ++i)
66 double const x)
const = 0;
80 #define REGISTER_SCALARBASIS_FAMILY(NAME) static auto regScalarBasis ##NAME \
81 = muq::Approximation::IndexedScalarBasis::GetScalarBasisMap()->insert(std::make_pair(#NAME, muq::Utilities::shared_factory<NAME>()));
virtual void EvaluateImpl(muq::Modeling::ref_vector< boost::any > const &inputs)
Evaluate the polynomial at a given point and order.
virtual ~IndexedScalarBasis()=default
static std::shared_ptr< IndexedScalarBasis > Construct(std::string const &polyName)
virtual double DerivativeEvaluate(int const polyOrder, int const derivOrder, double const x) const =0
virtual Eigen::VectorXd EvaluateAllTerms(int const maxOrder, double const x) const
Evaluates all basis functions with order <= maxOrder.
IndexedScalarBasis()
Create a basis function.
virtual double BasisEvaluate(int const order, double const x) const =0
Evaluate the specific basis type (must be implemented by the child)
std::function< std::shared_ptr< IndexedScalarBasis >)> ScalarBasisConstructorType
static std::shared_ptr< ScalarBasisMapType > GetScalarBasisMap()
std::map< std::string, ScalarBasisConstructorType > ScalarBasisMapType
Base class for MUQ's modelling envronment.
std::vector< std::reference_wrapper< const T > > ref_vector
A vector of references to something ...