Drake
ChebyshevPolynomial Class Reference

## Detailed Description

Represents the Chebyshev polynomial of the first kind Tₙ(x).

One definition of Chebyshev polynomial of the first kind is Tₙ(cos(θ)) = cos(nθ) It can also be defined recursively as

T₀(x) = 1
T₁(x) = x
Tₙ₊₁(x) = 2xTₙ(x) − Tₙ₋₁(x)


#include <drake/common/symbolic_chebyshev_polynomial.h>

## Public Member Functions

ChebyshevPolynomial (Variable var, int degree)
Constructs a Chebyshev polynomial Tₙ(x) More...

const Variablevar () const
Getter for the variable. More...

int degree () const
Getter for the degree of the Chebyshev polynomial. More...

Polynomial ToPolynomial () const
Converts this Chebyshev polynomial to a polynomial with monomial basis. More...

double Evaluate (double var_val) const
Evaluates this Chebyshev polynomial at var_val. More...

bool operator== (const ChebyshevPolynomial &other) const
Checks if this and other represent the same Chebyshev polynomial. More...

bool operator!= (const ChebyshevPolynomial &other) const
Checks if this and other do not represent the same Chebyshev polynomial. More...

bool operator< (const ChebyshevPolynomial &other) const
Compare this to another Chebyshev polynomial, returns True if this is regarded as less than the other, otherwise returns false. More...

std::vector< std::pair< ChebyshevPolynomial, double > > Differentiate () const
Computes the differentiation of a Chebyshev polynomial dTₙ(x)/dx = nUₙ₋₁(x) where Uₙ₋₁(x) is a Chebyshev polynomial of the second kind. More...

Implements CopyConstructible, CopyAssignable, MoveConstructible, MoveAssignable
ChebyshevPolynomial (const ChebyshevPolynomial &)=default

ChebyshevPolynomialoperator= (const ChebyshevPolynomial &)=default

ChebyshevPolynomial (ChebyshevPolynomial &&)=default

ChebyshevPolynomialoperator= (ChebyshevPolynomial &&)=default

## Friends

template<class HashAlgorithm >
void hash_append (HashAlgorithm &hasher, const ChebyshevPolynomial &item) noexcept
Implements the hash_append generic hashing concept. More...

## ◆ ChebyshevPolynomial() [1/3]

 ChebyshevPolynomial ( const ChebyshevPolynomial & )
default

## ◆ ChebyshevPolynomial() [2/3]

 ChebyshevPolynomial ( ChebyshevPolynomial && )
default

## ◆ ChebyshevPolynomial() [3/3]

 ChebyshevPolynomial ( Variable var, int degree )

Constructs a Chebyshev polynomial Tₙ(x)

Parameters
 var The variable x degree The Chebyshev polynomial is of degree n.
Precondition
degree >= 0.

## ◆ degree()

 int degree ( ) const

Getter for the degree of the Chebyshev polynomial.

## ◆ Differentiate()

 std::vector > Differentiate ( ) const

Computes the differentiation of a Chebyshev polynomial dTₙ(x)/dx = nUₙ₋₁(x) where Uₙ₋₁(x) is a Chebyshev polynomial of the second kind.

Uₙ₋₁(x) can be written as a summation of Chebyshev polynomials of the first kind with lower degrees.

• If n is even dTₙ(x)/dx = 2n ∑ⱼ Tⱼ(x), j is odd and j <= n-1
• If n is odd dTₙ(x)/dx = 2n ∑ⱼ Tⱼ(x) - n, j is even and j <= n-1
• A special case is that dT₀(x)/dx = 0.
Return values
 chebyshev_coeff_pairs. sum(chebyshev_coeff_pairs[j].first * chebyshev_coeff_pairs[j].second) is the differentiation dTₙ(x)/dx. If n is even, then chebyshev_coeff_pairs[j] = (T₂ⱼ₋₁(x), 2n). If n is odd, then chebyshev_coeff_pairs[j] = (T₂ⱼ(x), 2n) for j >= 1, and chebyshev_coeff_pairs[0] = (T₀(x), n). For the special case when degree() == 0, we return an empty vector.

## ◆ Evaluate()

 double Evaluate ( double var_val ) const

Evaluates this Chebyshev polynomial at var_val.

## ◆ operator!=()

 bool operator!= ( const ChebyshevPolynomial & other ) const

Checks if this and other do not represent the same Chebyshev polynomial.

## ◆ operator<()

 bool operator< ( const ChebyshevPolynomial & other ) const

Compare this to another Chebyshev polynomial, returns True if this is regarded as less than the other, otherwise returns false.

If this.var() < other.var(), return True. If this.var() > other.var(), return False. If this.var() == other.var(), then return this.degree() < other.degree().

A special case is when this.degree() == 0 or other.degree() == 0. In this case the variable doesn't matter, and we return this.degree() < other.degree().

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

 ChebyshevPolynomial& operator= ( ChebyshevPolynomial && )
default

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

 ChebyshevPolynomial& operator= ( const ChebyshevPolynomial & )
default

## ◆ operator==()

 bool operator== ( const ChebyshevPolynomial & other ) const

Checks if this and other represent the same Chebyshev polynomial.

Two Chebyshev polynomials are equal iff their variable and degree are the same, or they both have degree 0.

Note
T₀(x) = T₀(y) = 1

## ◆ ToPolynomial()

 Polynomial ToPolynomial ( ) const

Converts this Chebyshev polynomial to a polynomial with monomial basis.

## ◆ var()

 const Variable& var ( ) const

Getter for the variable.

## ◆ hash_append

 void hash_append ( HashAlgorithm & hasher, const ChebyshevPolynomial & item )
friend

Implements the hash_append generic hashing concept.

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