Robotics Library  0.7.0
rl::math::Polynomial< T > Class Template Reference

A vector-valued polynomial function from Real -> T. More...

#include <Polynomial.h>

Inheritance diagram for rl::math::Polynomial< T >:
[legend]

## Public Member Functions

Polynomial (const ::std::size_t &degree)

virtual ~Polynomial ()

Polynomialclone () const

T & coefficient (const ::std::size_t &i)

const T & coefficient (const ::std::size_t &i) const

::std::size_t degree () const

Polynomial derivative () const

getAbsoluteMaximum () const
Returns the array of the maximum function values of each dimension within the definition range, not regarding the sign of the function values. More...

Polynomial integral () const

operator() (const Real &x, const ::std::size_t &derivative=0) const
Evaluates the function or a derivative thereof for a given value x. More...

Polynomial operator+ (const Polynomial &rhs) const

Polynomialoperator+= (const T &rhs)

Polynomialoperator+= (const Polynomial &rhs)

Polynomial operator- () const

Polynomial operator- (const Polynomial &rhs) const

Polynomialoperator-= (const T &rhs)

Polynomialoperator-= (const Polynomial &rhs)

Polynomialoperator*= (const Real &rhs)

Polynomialoperator/= (const Real &rhs)

static ::std::vector< RealrealRoots (const ::std::vector< Real > &c)
Calculates the real roots (or, zeros) for given polynomial coefficients. More...

Polynomial scaledX (const Real &factor) const
Stretches the x-axis of a polynomial by a given factor. More...

Polynomial translatedX (const Real &translation) const
Translates a polynomial along the x-axis by a given parameter translation. More...

Public Member Functions inherited from rl::math::Function< T >
Function ()

virtual ~Function ()

Real duration () const

Reallower ()

const Reallower () const

Realupper ()

const Realupper () const

## Static Public Member Functions

static Polynomial CubicFirst (const T &y0, const T &y1, const T &yd0, const T &yd1, const Real &x1=1)

static Polynomial CubicSecond (const T &y0, const T &y1, const T &ydd0, const T &ydd1, const Real &x1=1)

static Polynomial Linear (const T &y0, const T &y1, const Real &x1=1)

static Polynomial Quadratic (const T &y0, const T &y1, const T &yd0, const Real &x1=1)

static Polynomial QuarticFirstSecond (const T &y0, const T &y1, const T &yd0, const T &yd1, const T &ydd0, const Real &x1=1)

static Polynomial QuinticFirstSecond (const T &y0, const T &y1, const T &yd0, const T &yd1, const T &ydd0, const T &ydd1, const Real &x1=1)

static Polynomial SepticFirstSecondThird (const T &y0, const T &y1, const T &yd0, const T &yd1, const T &ydd0, const T &ydd1, const T &yddd0, const T &yddd1, const Real &x1=1)

static Polynomial SexticFirstSecondThird (const T &y0, const T &y1, const T &yd0, const T &yd1, const T &ydd0, const T &ydd1, const T &yddd0, const Real &x1=1)

## Protected Attributes

::std::vector< T > c

Protected Attributes inherited from rl::math::Function< T >
Real x0

Real x1

## Friends

Polynomial operator+ (const T &lhs, const Polynomial &rhs)

Polynomial operator+ (const Polynomial &lhs, const T &rhs)

Polynomial operator- (const T &lhs, const Polynomial &rhs)

Polynomial operator- (const Polynomial &lhs, const T &rhs)

Polynomial operator* (const Real &lhs, const Polynomial &rhs)

Polynomial operator* (const Polynomial &lhs, const Real &rhs)

Polynomial operator/ (const Real &lhs, const Polynomial &rhs)

Polynomial operator/ (const Polynomial &lhs, const Real &rhs)

## Detailed Description

### template<typename T> class rl::math::Polynomial< T >

A vector-valued polynomial function from Real -> T.

A Polynomial is indefinitely often differentiable and can be evaluated efficiently.

## ◆ Polynomial()

template<typename T>
 rl::math::Polynomial< T >::Polynomial ( const ::std::size_t & degree )
inline

## ◆ ~Polynomial()

template<typename T>
 virtual rl::math::Polynomial< T >::~Polynomial ( )
inlinevirtual

## ◆ clone()

template<typename T>
 Polynomial* rl::math::Polynomial< T >::clone ( ) const
inlinevirtual

## ◆ coefficient() [1/2]

template<typename T>
 T& rl::math::Polynomial< T >::coefficient ( const ::std::size_t & i )
inline

## ◆ coefficient() [2/2]

template<typename T>
 const T& rl::math::Polynomial< T >::coefficient ( const ::std::size_t & i ) const
inline

## ◆ CubicFirst()

template<typename T>
 static Polynomial rl::math::Polynomial< T >::CubicFirst ( const T & y0, const T & y1, const T & yd0, const T & yd1, const Real & x1 = 1 )
inlinestatic

## ◆ CubicSecond()

template<typename T>
 static Polynomial rl::math::Polynomial< T >::CubicSecond ( const T & y0, const T & y1, const T & ydd0, const T & ydd1, const Real & x1 = 1 )
inlinestatic

## ◆ degree()

template<typename T>
 ::std::size_t rl::math::Polynomial< T >::degree ( ) const
inline

## ◆ derivative()

template<typename T>
 Polynomial rl::math::Polynomial< T >::derivative ( ) const
inline

## ◆ getAbsoluteMaximum()

template<typename T>
 T rl::math::Polynomial< T >::getAbsoluteMaximum ( ) const
inline

Returns the array of the maximum function values of each dimension within the definition range, not regarding the sign of the function values.

For polynomials higher than cubics, Eigen::PolynomialSolver is required and calculations become iterative, without guaranteeing convergence. A common use case is to verify speed limits with the comparison (trajectory.derivate().getAbsoluteMaximum() < maximumSpeed).all()

## ◆ integral()

template<typename T>
 Polynomial rl::math::Polynomial< T >::integral ( ) const
inline

## ◆ Linear()

template<typename T>
 static Polynomial rl::math::Polynomial< T >::Linear ( const T & y0, const T & y1, const Real & x1 = 1 )
inlinestatic

## ◆ operator()()

template<typename T>
 T rl::math::Polynomial< T >::operator() ( const Real & x, const ::std::size_t & derivative = 0 ) const
inlinevirtual

Evaluates the function or a derivative thereof for a given value x.

Some functions are only defined in the interval [lower(), upper()], and fail to evaluate outside of [lower() - FUNCTION_BOUNDARY, upper() + FUNCTION_BOUNDARY]. In Debug mode, this is signaled by failing asserts. In Release mode, the function is evaluated if algebraically possible, or will return an empty ArrayX otherwise. Some functions are not indefinitely often differentiable, and will return a NaN array for all higher orders.

Parameters
 [in] x Input value of the function or derivative [in] derivative Order of the derivative to be evaluated

Implements rl::math::Function< T >.

## ◆ operator*=()

template<typename T>
 Polynomial& rl::math::Polynomial< T >::operator*= ( const Real & rhs )
inline

## ◆ operator+()

template<typename T>
 Polynomial rl::math::Polynomial< T >::operator+ ( const Polynomial< T > & rhs ) const
inline

## ◆ operator+=() [1/2]

template<typename T>
 Polynomial& rl::math::Polynomial< T >::operator+= ( const T & rhs )
inline

## ◆ operator+=() [2/2]

template<typename T>
 Polynomial& rl::math::Polynomial< T >::operator+= ( const Polynomial< T > & rhs )
inline

## ◆ operator-() [1/2]

template<typename T>
 Polynomial rl::math::Polynomial< T >::operator- ( ) const
inline

## ◆ operator-() [2/2]

template<typename T>
 Polynomial rl::math::Polynomial< T >::operator- ( const Polynomial< T > & rhs ) const
inline

## ◆ operator-=() [1/2]

template<typename T>
 Polynomial& rl::math::Polynomial< T >::operator-= ( const T & rhs )
inline

## ◆ operator-=() [2/2]

template<typename T>
 Polynomial& rl::math::Polynomial< T >::operator-= ( const Polynomial< T > & rhs )
inline

## ◆ operator/=()

template<typename T>
 Polynomial& rl::math::Polynomial< T >::operator/= ( const Real & rhs )
inline

template<typename T>
 static Polynomial rl::math::Polynomial< T >::Quadratic ( const T & y0, const T & y1, const T & yd0, const Real & x1 = 1 )
inlinestatic

## ◆ QuarticFirstSecond()

template<typename T>
 static Polynomial rl::math::Polynomial< T >::QuarticFirstSecond ( const T & y0, const T & y1, const T & yd0, const T & yd1, const T & ydd0, const Real & x1 = 1 )
inlinestatic

## ◆ QuinticFirstSecond()

template<typename T>
 static Polynomial rl::math::Polynomial< T >::QuinticFirstSecond ( const T & y0, const T & y1, const T & yd0, const T & yd1, const T & ydd0, const T & ydd1, const Real & x1 = 1 )
inlinestatic

## ◆ realRoots()

template<typename T>
 static ::std::vector rl::math::Polynomial< T >::realRoots ( const ::std::vector< Real > & c )
inline

Calculates the real roots (or, zeros) for given polynomial coefficients.

For degrees higher than 3, Eigen::PolynomialSolver is required and calculations become iterative, without guaranteeing convergence.

## ◆ scaledX()

template<typename T>
 Polynomial rl::math::Polynomial< T >::scaledX ( const Real & factor ) const
inline

Stretches the x-axis of a polynomial by a given factor.

The returned, scaled polynomial p' of a given polynomial p fulfills p'(x * factor) = p(x), and p'.duration() = factor * p.duration(). This is done by recalculating the underlying polynomial coefficients.

## ◆ SepticFirstSecondThird()

template<typename T>
 static Polynomial rl::math::Polynomial< T >::SepticFirstSecondThird ( const T & y0, const T & y1, const T & yd0, const T & yd1, const T & ydd0, const T & ydd1, const T & yddd0, const T & yddd1, const Real & x1 = 1 )
inlinestatic

## ◆ SexticFirstSecondThird()

template<typename T>
 static Polynomial rl::math::Polynomial< T >::SexticFirstSecondThird ( const T & y0, const T & y1, const T & yd0, const T & yd1, const T & ydd0, const T & ydd1, const T & yddd0, const Real & x1 = 1 )
inlinestatic

## ◆ translatedX()

template<typename T>
 Polynomial rl::math::Polynomial< T >::translatedX ( const Real & translation ) const
inline

Translates a polynomial along the x-axis by a given parameter translation.

The returned polynomial p' for a given polynomial p fulfills p'(x - translation) = p(x) This is done by recalculating the underlying polynomial coefficients.

## ◆ operator* [1/2]

template<typename T>
 Polynomial operator* ( const Real & lhs, const Polynomial< T > & rhs )
friend

## ◆ operator* [2/2]

template<typename T>
 Polynomial operator* ( const Polynomial< T > & lhs, const Real & rhs )
friend

## ◆ operator+ [1/2]

template<typename T>
 Polynomial operator+ ( const T & lhs, const Polynomial< T > & rhs )
friend

## ◆ operator+ [2/2]

template<typename T>
 Polynomial operator+ ( const Polynomial< T > & lhs, const T & rhs )
friend

## ◆ operator- [1/2]

template<typename T>
 Polynomial operator- ( const T & lhs, const Polynomial< T > & rhs )
friend

## ◆ operator- [2/2]

template<typename T>
 Polynomial operator- ( const Polynomial< T > & lhs, const T & rhs )
friend

## ◆ operator/ [1/2]

template<typename T>
 Polynomial operator/ ( const Real & lhs, const Polynomial< T > & rhs )
friend

## ◆ operator/ [2/2]

template<typename T>
 Polynomial operator/ ( const Polynomial< T > & lhs, const Real & rhs )
friend

## ◆ c

template<typename T>
 ::std::vector rl::math::Polynomial< T >::c
protected

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