Drake
Polynomial Class Reference

Represents symbolic polynomials. More...

#include <common/symbolic_polynomial.h>

## Public Types

using MapType = std::unordered_map< Monomial, Expression >

## Public Member Functions

Polynomial ()=default
Constructs a zero polynomial. More...

Polynomial (MapType init)
Constructs a polynomial from a map, MonomialExpression. More...

Polynomial (const Monomial &m)
Constructs a polynomial from a monomial m. More...

Polynomial (const Expression &e)
Constructs a polynomial from an expression e. More...

Polynomial (const Expression &e, const Variables &indeterminates)
Constructs a polynomial from an expression e by decomposing it with respect to indeterminates. More...

Variables indeterminates () const
Returns the indeterminates of this polynomial. More...

Variables decision_variables () const
Returns the decision variables of this polynomial. More...

int Degree (const Variable &v) const
Returns the highest degree of this polynomial in a variable v. More...

int TotalDegree () const
Returns the total degree of this polynomial. More...

const MapTypemonomial_to_coefficient_map () const
Returns the mapping from a Monomial to its corresponding coefficient of this polynomial. More...

Expression ToExpression () const
Returns an equivalent symbolic expression of this polynomial. More...

Polynomial Differentiate (const Variable &x) const
Differentiates this polynomial with respect to the variable x. More...

template<typename Derived >
Eigen::Matrix< Polynomial, 1, Derived::RowsAtCompileTime > Jacobian (const Eigen::MatrixBase< Derived > &vars) const
Computes the Jacobian matrix J of the polynomial with respect to vars. More...

double Evaluate (const Environment &env) const
Evaluates this polynomial under a given environment env. More...

Polynomial EvaluatePartial (const Environment &env) const
Partially evaluates this polynomial using an environment env. More...

Polynomial EvaluatePartial (const Variable &var, double c) const
Partially evaluates this polynomial by substituting var with c. More...

PolynomialAddProduct (const Expression &coeff, const Monomial &m)
Adds coeff * m to this polynomial. More...

Polynomialoperator+= (const Polynomial &p)

Polynomialoperator+= (const Monomial &m)

Polynomialoperator+= (double c)

Polynomialoperator-= (const Polynomial &p)

Polynomialoperator-= (const Monomial &m)

Polynomialoperator-= (double c)

Polynomialoperator*= (const Polynomial &p)

Polynomialoperator*= (const Monomial &m)

Polynomialoperator*= (double c)

bool EqualTo (const Polynomial &p) const
Returns true if this polynomial and p are structurally equal. More...

Formula operator== (const Polynomial &p) const
Returns a symbolic formula representing the condition where this polynomial and p are the same. More...

Formula operator!= (const Polynomial &p) const
Returns a symbolic formula representing the condition where this polynomial and p are not the same. More...

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

Polynomialoperator= (const Polynomial &)=default

Polynomial (Polynomial &&)=default

Polynomialoperator= (Polynomial &&)=default

## Friends

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

## Detailed Description

Represents symbolic polynomials.

A symbolic polynomial keeps a mapping from a monomial of indeterminates to its coefficient in a symbolic expression.

A polynomial p has to satisfy an invariant such that p.decision_variables() ∩ p.indeterminates() = ∅. We have CheckInvariant() method to check the invariant.

Note that arithmetic operations (+,-,*) between a Polynomial and a Variable are not provided. The problem is that Variable class has no intrinsic information if a variable is a decision variable or an indeterminate while we need this information to perform arithmetic operations over Polynomials.

## Member Typedef Documentation

 using MapType = std::unordered_map

## Constructor & Destructor Documentation

 Polynomial ( )
default

Constructs a zero polynomial.

Here is the caller graph for this function:

 Polynomial ( const Polynomial & )
default
 Polynomial ( Polynomial && )
default
 Polynomial ( MapType init )
explicit

Constructs a polynomial from a map, MonomialExpression.

 Polynomial ( const Monomial & m )

Constructs a polynomial from a monomial m.

Note that all variables in m are considered as indeterminates.

Here is the call graph for this function:

 Polynomial ( const Expression & e )
explicit

Constructs a polynomial from an expression e.

Note that all variables in e are considered as indeterminates.

Exceptions
 std::runtime_error if e is not a polynomial.

Here is the call graph for this function:

 Polynomial ( const Expression & e, const Variables & indeterminates )

Constructs a polynomial from an expression e by decomposing it with respect to indeterminates.

Note
It collects the intersection of the variables appeared in e and the provided indeterminates.
Exceptions
 std::runtime_error if e is not a polynomial in indeterminates.

## Member Function Documentation

 Polynomial & AddProduct ( const Expression & coeff, const Monomial & m )

Adds coeff * m to this polynomial.

Here is the call graph for this function:

Here is the caller graph for this function:

 Variables decision_variables ( ) const

Returns the decision variables of this polynomial.

Here is the caller graph for this function:

 int Degree ( const Variable & v ) const

Returns the highest degree of this polynomial in a variable v.

Here is the call graph for this function:

 Polynomial Differentiate ( const Variable & x ) const

Differentiates this polynomial with respect to the variable x.

Note that a variable x can be either a decision variable or an indeterminate.

Here is the call graph for this function:

Here is the caller graph for this function:

 bool EqualTo ( const Polynomial & p ) const

Returns true if this polynomial and p are structurally equal.

Here is the call graph for this function:

Here is the caller graph for this function:

 double Evaluate ( const Environment & env ) const

Evaluates this polynomial under a given environment env.

Exceptions
 std::out_of_range if there is a variable in this polynomial whose assignment is not provided by env.

Here is the caller graph for this function:

 Polynomial EvaluatePartial ( const Environment & env ) const

Partially evaluates this polynomial using an environment env.

Exceptions
 std::runtime_error if NaN is detected during evaluation.

Here is the call graph for this function:

Here is the caller graph for this function:

 Polynomial EvaluatePartial ( const Variable & var, double c ) const

Partially evaluates this polynomial by substituting var with c.

Exceptions
 std::runtime_error if NaN is detected at any point during evaluation.

Here is the call graph for this function:

 Variables indeterminates ( ) const

Returns the indeterminates of this polynomial.

Here is the caller graph for this function:

 Eigen::Matrix Jacobian ( const Eigen::MatrixBase< Derived > & vars ) const
inline

Computes the Jacobian matrix J of the polynomial with respect to vars.

J(0,i) contains ∂f/∂vars(i).

Here is the call graph for this function:

 const Polynomial::MapType & monomial_to_coefficient_map ( ) const

Returns the mapping from a Monomial to its corresponding coefficient of this polynomial.

Here is the caller graph for this function:

 Formula operator!= ( const Polynomial & p ) const

Returns a symbolic formula representing the condition where this polynomial and p are not the same.

Here is the caller graph for this function:

 Polynomial & operator*= ( const Polynomial & p )

Here is the call graph for this function:

Here is the caller graph for this function:

 Polynomial & operator*= ( const Monomial & m )
 Polynomial & operator*= ( double c )
 Polynomial & operator+= ( const Polynomial & p )

Here is the caller graph for this function:

 Polynomial & operator+= ( const Monomial & m )

Here is the call graph for this function:

 Polynomial & operator+= ( double c )

Here is the call graph for this function:

 Polynomial & operator-= ( const Polynomial & p )

Here is the caller graph for this function:

 Polynomial & operator-= ( const Monomial & m )

Here is the call graph for this function:

 Polynomial & operator-= ( double c )

Here is the call graph for this function:

 Polynomial& operator= ( const Polynomial & )
default
 Polynomial& operator= ( Polynomial && )
default
 Formula operator== ( const Polynomial & p ) const

Returns a symbolic formula representing the condition where this polynomial and p are the same.

Here is the call graph for this function:

Here is the caller graph for this function:

 Expression ToExpression ( ) const

Returns an equivalent symbolic expression of this polynomial.

Here is the call graph for this function:

Here is the caller graph for this function:

 int TotalDegree ( ) const

Returns the total degree of this polynomial.

Here is the call graph for this function:

Here is the caller graph for this function:

## Friends And Related Function Documentation

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

Implements the hash_append generic hashing concept.

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