RVL::PolynomialOperator< Scalar > Class Template Reference

This operator takes a vector of coefficients and computes the polynomial mapping described by these coefficients. More...

#include <polyop.hh>

Inheritance diagram for RVL::PolynomialOperator< Scalar >:

RVL::OperatorWithInvertibleDeriv< Scalar > RVL::Operator< Scalar > RVL::Writeable List of all members.

Public Member Functions

 PolynomialOperator (const std::valarray< Scalar > &_coef, Space< Scalar > &_spc)
 PolynomialOperator (const PolynomialOperator< Scalar > &s)
 ~PolynomialOperator ()
virtual const Space< Scalar > & getDomain () const
 access to domain, range
virtual const Space< Scalar > & getRange () const
virtual void write (RVLException &e) const
virtual ostream & write (ostream &str) const

Protected Member Functions

virtual void apply (const Vector< Scalar > &x, Vector< Scalar > &y) const
 $y = F(x)$
virtual void applyDeriv (const Vector< Scalar > &x, const Vector< Scalar > &dx, Vector< Scalar > &dy) const
 $dy = DF(x)dx$
virtual void applyAdjDeriv (const Vector< Scalar > &x, const Vector< Scalar > &dy, Vector< Scalar > &dx) const
 $dx = DF(x)^*dy$
void applyInverseDeriv (const Vector< Scalar > &x, const Vector< Scalar > &dy, Vector< Scalar > &dx) const
 Since this is a diagonal operator, the inverse of the derivative amounts to performing elementwise division.
void applyAdjInverseDeriv (const Vector< Scalar > &x, const Vector< Scalar > &dx, Vector< Scalar > &dy) const
 Diagonal op => symetric.
virtual Operator< Scalar > * clone () const
 virtual copy contructor, also accessible only through OperatorEvaluation.

Protected Attributes

Space< Scalar > & spc
std::valarray< Scalar > coef

Detailed Description

template<class Scalar>
class RVL::PolynomialOperator< Scalar >

This operator takes a vector of coefficients and computes the polynomial mapping described by these coefficients.

The coefficients are in ascending order of power ($ coef[0] + coef[1]*x + coef[2]*x^2 + \ldots$. Powers are computed elementwise, and the Vector::linComb method is used for addition and scaling.

Definition at line 48 of file polyop.hh.


Constructor & Destructor Documentation

template<class Scalar>
RVL::PolynomialOperator< Scalar >::PolynomialOperator ( const std::valarray< Scalar > &  _coef,
Space< Scalar > &  _spc 
)

Definition at line 148 of file polyop.hh.

Referenced by RVL::PolynomialOperator< Scalar >::clone().

template<class Scalar>
RVL::PolynomialOperator< Scalar >::PolynomialOperator ( const PolynomialOperator< Scalar > &  s  ) 

Definition at line 150 of file polyop.hh.

template<class Scalar>
RVL::PolynomialOperator< Scalar >::~PolynomialOperator (  ) 

Definition at line 151 of file polyop.hh.


Member Function Documentation

template<class Scalar>
virtual void RVL::PolynomialOperator< Scalar >::apply ( const Vector< Scalar > &  x,
Vector< Scalar > &  y 
) const [protected, virtual]

$y = F(x)$

Implements RVL::Operator< Scalar >.

Definition at line 59 of file polyop.hh.

References RVL::PolynomialOperator< Scalar >::coef, RVL::Vector< Scalar >::eval(), and RVL::Vector< Scalar >::linComb().

template<class Scalar>
virtual void RVL::PolynomialOperator< Scalar >::applyDeriv ( const Vector< Scalar > &  x,
const Vector< Scalar > &  dx,
Vector< Scalar > &  dy 
) const [protected, virtual]

$dy = DF(x)dx$

Implements RVL::Operator< Scalar >.

Definition at line 77 of file polyop.hh.

References RVL::PolynomialOperator< Scalar >::coef, RVL::Vector< Scalar >::eval(), RVL::Vector< Scalar >::linComb(), and RVL::Vector< Scalar >::zero().

Referenced by RVL::PolynomialOperator< Scalar >::applyAdjDeriv().

template<class Scalar>
virtual void RVL::PolynomialOperator< Scalar >::applyAdjDeriv ( const Vector< Scalar > &  x,
const Vector< Scalar > &  dy,
Vector< Scalar > &  dx 
) const [protected, virtual]

$dx = DF(x)^*dy$

Implements RVL::Operator< Scalar >.

Definition at line 100 of file polyop.hh.

References RVL::PolynomialOperator< Scalar >::applyDeriv().

template<class Scalar>
void RVL::PolynomialOperator< Scalar >::applyInverseDeriv ( const Vector< Scalar > &  x,
const Vector< Scalar > &  dy,
Vector< Scalar > &  dx 
) const [protected, virtual]

Since this is a diagonal operator, the inverse of the derivative amounts to performing elementwise division.

Implements RVL::OperatorWithInvertibleDeriv< Scalar >.

Definition at line 109 of file polyop.hh.

References RVL::PolynomialOperator< Scalar >::coef, RVL::Vector< Scalar >::eval(), RVL::Vector< Scalar >::linComb(), and RVL::Vector< Scalar >::zero().

Referenced by RVL::PolynomialOperator< Scalar >::applyAdjInverseDeriv().

template<class Scalar>
void RVL::PolynomialOperator< Scalar >::applyAdjInverseDeriv ( const Vector< Scalar > &  x,
const Vector< Scalar > &  dx,
Vector< Scalar > &  dy 
) const [protected, virtual]

Diagonal op => symetric.

Implements RVL::OperatorWithInvertibleDeriv< Scalar >.

Definition at line 133 of file polyop.hh.

References RVL::PolynomialOperator< Scalar >::applyInverseDeriv().

template<class Scalar>
virtual Operator<Scalar>* RVL::PolynomialOperator< Scalar >::clone (  )  const [protected, virtual]

virtual copy contructor, also accessible only through OperatorEvaluation.

Usually implemented with operator new and copy constructor of concrete child class.

Implements RVL::Operator< Scalar >.

Definition at line 144 of file polyop.hh.

References RVL::PolynomialOperator< Scalar >::PolynomialOperator().

template<class Scalar>
virtual const Space<Scalar>& RVL::PolynomialOperator< Scalar >::getDomain (  )  const [virtual]

access to domain, range

Implements RVL::Operator< Scalar >.

Definition at line 154 of file polyop.hh.

References RVL::PolynomialOperator< Scalar >::spc.

template<class Scalar>
virtual const Space<Scalar>& RVL::PolynomialOperator< Scalar >::getRange (  )  const [virtual]

Implements RVL::Operator< Scalar >.

Definition at line 155 of file polyop.hh.

References RVL::PolynomialOperator< Scalar >::spc.

template<class Scalar>
virtual void RVL::PolynomialOperator< Scalar >::write ( RVLException e  )  const [virtual]

Reimplemented from RVL::Writeable.

Definition at line 157 of file polyop.hh.

References RVL::PolynomialOperator< Scalar >::coef.

template<class Scalar>
virtual ostream& RVL::PolynomialOperator< Scalar >::write ( ostream &  str  )  const [virtual]

Implements RVL::Writeable.

Definition at line 164 of file polyop.hh.

References RVL::PolynomialOperator< Scalar >::coef.


Member Data Documentation

template<class Scalar>
Space<Scalar>& RVL::PolynomialOperator< Scalar >::spc [protected]

Definition at line 51 of file polyop.hh.

Referenced by RVL::PolynomialOperator< Scalar >::getDomain(), and RVL::PolynomialOperator< Scalar >::getRange().

template<class Scalar>
std::valarray<Scalar> RVL::PolynomialOperator< Scalar >::coef [protected]

Definition at line 52 of file polyop.hh.

Referenced by RVL::PolynomialOperator< Scalar >::apply(), RVL::PolynomialOperator< Scalar >::applyDeriv(), RVL::PolynomialOperator< Scalar >::applyInverseDeriv(), and RVL::PolynomialOperator< Scalar >::write().


The documentation for this class was generated from the following file:
Generated on 5 Jan 2017 for LocalRVL by  doxygen 1.4.7