Stokhos::RecurrenceBasis< ordinal_type, value_type > Class Template Reference

Implementation of OneDOrthogPolyBasis based on the general three-term recurrence relationship:

\[ \psi_{k+1}(x) = \gamma_{k+1}\big( (\alpha_k - \delta_k x)\psi_k(x) - \beta_k\psi_{k-1}(x) \big) \]

for $k=0,\dots,P$ where $\psi_{-1}(x) = 0$, $\psi_{0}(x) = 1$, and $\beta_{0} = 1$. More...

#include <Stokhos_RecurrenceBasis.hpp>

Inheritance diagram for Stokhos::RecurrenceBasis< ordinal_type, value_type >:

Inheritance graph
[legend]
Collaboration diagram for Stokhos::RecurrenceBasis< ordinal_type, value_type >:

Collaboration graph
[legend]
List of all members.

Public Member Functions

virtual ~RecurrenceBasis ()
 Destructor.
virtual void getRecurrenceCoefficients (Teuchos::Array< value_type > &alpha, Teuchos::Array< value_type > &beta, Teuchos::Array< value_type > &delta, Teuchos::Array< value_type > &gamma) const
 Return recurrence coefficients defined by above formula.
virtual void evaluateBasesAndDerivatives (const value_type &point, Teuchos::Array< value_type > &vals, Teuchos::Array< value_type > &derivs) const
 Evaluate basis polynomials and their derivatives at given point point.
Implementation of Stokhos::OneDOrthogPolyBasis methods
virtual ordinal_type order () const
 Return order of basis (largest monomial degree $P$).
virtual ordinal_type size () const
 Return total size of basis (given by order() + 1).
virtual const Teuchos::Array<
value_type > & 
norm_squared () const
 Return array storing norm-squared of each basis polynomial.
virtual const value_type & norm_squared (ordinal_type i) const
 Return norm squared of basis polynomial i.
virtual Teuchos::RCP< Stokhos::Dense3Tensor<
ordinal_type, value_type > > 
computeTripleProductTensor () const
 Compute triple product tensor.
virtual Teuchos::RCP< Teuchos::SerialDenseMatrix<
ordinal_type, value_type > > 
computeDerivDoubleProductTensor () const
 Compute derivative double product tensor.
virtual void evaluateBases (const value_type &point, Teuchos::Array< value_type > &basis_pts) const
 Evaluate each basis polynomial at given point point.
virtual value_type evaluate (const value_type &point, ordinal_type order) const
 Evaluate basis polynomial given by order order at given point point.
virtual void print (std::ostream &os) const
 Print basis to stream os.
virtual const std::string & getName () const
 Return string name of basis.
virtual void getQuadPoints (ordinal_type quad_order, Teuchos::Array< value_type > &points, Teuchos::Array< value_type > &weights, Teuchos::Array< Teuchos::Array< value_type > > &values) const
 Compute quadrature points, weights, and values of basis polynomials at given set of points points.

Protected Member Functions

 RecurrenceBasis (const std::string &name, ordinal_type p, bool normalize)
 Constructor to be called by derived classes.
virtual void computeRecurrenceCoefficients (ordinal_type n, Teuchos::Array< value_type > &alpha, Teuchos::Array< value_type > &beta, Teuchos::Array< value_type > &delta) const =0
 Compute recurrence coefficients.
void setup ()
 Setup basis after computing recurrence coefficients.

Protected Attributes

std::string name
 Name of basis.
ordinal_type p
 Order of basis.
bool normalize
 Normalize basis.
Teuchos::Array< value_type > alpha
 Recurrence $\alpha$ coefficients.
Teuchos::Array< value_type > beta
 Recurrence $\beta$ coefficients.
Teuchos::Array< value_type > delta
 Recurrence $\delta$ coefficients.
Teuchos::Array< value_type > gamma
 Recurrence $\gamma$ coefficients.
Teuchos::Array< value_type > norms
 Norms.

Detailed Description

template<typename ordinal_type, typename value_type>
class Stokhos::RecurrenceBasis< ordinal_type, value_type >

Implementation of OneDOrthogPolyBasis based on the general three-term recurrence relationship:

\[ \psi_{k+1}(x) = \gamma_{k+1}\big( (\alpha_k - \delta_k x)\psi_k(x) - \beta_k\psi_{k-1}(x) \big) \]

for $k=0,\dots,P$ where $\psi_{-1}(x) = 0$, $\psi_{0}(x) = 1$, and $\beta_{0} = 1$.

Derived classes implement the recurrence relationship by implementing computeRecurrenceCoefficients(). If normalize = true in the constructor, then $\gamma_k = 1/\sqrt{\langle\psi_k^2\rangle}$, otherwise $\gamma_k = 1$. Note that a three term recurrence can always be defined with $\delta_k = 1$ in which case the polynomials are monic. However typical normalizations of some polynomial families (see Stokhos::LegendreBasis) require the extra terms.


Constructor & Destructor Documentation

template<typename ordinal_type, typename value_type>
Stokhos::RecurrenceBasis< ordinal_type, value_type >::RecurrenceBasis ( const std::string &  name,
ordinal_type  p,
bool  normalize 
) [protected]

Constructor to be called by derived classes.

name is the name for the basis that will be displayed when printing the basis, p is the order of the basis, and normalize indicates whether the basis polynomials should have unit-norm.


Member Function Documentation

template<typename ordinal_type, typename value_type>
Teuchos::RCP< Teuchos::SerialDenseMatrix< ordinal_type, value_type > > Stokhos::RecurrenceBasis< ordinal_type, value_type >::computeDerivDoubleProductTensor (  )  const [virtual]

Compute derivative double product tensor.

The $(i,j)$ entry of the tensor $B_{ij}$ is given by $B_{ij} = \langle\psi_i'\psi_j\rangle$ where $\psi_l$ represents basis polynomial $l$ and $i,j=0,\dots,P$ where $P$ is the order of the basis.

This method is implemented by computing $B_{ij}$ using Gaussian quadrature.

Implements Stokhos::OneDOrthogPolyBasis< ordinal_type, value_type >.

template<typename ordinal_type, typename value_type>
virtual void Stokhos::RecurrenceBasis< ordinal_type, value_type >::computeRecurrenceCoefficients ( ordinal_type  n,
Teuchos::Array< value_type > &  alpha,
Teuchos::Array< value_type > &  beta,
Teuchos::Array< value_type > &  delta 
) const [protected, pure virtual]

Compute recurrence coefficients.

Derived classes should implement this method to compute their recurrence coefficients. n is the number of coefficients to compute. Derived classes should call this method in their constructor, followed be setup() to fully setup the basis. The method is also called by getQuadPoints() if a quadrature order greater than twice the polynomial order is requested.

Implemented in Stokhos::ClenshawCurtisLegendreBasis< ordinal_type, value_type >, Stokhos::DiscretizedStieltjesBasis< ordinal_type, value_type >, Stokhos::HermiteBasis< ordinal_type, value_type >, Stokhos::LegendreBasis< ordinal_type, value_type >, and Stokhos::StieltjesPCEBasis< ordinal_type, value_type >.

template<typename ordinal_type, typename value_type>
Teuchos::RCP< Stokhos::Dense3Tensor< ordinal_type, value_type > > Stokhos::RecurrenceBasis< ordinal_type, value_type >::computeTripleProductTensor (  )  const [virtual]

Compute triple product tensor.

The $(i,j,k)$ entry of the tensor $C_{ijk}$ is given by $C_{ijk} = \langle\Psi_i\Psi_j\Psi_k\rangle$ where $\Psi_l$ represents basis polynomial $l$ and $i,j=0,\dots,P$ where $P$ is size()-1 and $k=0,\dots,p$ where $p$ is the supplied order.

This method is implemented by computing $C_{ijk}$ using Gaussian quadrature.

Implements Stokhos::OneDOrthogPolyBasis< ordinal_type, value_type >.

template<typename ordinal_type, typename value_type>
void Stokhos::RecurrenceBasis< ordinal_type, value_type >::evaluateBases ( const value_type &  point,
Teuchos::Array< value_type > &  basis_pts 
) const [virtual]

Evaluate each basis polynomial at given point point.

Size of returned array is given by size(), and coefficients are ordered from order 0 up to order order().

Implements Stokhos::OneDOrthogPolyBasis< ordinal_type, value_type >.

template<typename ordinal_type, typename value_type>
void Stokhos::RecurrenceBasis< ordinal_type, value_type >::getQuadPoints ( ordinal_type  quad_order,
Teuchos::Array< value_type > &  points,
Teuchos::Array< value_type > &  weights,
Teuchos::Array< Teuchos::Array< value_type > > &  values 
) const [virtual]

Compute quadrature points, weights, and values of basis polynomials at given set of points points.

quad_order specifies the order to which the quadrature should be accurate, not the number of quadrature points. The number of points is given by (quad_order + 1) / 2. Note however the passed arrays do NOT need to be sized correctly on input as they will be resized appropriately.

The quadrature points and weights are computed from the three-term recurrence by solving a tri-diagional symmetric eigenvalue problem (see Gene H. Golub and John H. Welsch, "Calculation of Gauss Quadrature Rules", Mathematics of Computation, Vol. 23, No. 106 (Apr., 1969), pp. 221-230).

Implements Stokhos::OneDOrthogPolyBasis< ordinal_type, value_type >.

Reimplemented in Stokhos::StieltjesPCEBasis< ordinal_type, value_type >.

template<typename ordinal_type, typename value_type>
const Teuchos::Array< value_type > & Stokhos::RecurrenceBasis< ordinal_type, value_type >::norm_squared (  )  const [virtual]

Return array storing norm-squared of each basis polynomial.

Entry $l$ of returned array is given by $\langle\psi_l^2\rangle$ for $l=0,\dots,P$ where $P$ is given by order().

Implements Stokhos::OneDOrthogPolyBasis< ordinal_type, value_type >.

template<typename ordinal_type, typename value_type>
void Stokhos::RecurrenceBasis< ordinal_type, value_type >::setup (  )  [protected]

Setup basis after computing recurrence coefficients.

Derived classes should call this method after computing their recurrence coefficients in their constructor to finish setting up the basis.


The documentation for this class was generated from the following files:
Generated on Tue Jul 13 09:23:21 2010 for Stokhos by  doxygen 1.4.7