# Multivariate Expansion#

template<class BasisEvaluatorType, typename MemorySpace>
class MultivariateExpansion : public mpart::ParameterizedFunctionBase<MemorySpace>#

Defines a multivariate expansion based on the tensor product of 1d basis functions.

Template Parameters:
• BasisEvaluatorType – The type of the 1d basis functions

• MemorySpace – The Kokkos memory space where the coefficients and evaluations are stored.

Public Functions

template<typename SetType>
inline MultivariateExpansion(unsigned int outDim, SetType const &mset, BasisEvaluatorType const &basis1d)#
template<typename ExpansionType>
inline MultivariateExpansion(unsigned int outDim, ExpansionType expansion)#
virtual ~MultivariateExpansion() = default#
inline virtual void EvaluateImpl(StridedMatrix<const double, MemorySpace> const &pts, StridedMatrix<double, MemorySpace> output) override#

Pure virtual EvaluateImpl function that is overridden by children of this class.

Parameters:
• pts – A $$d_{in}\times N$$ matrix containining $$N$$ points in $$\mathbb{R}^d$$ where this function be evaluated. Each column is a point.

• output – A preallocated $$d_{out}\times N$$ that will be filled with the evaluations. This matrix must be sized correctly before being passed into this function.

inline virtual void GradientImpl(StridedMatrix<const double, MemorySpace> const &pts, StridedMatrix<const double, MemorySpace> const &sens, StridedMatrix<double, MemorySpace> output) override#
inline virtual void CoeffGradImpl(StridedMatrix<const double, MemorySpace> const &pts, StridedMatrix<const double, MemorySpace> const &sens, StridedMatrix<double, MemorySpace> output) override#

Pure virtual function overridden by child classes for computing the gradient of the function output with respect to the parameter vector $$\mathbf{w}$$. See the non-virtual CoeffGrad function for more details.

Evaluates the gradient with respect to the coefficients and stores the results in a preallocated matrix.

Parameters:
• pts – A $$d_{in}\times N$$ matrix containining $$N$$ points in $$\mathbb{R}^d$$ where this function be evaluated. Each column is a point.

• sens – A matrix of sensitivity vectors. Each column contains one sensitivity.

• output – A preallocated matrix to store the results.

inline std::vector<unsigned int> DiagonalCoeffIndices() const#