casa
$Rev:20696$
|
Parameter handling for Chebyshev polynomial parameters. More...
#include <ChebyshevParam.h>
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. | |
T | 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. | |
T | getIntervalMin () const |
return the minimum value for the currently Chebyshev interval. | |
T | 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 String & | name () 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 | |
T | def_p |
Default value if outside interval. | |
T | minx_p |
Lowest interval bound. | |
T | maxx_p |
Highest inetrval bound. | |
ChebyshevEnums::OutOfIntervalMode | mode_p |
Out-of-interval handling type. | |
Static Protected Attributes | |
static Vector< String > | modes_s |
Parameter handling for Chebyshev polynomial parameters.
Internal
This class is named after Chebyshev Type I polynomials; it handles the "fixed" parameters for the function.
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.
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
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.
Definition at line 167 of file ChebyshevParam.h.
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).
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).
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.
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.
casa::ChebyshevParam< T >::ChebyshevParam | ( | uInt | order, |
const RecordInterface & | mode | ||
) |
casa::ChebyshevParam< T >::ChebyshevParam | ( | const Vector< T > & | coeffs, |
const RecordInterface & | mode | ||
) |
casa::ChebyshevParam< T >::ChebyshevParam | ( | const ChebyshevParam< T > & | other | ) |
create a deep copy of another Chebyshev polynomial
casa::ChebyshevParam< T >::ChebyshevParam | ( | const ChebyshevParam< W > & | other | ) | [inline] |
Definition at line 223 of file ChebyshevParam.h.
virtual casa::ChebyshevParam< T >::~ChebyshevParam | ( | ) | [virtual] |
Destructor.
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.
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.
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.
const Vector<T>& casa::ChebyshevParam< T >::getCoefficients | ( | ) | const |
return the current set of coefficients into a given Vector.
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.
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.
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.
ChebyshevEnums::OutOfIntervalMode casa::ChebyshevParam< T >::getOutOfIntervalMode | ( | ) | const [inline] |
return the behavior of this function when it is evaluated outside of its Chebyshev interval.
Definition at line 292 of file ChebyshevParam.h.
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.
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.
ChebyshevParam<T>& casa::ChebyshevParam< T >::operator= | ( | const ChebyshevParam< T > & | other | ) |
make a (deep) copy of another Chebyshev polynomial
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.
static void casa::ChebyshevParam< T >::powerToChebyshev | ( | Vector< T > & | coeffs | ) | [static] |
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.
void casa::ChebyshevParam< T >::setCoefficients | ( | const Vector< T > & | coeffs | ) |
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.
void casa::ChebyshevParam< T >::setInterval | ( | T | xmin, |
T | 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.
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.
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().
T casa::ChebyshevParam< T >::maxx_p [protected] |
Highest inetrval bound.
Definition at line 341 of file ChebyshevParam.h.
Referenced by casa::ChebyshevParam< AutoDiffA< T > >::getIntervalMax(), and casa::ChebyshevParam< AutoDiffA< T > >::setInterval().
T casa::ChebyshevParam< T >::minx_p [protected] |
Lowest interval bound.
Definition at line 339 of file ChebyshevParam.h.
Referenced by casa::ChebyshevParam< AutoDiffA< T > >::getIntervalMin(), and casa::ChebyshevParam< AutoDiffA< T > >::setInterval().
ChebyshevEnums::OutOfIntervalMode casa::ChebyshevParam< T >::mode_p [protected] |
Out-of-interval handling type.
Definition at line 343 of file ChebyshevParam.h.
Referenced by casa::ChebyshevParam< AutoDiffA< T > >::getOutOfIntervalMode(), and casa::ChebyshevParam< AutoDiffA< T > >::setOutOfIntervalMode().
Vector<String> casa::ChebyshevParam< T >::modes_s [static, protected] |
Definition at line 345 of file ChebyshevParam.h.