Representation of a polynomial function of n-th degree. More...
#include <polynomial.hpp>
Public Types | |
typedef Array< double, N+1 > | Coefficients |
The coefficient container storage type. | |
Public Member Functions | |
Coefficients & | coefficients () |
Handle to the coefficient array, use to initialise the polynomial. | |
const Coefficients & | coefficients () const |
Non-modifiable handle to the coefficient array. | |
double | dderivative (const double &x) const |
Access the second derivative directly. | |
Polynomial< N-1 > | derivative () const |
Generates the derivative polynomial. | |
double | derivative (const double &x) const |
Access the derivative directly. | |
double | operator() (const double &x) const |
Access the value of the polynomial at a certain point. | |
Polynomial () | |
Default constructor. | |
template<typename Derived > | |
Polynomial (const BluePrint< Derived > &blueprint) | |
Blueprint constructor. | |
void | shift_horizontal (const double &shift) |
Horizontal shift transform. | |
virtual | ~Polynomial () |
Private Attributes | |
Coefficients | coeff |
Friends | |
template<typename OutputStream , unsigned int Degree> | |
OutputStream & | operator<< (OutputStream &ostream, const Polynomial< Degree > &polynomial) |
Streaming output insertion operator for polynomials. |
Representation of a polynomial function of n-th degree.
Representation of a polynomial function of n-th order. Use the template parameter to specify the degree of the polynomial. The representation is defined by an array of coefficients which are given in the form a_0 -> a_n where p(x) = a_0 + a_1 x + ....
Comma Initialisation:
The polynomial uses a an ecl array (ecl_containers) for storage, so comma initialisation is possible.
// Comma Initialisation Polynomial<5> p; p.coefficients() = 1,2,3,4,5,6; cout << p << endl; // 1.00 + 2.00x + 3.00x^2 + 4.00x^3 + 5.00x^4 + 6.00x^5
Blueprint Initialisation:
Lightweight blueprints can also be used to initialise/assign the polynomial:
CubicPolynomial cubic = CubicPolynomial::Interpolation(2.0,0.0,0.0,3.0,1.0,0.0);
Utility Functions:
N | : the degree of the polynomial (i.e. a_0 + ... + a_i x^i + ... + a_N x^N) |
Definition at line 110 of file polynomial.hpp.
typedef Array<double,N+1> ecl::Polynomial< N >::Coefficients |
The coefficient container storage type.
Definition at line 115 of file polynomial.hpp.
ecl::Polynomial< N >::Polynomial | ( | ) | [inline] |
Default constructor.
This does not initialise the polynomial, use with the coefficients() accessor with comma initialisation operator to conveniently set the coefficients.
Definition at line 127 of file polynomial.hpp.
ecl::Polynomial< N >::Polynomial | ( | const BluePrint< Derived > & | blueprint | ) | [inline] |
Blueprint constructor.
Constructor that allows automatic generation from an existing blueprint. This can be used simply in the following manner for any static element belonging to the BluePrintFactory.
CubicPolynomial cubic = CubicPolynomial::Interpolation(2.0,0.0,0.0,3.0,1.0,0.0);
Since this is not explicit, it will also allow assignment.
CubicPolynomial cubic; // Alternatively Polynomial<3>
cubic = CubicPolynomial::Interpolation(2.0,0.0,0.0,3.0,1.0,0.0);
This will emit a compile time failure if the template argument does not conform to the blueprints concept (refer to ecl_concepts' documentation).
blueprint | : the blue print to use to generate this instance. |
Definition at line 154 of file polynomial.hpp.
virtual ecl::Polynomial< N >::~Polynomial | ( | ) | [inline, virtual] |
Definition at line 157 of file polynomial.hpp.
Coefficients& ecl::Polynomial< N >::coefficients | ( | ) | [inline] |
Handle to the coefficient array, use to initialise the polynomial.
This returns a handle to the coefficient array. Use this with the comma initialiser to conveniently set the polynomial.
Polynomial<5> p;
p.coefficients() = 1,2,3,4,5,6;
cout << p << endl; // 1.00 + 2.00x + 3.00x^2 + 4.00x^3 + 5.00x^4 + 6.00x^5
Definition at line 233 of file polynomial.hpp.
const Coefficients& ecl::Polynomial< N >::coefficients | ( | ) | const [inline] |
Non-modifiable handle to the coefficient array.
Definition at line 239 of file polynomial.hpp.
double ecl::Polynomial< N >::dderivative | ( | const double & | x | ) | const |
Access the second derivative directly.
Access the values of the second derivative directly.
x | : the point at which you wish to calculate the value for. |
Definition at line 437 of file polynomial.hpp.
Polynomial<N-1> ecl::Polynomial< N >::derivative | ( | ) | const [inline] |
Generates the derivative polynomial.
Calculates and returns a copy of the derivative polynomial.
Definition at line 189 of file polynomial.hpp.
double ecl::Polynomial< N >::derivative | ( | const double & | x | ) | const |
Access the derivative directly.
Access the values of the derivative directly.
x | : the point at which you wish to calculate the value for. |
Definition at line 427 of file polynomial.hpp.
double ecl::Polynomial< N >::operator() | ( | const double & | x | ) | const |
Access the value of the polynomial at a certain point.
Access the value of the polynomial at a certain point.
x | : the point at which you wish to calculate the value for. |
Definition at line 416 of file polynomial.hpp.
void ecl::Polynomial< N >::shift_horizontal | ( | const double & | shift | ) |
Horizontal shift transform.
Shifts the polynomial along the x axis by the specified offset. A negative offset will shift the polynomial to the left, while a positive offset will shit the polynomial to the right.
Polynomial<2> quadratic; // x^2 quadratic.shift(2); // x^2 -> (x-2)^2 (graph shifted right by 2)
shift | : the amount of x-shift (-ve -> left, +ve -> right). |
Definition at line 396 of file polynomial.hpp.
OutputStream& operator<< | ( | OutputStream & | ostream, |
const Polynomial< Degree > & | polynomial | ||
) | [friend] |
Streaming output insertion operator for polynomials.
Streaming output insertion operator for polynomials.
OutputStream | : the type of stream being used. |
Degree | : the order of the polynomial being inserted. |
ostream | : the output stream being used. |
polynomial | : the polynomial |
Definition at line 451 of file polynomial.hpp.
Coefficients ecl::Polynomial< N >::coeff [private] |
Definition at line 267 of file polynomial.hpp.