casa  $Rev:20696$
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
Public Member Functions | Static Public Member Functions | Protected Attributes | Static Protected Attributes
casa::ChebyshevParam< T > Class Template Reference

Parameter handling for Chebyshev polynomial parameters. More...

#include <ChebyshevParam.h>

Inheritance diagram for casa::ChebyshevParam< T >:
casa::Function1D< T > casa::Function< T, T > casa::Functional< FunctionTraits< T >::ArgType, T > casa::Functional< Vector< FunctionTraits< T >::ArgType >, T > casa::ChebyshevParamModeImpl< T > casa::Chebyshev< T > casa::MarshallableChebyshev< T >

List of all members.

Public Member Functions

 ChebyshevParam ()
 create a zero-th order Chebyshev polynomial with the first coefficient equal to zero.
 ChebyshevParam (const uInt n)
 create an n-th order Chebyshev polynomial with the coefficients equal to zero.
 ChebyshevParam (const T &min, const T &max, ChebyshevEnums::OutOfIntervalMode mode=ChebyshevEnums::CONSTANT, const T &defval=T(0))
 create a zero-th order Chebyshev polynomical with the first coefficient equal to one.
 ChebyshevParam (const Vector< T > &coeffs, const T &min, const T &max, ChebyshevEnums::OutOfIntervalMode mode=ChebyshevEnums::CONSTANT, const T &defval=T(0))
 create a fully specified Chebyshev polynomial.
 ChebyshevParam (uInt order, const RecordInterface &mode)
 create a fully specified Chebyshev polynomial.
 ChebyshevParam (const Vector< T > &coeffs, const RecordInterface &mode)
 ChebyshevParam (const ChebyshevParam &other)
 create a deep copy of another Chebyshev polynomial
template<class W >
 ChebyshevParam (const ChebyshevParam< W > &other)
ChebyshevParam< T > & operator= (const ChebyshevParam< T > &other)
 make a (deep) copy of another Chebyshev polynomial
virtual ~ChebyshevParam ()
 Destructor.
void setCoefficients (const Vector< T > &coeffs)
 set the Chebyshev coefficients.
void setCoefficient (const uInt which, const T &value)
 set a particular Chebyshev coefficient.
const Vector< T > & getCoefficients () const
 return the current set of coefficients into a given Vector.
getCoefficient (const uInt which) const
 return a particular coefficient.
uInt nCoefficients () const
 return the number of coeefficients currently loaded.
void setInterval (T xmin, T xmax)
 set the Chebyshev interval for this function.
getIntervalMin () const
 return the minimum value for the currently Chebyshev interval.
getIntervalMax () const
 return the maximum value for the currently Chebyshev interval.
void setOutOfIntervalMode (ChebyshevEnums::OutOfIntervalMode mode)
 set the behavior of this function when it is evaluated outside its Chebyshev interval
ChebyshevEnums::OutOfIntervalMode getOutOfIntervalMode () const
 return the behavior of this function when it is evaluated outside of its Chebyshev interval.
void setDefault (const T &val)
 set the default value of this function.
const T & getDefault () const
 return the currently set default value.
uInt order () const
 return the order of this polynomial.
virtual const Stringname () const
 Give name of function.

Static Public Member Functions

static void derivativeCoeffs (Vector< T > &coeffs, const T &xmin=T(-1), const T &xmax=T(1))
 transform a set of Chebyshev polynomial coefficients into a set representing the series' derivative.
static void chebyshevToPower (Vector< T > &coeffs)
 convert a set of Chebyshev polynomial coefficients to power series coefficients.
static void powerToChebyshev (Vector< T > &coeffs)
 convert a set of power series coefficients to Chebyshev polynomial coefficients.

Protected Attributes

def_p
 Default value if outside interval.
minx_p
 Lowest interval bound.
maxx_p
 Highest inetrval bound.
ChebyshevEnums::OutOfIntervalMode mode_p
 Out-of-interval handling type.

Static Protected Attributes

static Vector< Stringmodes_s

Detailed Description

template<class T>
class casa::ChebyshevParam< T >

Parameter handling for Chebyshev polynomial parameters.

Intended use:

Internal

Review Status

Reviewed By:
wbrouw
Date Reviewed:
2001/11/12
Test programs:
tChebyshev

Prerequisite

Etymology

This class is named after Chebyshev Type I polynomials; it handles the "fixed" parameters for the function.

Synopsis

This class assists in forming and evaluating a function as a Chebyshev series, a linear combination of so-called Chebyshev polynomials. Users do not instantiate this abstract class directly; instead they instantiate the child class Chebyshev . This class holds the part of the implementation used by the Chebyshev class that manages the "fixed" parameters of the function (e.g. the polynomial coefficients, interval of interest, etc.)

For a full description, see the Chebyshev class.

Example

In this example, a 2nd order Chebyshev polynomial series is created.

      // set coeffs to desired values
      Vector<Double> coeffs(3, 1);   
   
      // configure the function   
      Chebyshev<Double> cheb;
      cheb.setInterval(-0.8, 7.2);
      cheb.setDefault(1.0);
      cheb.setCoefficients(coeffs);
   
      // evaluate the function as necessary
      Double z = cheb(-0.5);    // -0.5 is within range, z = 0.78625
      z = cheb(4.2);            // 4.2 is within range, z = 0.375
      z = cheb(-3);             // -3 is out of the interval, z = 1

Motivation

This class was created to support systematic errors in the simulator tool. It can be used by Jones matrix classes to vary gains in a predictable way, mimicing natural processes of the atmosphere or instrumental effects.

The Chebyshev implementation is split between this class, ChebyshevParam and its child Chebyshev to better support the AutoDiff framework for evaluating derivatives.

Template Type Argument Requirements (T)

Thrown Exceptions

To Do

Definition at line 167 of file ChebyshevParam.h.


Constructor & Destructor Documentation

template<class T>
casa::ChebyshevParam< T >::ChebyshevParam ( )

create a zero-th order Chebyshev polynomial with the first coefficient equal to zero.

The bounded domain is [T(-1), T(1)]. The OutOfDomainMode is CONSTANT, and the default value is T(0).

template<class T>
casa::ChebyshevParam< T >::ChebyshevParam ( const uInt  n) [explicit]

create an n-th order Chebyshev polynomial with the coefficients equal to zero.

The bounded domain is [T(-1), T(1)]. The OutOfDomainMode is CONSTANT, and the default value is T(0).

template<class T>
casa::ChebyshevParam< T >::ChebyshevParam ( const T &  min,
const T &  max,
ChebyshevEnums::OutOfIntervalMode  mode = ChebyshevEnums::CONSTANT,
const T &  defval = T(0) 
)

create a zero-th order Chebyshev polynomical with the first coefficient equal to one.

min is the minimum value of its Chebyshev interval, and max is the maximum value. mode sets the behavior of the function outside the Chebyshev interval (see setOutOfIntervalMode() and OutOfIntervalMode enumeration definition for details). defval is the value returned when the function is evaluated outside the Chebyshev interval and mode=CONSTANT.

template<class T>
casa::ChebyshevParam< T >::ChebyshevParam ( const Vector< T > &  coeffs,
const T &  min,
const T &  max,
ChebyshevEnums::OutOfIntervalMode  mode = ChebyshevEnums::CONSTANT,
const T &  defval = T(0) 
)

create a fully specified Chebyshev polynomial.

coeffs holds the coefficients of the Chebyshev polynomial (see setCoefficients() for details). min is the minimum value of its canonical range, and max is the maximum value. mode sets the behavior of the function outside the Chebyshev interval (see setOutOfIntervalMode() and OutOfIntervalMode enumeration definition for details). defval is the value returned when the function is evaluated outside the canonical range and mode=CONSTANT.

template<class T>
casa::ChebyshevParam< T >::ChebyshevParam ( uInt  order,
const RecordInterface mode 
)

create a fully specified Chebyshev polynomial.

config is a record that contains the non-coefficient data that configures this class. The fields recognized by this class are those documented for the setMode() function below.

template<class T>
casa::ChebyshevParam< T >::ChebyshevParam ( const Vector< T > &  coeffs,
const RecordInterface mode 
)
template<class T>
casa::ChebyshevParam< T >::ChebyshevParam ( const ChebyshevParam< T > &  other)

create a deep copy of another Chebyshev polynomial

template<class T>
template<class W >
casa::ChebyshevParam< T >::ChebyshevParam ( const ChebyshevParam< W > &  other) [inline]

Definition at line 223 of file ChebyshevParam.h.

template<class T>
virtual casa::ChebyshevParam< T >::~ChebyshevParam ( ) [virtual]

Destructor.


Member Function Documentation

template<class T>
static void casa::ChebyshevParam< T >::chebyshevToPower ( Vector< T > &  coeffs) [static]

convert a set of Chebyshev polynomial coefficients to power series coefficients.

The values passed in coeffs are taken to be chebyshev coefficients; these values will be replaced with the power series coefficients. They should be ordered beginning with the zero-th order coefficient.

template<class T>
static void casa::ChebyshevParam< T >::derivativeCoeffs ( Vector< T > &  coeffs,
const T &  xmin = T(-1),
const T &  xmax = T(1) 
) [static]

transform a set of Chebyshev polynomial coefficients into a set representing the series' derivative.

coeffs should be assuming an interval of [-1, 1]. xmin and xmax can be provided to transform the series to another interval.

template<class T>
T casa::ChebyshevParam< T >::getCoefficient ( const uInt  which) const [inline]

return a particular coefficient.

which is the coefficient order (i.e. 0 refers to the constant offset). If which is out of range, zero is returned.

Definition at line 259 of file ChebyshevParam.h.

template<class T>
const Vector<T>& casa::ChebyshevParam< T >::getCoefficients ( ) const

return the current set of coefficients into a given Vector.

template<class T>
const T& casa::ChebyshevParam< T >::getDefault ( ) const [inline]

return the currently set default value.

See setDefault() for details on the use of this value.

Definition at line 303 of file ChebyshevParam.h.

template<class T>
T casa::ChebyshevParam< T >::getIntervalMax ( ) const [inline]

return the maximum value for the currently Chebyshev interval.

See setInterval() for additional details.

Definition at line 283 of file ChebyshevParam.h.

template<class T>
T casa::ChebyshevParam< T >::getIntervalMin ( ) const [inline]

return the minimum value for the currently Chebyshev interval.

See setInterval() for additional details.

Definition at line 279 of file ChebyshevParam.h.

return the behavior of this function when it is evaluated outside of its Chebyshev interval.

Definition at line 292 of file ChebyshevParam.h.

template<class T>
virtual const String& casa::ChebyshevParam< T >::name ( ) const [inline, virtual]

Give name of function.

Reimplemented from casa::Function< T, T >.

Definition at line 331 of file ChebyshevParam.h.

template<class T>
uInt casa::ChebyshevParam< T >::nCoefficients ( ) const [inline]

return the number of coeefficients currently loaded.

This does not guarantee that the coefficients are non-zero

Definition at line 264 of file ChebyshevParam.h.

template<class T>
ChebyshevParam<T>& casa::ChebyshevParam< T >::operator= ( const ChebyshevParam< T > &  other)

make a (deep) copy of another Chebyshev polynomial

template<class T>
uInt casa::ChebyshevParam< T >::order ( ) const [inline]

return the order of this polynomial.

This returns the value of nCoefficients()-1;

Definition at line 307 of file ChebyshevParam.h.

template<class T>
static void casa::ChebyshevParam< T >::powerToChebyshev ( Vector< T > &  coeffs) [static]

convert a set of power series coefficients to Chebyshev polynomial coefficients.

The values passed in coeffs are taken to be power series coefficients; these values will be replaced with the Chebyshev polynomial coefficients. They should be ordered beginning with the zero-th order coefficient.

template<class T>
void casa::ChebyshevParam< T >::setCoefficient ( const uInt  which,
const T &  value 
)

set a particular Chebyshev coefficient.

which is the coefficient order (i.e. 0 refers to the constant offset). value is the coefficient value. If which is larger than current order of the function, the order will be increased to the value of which, and that coefficient is set to value; missing coefficients less than this value will be set to zero. Thus, the order can be increased with this function; however, it cannot be decreased (even if the highest order coefficient is set to zero). To lower the order, use setCoefficients() with a Vector having the desired number of coefficients.

template<class T>
void casa::ChebyshevParam< T >::setCoefficients ( const Vector< T > &  coeffs)

set the Chebyshev coefficients.

coeffs holds the coefficients in order, beginning with the zero-th order term. The order of the polynomial, then, would be the size of the Vector minus one.

template<class T>
void casa::ChebyshevParam< T >::setDefault ( const T &  val) [inline]

set the default value of this function.

This value is used when the getOutOfIntervalMode() returns Chebyshev::CONSTANT; it is returned when the a value outside of the Chebyshev interval is passed to the () operator.

Definition at line 299 of file ChebyshevParam.h.

template<class T>
void casa::ChebyshevParam< T >::setInterval ( xmin,
xmax 
) [inline]

set the Chebyshev interval for this function.

The function will be scaled and shifted to such that the central bounded range of the Chebyshev polynomials ([-1, 1] in untransformed space) spans the given range. min is the minimum value for the interval, and max is the maximum value. See setOutOfIntervalMode() for the behavior of this function outside the set range.

Definition at line 273 of file ChebyshevParam.h.

template<class T>
void casa::ChebyshevParam< T >::setOutOfIntervalMode ( ChebyshevEnums::OutOfIntervalMode  mode) [inline]

set the behavior of this function when it is evaluated outside its Chebyshev interval

Definition at line 287 of file ChebyshevParam.h.


Member Data Documentation

template<class T>
T casa::ChebyshevParam< T >::def_p [protected]

Default value if outside interval.

Definition at line 337 of file ChebyshevParam.h.

Referenced by casa::ChebyshevParam< AutoDiffA< T > >::getDefault(), and casa::ChebyshevParam< AutoDiffA< T > >::setDefault().

template<class T>
T casa::ChebyshevParam< T >::maxx_p [protected]
template<class T>
T casa::ChebyshevParam< T >::minx_p [protected]
template<class T>
ChebyshevEnums::OutOfIntervalMode casa::ChebyshevParam< T >::mode_p [protected]
template<class T>
Vector<String> casa::ChebyshevParam< T >::modes_s [static, protected]

Definition at line 345 of file ChebyshevParam.h.


The documentation for this class was generated from the following file: