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.
#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... | |
Eigen::VectorXd | Evaluate (const Eigen::Ref< const VectorX< symbolic::Variable >> &vars, const Eigen::Ref< const Eigen::MatrixXd > &vars_values) const |
Evaluates the monomial for a batch of data. More... | |
std::pair< double, Monomial > | EvaluatePartial (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... | |
Monomial & | operator *= (const Monomial &m) |
Returns this monomial multiplied by m . More... | |
Monomial & | pow_in_place (int p) |
Returns this monomial raised to p . More... | |
Implements CopyConstructible, CopyAssignable, MoveConstructible, MoveAssignable | |
Monomial (const Monomial &)=default | |
Monomial & | operator= (const Monomial &)=default |
Monomial (Monomial &&)=default | |
Monomial & | operator= (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) |
|
default |
Constructs a monomial equal to 1.
Namely the total degree is zero.
|
explicit |
Constructs a default value.
This overload is used by Eigen when EIGEN_INITIALIZE_MATRICES_BY_ZERO is enabled.
Constructs a monomial from powers
.
std::exception | if 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
.
vars
should be the same as the size of exponents
. std::exception | if exponents includes a negative integer. |
|
explicit |
Converts an expression to a monomial if the expression is written as ∏ᵢpow(xᵢ, kᵢ), otherwise throws a runtime error.
double Evaluate | ( | const Environment & | env | ) | const |
Evaluates under a given environment env
.
std::exception | if there is a variable in this monomial whose assignment is not provided by env . |
Eigen::VectorXd Evaluate | ( | const Eigen::Ref< const VectorX< symbolic::Variable >> & | vars, |
const Eigen::Ref< const Eigen::MatrixXd > & | vars_values | ||
) | const |
Evaluates the monomial for a batch of data.
We return monomial_vals such that monomial_vals(j) is obtained by substituting vars(i)
with vars_values(i, j)
, note that vars_values.rows() == vars.rows()
and vars_values.cols() == monomial_vals.rows()
.
vars | The variables whose value will be substituted. vars must contain all variables in this->GetVariables(). Also vars cannot contain any duplicate variables, namely vars(i) != vars(j) if i != j. |
vars_values | The i'th column of vars_values is the i'th data for vars . |
std::exception | if vars doesn't contain all the variables in this->GetVariables() . |
std::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 (a 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²).
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.
Checks if this monomial and m
do not represent the same monomial.
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.
Returns this monomial raised to p
.
std::exception | if p is negative. |
Expression ToExpression | ( | ) | const |
Returns a symbolic expression representing this monomial.
int total_degree | ( | ) | const |
Returns the total degree of this monomial.
|
friend |
Implements the hash_append generic hashing concept.
|
friend |