Drake
Monomial Class Reference

Represents a monomial, a product of powers of variables with non-negative integer exponents. More...

#include <drake/common/symbolic_monomial.h>

Public Member Functions

 Monomial ()=default
 Constructs a monomial equal to 1. More...
 
 Monomial (std::nullptr_t)
 Constructs a default value. More...
 
 Monomial (const std::map< Variable, int > &powers)
 Constructs a Monomial from powers. More...
 
 Monomial (const Eigen::Ref< const VectorX< Variable >> &vars, const Eigen::Ref< const Eigen::VectorXi > &exponents)
 Constructs a Monomial from a vector of variables vars and their corresponding integer exponents exponents. More...
 
 Monomial (const Expression &e)
 Converts an expression to a monomial if the expression is written as ∏ᵢpow(xᵢ, kᵢ), otherwise throws a runtime error. More...
 
 Monomial (const Variable &var)
 Constructs a Monomial from var. More...
 
 Monomial (const Variable &var, int exponent)
 Constructs a Monomial from var and exponent. More...
 
int degree (const Variable &v) const
 Returns the degree of this Monomial in a variable v. More...
 
int total_degree () const
 Returns the total degree of this Monomial. More...
 
Variables GetVariables () const
 Returns the set of variables in this monomial. More...
 
const std::map< Variable, int > & get_powers () const
 Returns the internal representation of Monomial, the map from a base (Variable) to its exponent (int). More...
 
double Evaluate (const Environment &env) const
 Evaluates under a given environment env. More...
 
std::pair< double, MonomialEvaluatePartial (const Environment &env) const
 Partially evaluates using a given environment env. More...
 
Expression ToExpression () const
 Returns a symbolic expression representing this monomial. More...
 
bool operator== (const Monomial &m) const
 Checks if this monomial and m represent the same monomial. More...
 
bool operator!= (const Monomial &m) const
 Checks if this monomial and m do not represent the same monomial. More...
 
Monomialoperator*= (const Monomial &m)
 Returns this monomial multiplied by m. More...
 
Monomialpow_in_place (int p)
 Returns this monomial raised to p. More...
 
Implements CopyConstructible, CopyAssignable, MoveConstructible, MoveAssignable
 Monomial (const Monomial &)=default
 
Monomialoperator= (const Monomial &)=default
 
 Monomial (Monomial &&)=default
 
Monomialoperator= (Monomial &&)=default
 

Friends

template<class HashAlgorithm >
void hash_append (HashAlgorithm &hasher, const Monomial &item) noexcept
 Implements the hash_append generic hashing concept. More...
 
std::ostream & operator<< (std::ostream &out, const Monomial &m)
 

Detailed Description

Represents a monomial, a product of powers of variables with non-negative integer exponents.

Note that it does not include the coefficient part of a monomial.

Constructor & Destructor Documentation

Monomial ( const Monomial )
default
Monomial ( Monomial &&  )
default
Monomial ( )
default

Constructs a monomial equal to 1.

Namely the total degree is zero.

Monomial ( std::nullptr_t  )
inlineexplicit

Constructs a default value.

This overload is used by Eigen when EIGEN_INITIALIZE_MATRICES_BY_ZERO is enabled.

Monomial ( const std::map< Variable, int > &  powers)
explicit

Constructs a Monomial from powers.

Exceptions
std::logic_errorif powers includes a negative exponent.
Monomial ( const Eigen::Ref< const VectorX< Variable >> &  vars,
const Eigen::Ref< const Eigen::VectorXi > &  exponents 
)

Constructs a Monomial from a vector of variables vars and their corresponding integer exponents exponents.

For example, Monomial([x, y, z], [2, 0, 1]) constructs a Monomial x²z.

Precondition
The size of vars should be the same as the size of exponents.
Exceptions
std::logic_errorif exponents includes a negative integer.
Monomial ( const Expression e)
explicit

Converts an expression to a monomial if the expression is written as ∏ᵢpow(xᵢ, kᵢ), otherwise throws a runtime error.

Precondition
is_polynomial(e) should be true.
Monomial ( const Variable var)
explicit

Constructs a Monomial from var.

Monomial ( const Variable var,
int  exponent 
)

Constructs a Monomial from var and exponent.

Member Function Documentation

int degree ( const Variable v) const

Returns the degree of this Monomial in a variable v.

double Evaluate ( const Environment env) const

Evaluates under a given environment env.

Exceptions
std::out_of_rangeexception if there is a variable in this monomial whose assignment is not provided by env.
pair< double, Monomial > EvaluatePartial ( const Environment env) const

Partially evaluates using a given environment env.

The evaluation result is of type pair<double, Monomial>. The first component (: double) represents the coefficient part while the second component represents the remaining parts of the Monomial which was not evaluated.

Example 1. Evaluate with a fully-specified environment (x³*y²).EvaluatePartial({{x, 2}, {y, 3}}) = (2³ * 3² = 8 * 9 = 72, Monomial{} = 1).

Example 2. Evaluate with a partial environment (x³*y²).EvaluatePartial({{x, 2}}) = (2³ = 8, y²).

const std::map<Variable, int>& get_powers ( ) const
inline

Returns the internal representation of Monomial, the map from a base (Variable) to its exponent (int).

Variables GetVariables ( ) const

Returns the set of variables in this monomial.

bool operator!= ( const Monomial m) const

Checks if this monomial and m do not represent the same monomial.

Monomial & operator*= ( const Monomial m)

Returns this monomial multiplied by m.

Monomial& operator= ( const Monomial )
default
Monomial& operator= ( Monomial &&  )
default
bool operator== ( const Monomial m) const

Checks if this monomial and m represent the same monomial.

Two monomials are equal iff they contain the same variable raised to the same exponent.

Monomial & pow_in_place ( int  p)

Returns this monomial raised to p.

Exceptions
std::runtime_errorif p is negative.
Expression ToExpression ( ) const

Returns a symbolic expression representing this monomial.

int total_degree ( ) const
inline

Returns the total degree of this Monomial.

Friends And Related Function Documentation

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

Implements the hash_append generic hashing concept.

std::ostream& operator<< ( std::ostream &  out,
const Monomial m 
)
friend

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