# pydrake.polynomial

class pydrake.polynomial.Polynomial

A scalar multi-variate polynomial, modeled after the msspoly in spotless.

Polynomial represents a list of additive Monomials, each one of which is a product of a constant coefficient (of T, which by default is double) and any number of distinct Terms (variables raised to positive integer powers).

Variables are identified by integer indices rather than symbolic names, but an automatic facility is provided to convert variable names up to four characters into unique integers, provided those variables are named using only lowercase letters and the “#_.” characters followed by a number. For example, valid names include “dx4” and “m_x”.

Monomials which have the same variables and powers may be constructed but will be automatically combined: (3 * a * b * a) + (1.5 * b * a**2) will be reduced to (4.5 * b * a**2) internally after construction.

Polynomials can be added, subtracted, and multiplied. They may only be divided by scalars (of T) because Polynomials are not closed under division.

Note

This class is templated; see `Polynomial_` for the list of instantiations.

__init__(*args, **kwargs)

1. __init__(self: pydrake.polynomial.Polynomial) -> None

Construct the vacuous polynomial, “0”.

1. __init__(self: pydrake.polynomial.Polynomial, arg0: float) -> None

Construct a Polynomial of a single constant. e.g. “5”.

1. __init__(self: pydrake.polynomial.Polynomial, coefficients: numpy.ndarray[numpy.float64[m, 1]]) -> None

A constructor for univariate polynomials: takes a vector of coefficients for the x**0, x**1, x**2, x**3… Monomials. All terms are always added, even if a coefficient is zero.

CoefficientsAlmostEqual(self: pydrake.polynomial.Polynomial, other: pydrake.polynomial.Polynomial, tol: float = 0.0, tol_type: pydrake.common.ToleranceType = <ToleranceType.kAbsolute: 0>) bool

Checks if a Polynomial is approximately equal to this one.

Checks that every coefficient of `other` is within `tol` of the corresponding coefficient of this Polynomial.

Note: When `tol_type` is kRelative, if any monomials appear in `this` or `other` but not both, then the method returns false (since the comparison is relative to a missing zero coefficient). Use kAbsolute if you want to ignore non-matching monomials with coefficients less than `tol`.

Derivative(self: pydrake.polynomial.Polynomial, derivative_order: int = 1)

Takes the derivative of this (univariate) Polynomial.

Returns a new Polynomial that is the derivative of this one in its sole variable.

Raises

RuntimeError if this Polynomial is not univariate.

If derivative_order is given, takes the nth derivative of this Polynomial.

EvaluateUnivariate(self: pydrake.polynomial.Polynomial, x: float, derivative_order: int = 0) float

Evaluate a univariate Polynomial at a specific point.

Evaluates a univariate Polynomial at the given x.

Raises

RuntimeError if this Polynomial is not univariate.

`x` may be of any type supporting the ** and + operations (which can be different from both CoefficientsType and RealScalar).

This method may also be used for efficient evaluation of the derivatives of the univariate polynomial, evaluated at `x`. `derivative_order` = 0 (the default) returns the polynomial value without differentiation. `derivative_order` = 1 returns the first derivative, etc.

Precondition:

derivative_order must be non-negative.

GetCoefficients(self: pydrake.polynomial.Polynomial) numpy.ndarray[numpy.float64[m, 1]]
GetDegree(self: pydrake.polynomial.Polynomial) int

Returns the highest degree of any Monomial in this Polynomial.

The degree of a multivariate Monomial is the product of the degrees of each of its terms.

GetNumberOfCoefficients(self: pydrake.polynomial.Polynomial) int

Returns the number of unique Monomials (and thus the number of coefficients) in this Polynomial.

Integral(self: pydrake.polynomial.Polynomial, integration_constant: float = 0.0)

Takes the integral of this (univariate, non-constant) Polynomial.

Returns a new Polynomial that is the indefinite integral of this one in its sole variable.

Raises
• RuntimeError if this Polynomial is not univariate, or if it has no

• variables.

If integration_constant is given, adds that constant as the constant term (zeroth-order coefficient) of the resulting Polynomial.

IsAffine(self: pydrake.polynomial.Polynomial) bool

Returns true iff this is a sum of terms of degree 1, plus a constant.

template pydrake.polynomial.Polynomial_

Instantiations: `Polynomial_[float]`, `Polynomial_[AutoDiffXd]`, `Polynomial_[Expression]`

class pydrake.polynomial.Polynomial_[AutoDiffXd]

A scalar multi-variate polynomial, modeled after the msspoly in spotless.

Polynomial represents a list of additive Monomials, each one of which is a product of a constant coefficient (of T, which by default is double) and any number of distinct Terms (variables raised to positive integer powers).

Variables are identified by integer indices rather than symbolic names, but an automatic facility is provided to convert variable names up to four characters into unique integers, provided those variables are named using only lowercase letters and the “#_.” characters followed by a number. For example, valid names include “dx4” and “m_x”.

Monomials which have the same variables and powers may be constructed but will be automatically combined: (3 * a * b * a) + (1.5 * b * a**2) will be reduced to (4.5 * b * a**2) internally after construction.

Polynomials can be added, subtracted, and multiplied. They may only be divided by scalars (of T) because Polynomials are not closed under division.

__init__(*args, **kwargs)

1. __init__(self: pydrake.polynomial.Polynomial_[AutoDiffXd]) -> None

Construct the vacuous polynomial, “0”.

1. __init__(self: pydrake.polynomial.Polynomial_[AutoDiffXd], arg0: pydrake.autodiffutils.AutoDiffXd) -> None

Construct a Polynomial of a single constant. e.g. “5”.

1. __init__(self: pydrake.polynomial.Polynomial_[AutoDiffXd], coefficients: numpy.ndarray[numpy.float64[m, 1]]) -> None

A constructor for univariate polynomials: takes a vector of coefficients for the x**0, x**1, x**2, x**3… Monomials. All terms are always added, even if a coefficient is zero.

CoefficientsAlmostEqual(self: pydrake.polynomial.Polynomial_[AutoDiffXd], other: pydrake.polynomial.Polynomial_[AutoDiffXd], tol: pydrake.autodiffutils.AutoDiffXd = 0.0, tol_type: pydrake.common.ToleranceType = <ToleranceType.kAbsolute: 0>) bool

Checks if a Polynomial is approximately equal to this one.

Checks that every coefficient of `other` is within `tol` of the corresponding coefficient of this Polynomial.

Note: When `tol_type` is kRelative, if any monomials appear in `this` or `other` but not both, then the method returns false (since the comparison is relative to a missing zero coefficient). Use kAbsolute if you want to ignore non-matching monomials with coefficients less than `tol`.

Derivative(self: pydrake.polynomial.Polynomial_[AutoDiffXd], derivative_order: int = 1) pydrake.polynomial.Polynomial_[AutoDiffXd]

Takes the derivative of this (univariate) Polynomial.

Returns a new Polynomial that is the derivative of this one in its sole variable.

Raises

RuntimeError if this Polynomial is not univariate.

If derivative_order is given, takes the nth derivative of this Polynomial.

EvaluateUnivariate(self: pydrake.polynomial.Polynomial_[AutoDiffXd], x: pydrake.autodiffutils.AutoDiffXd, derivative_order: int = 0)

Evaluate a univariate Polynomial at a specific point.

Evaluates a univariate Polynomial at the given x.

Raises

RuntimeError if this Polynomial is not univariate.

`x` may be of any type supporting the ** and + operations (which can be different from both CoefficientsType and RealScalar).

This method may also be used for efficient evaluation of the derivatives of the univariate polynomial, evaluated at `x`. `derivative_order` = 0 (the default) returns the polynomial value without differentiation. `derivative_order` = 1 returns the first derivative, etc.

Precondition:

derivative_order must be non-negative.

GetCoefficients(self: pydrake.polynomial.Polynomial_[AutoDiffXd]) numpy.ndarray[object[m, 1]]
GetDegree(self: pydrake.polynomial.Polynomial_[AutoDiffXd]) int

Returns the highest degree of any Monomial in this Polynomial.

The degree of a multivariate Monomial is the product of the degrees of each of its terms.

GetNumberOfCoefficients(self: pydrake.polynomial.Polynomial_[AutoDiffXd]) int

Returns the number of unique Monomials (and thus the number of coefficients) in this Polynomial.

Integral(self: pydrake.polynomial.Polynomial_[AutoDiffXd], integration_constant: pydrake.autodiffutils.AutoDiffXd = 0.0) pydrake.polynomial.Polynomial_[AutoDiffXd]

Takes the integral of this (univariate, non-constant) Polynomial.

Returns a new Polynomial that is the indefinite integral of this one in its sole variable.

Raises
• RuntimeError if this Polynomial is not univariate, or if it has no

• variables.

If integration_constant is given, adds that constant as the constant term (zeroth-order coefficient) of the resulting Polynomial.

IsAffine(self: pydrake.polynomial.Polynomial_[AutoDiffXd]) bool

Returns true iff this is a sum of terms of degree 1, plus a constant.

class pydrake.polynomial.Polynomial_[Expression]

A scalar multi-variate polynomial, modeled after the msspoly in spotless.

Polynomial represents a list of additive Monomials, each one of which is a product of a constant coefficient (of T, which by default is double) and any number of distinct Terms (variables raised to positive integer powers).

Variables are identified by integer indices rather than symbolic names, but an automatic facility is provided to convert variable names up to four characters into unique integers, provided those variables are named using only lowercase letters and the “#_.” characters followed by a number. For example, valid names include “dx4” and “m_x”.

Monomials which have the same variables and powers may be constructed but will be automatically combined: (3 * a * b * a) + (1.5 * b * a**2) will be reduced to (4.5 * b * a**2) internally after construction.

Polynomials can be added, subtracted, and multiplied. They may only be divided by scalars (of T) because Polynomials are not closed under division.

__init__(*args, **kwargs)

1. __init__(self: pydrake.polynomial.Polynomial_[Expression]) -> None

Construct the vacuous polynomial, “0”.

1. __init__(self: pydrake.polynomial.Polynomial_[Expression], arg0: pydrake.symbolic.Expression) -> None

Construct a Polynomial of a single constant. e.g. “5”.

1. __init__(self: pydrake.polynomial.Polynomial_[Expression], coefficients: numpy.ndarray[numpy.float64[m, 1]]) -> None

A constructor for univariate polynomials: takes a vector of coefficients for the x**0, x**1, x**2, x**3… Monomials. All terms are always added, even if a coefficient is zero.

CoefficientsAlmostEqual(self: pydrake.polynomial.Polynomial_[Expression], other: pydrake.polynomial.Polynomial_[Expression], tol: pydrake.symbolic.Expression = 0.0, tol_type: pydrake.common.ToleranceType = <ToleranceType.kAbsolute: 0>)

Checks if a Polynomial is approximately equal to this one.

Checks that every coefficient of `other` is within `tol` of the corresponding coefficient of this Polynomial.

Note: When `tol_type` is kRelative, if any monomials appear in `this` or `other` but not both, then the method returns false (since the comparison is relative to a missing zero coefficient). Use kAbsolute if you want to ignore non-matching monomials with coefficients less than `tol`.

Derivative(self: pydrake.polynomial.Polynomial_[Expression], derivative_order: int = 1) pydrake.polynomial.Polynomial_[Expression]

Takes the derivative of this (univariate) Polynomial.

Returns a new Polynomial that is the derivative of this one in its sole variable.

Raises

RuntimeError if this Polynomial is not univariate.

If derivative_order is given, takes the nth derivative of this Polynomial.

EvaluateUnivariate(self: pydrake.polynomial.Polynomial_[Expression], x: pydrake.symbolic.Expression, derivative_order: int = 0)

Evaluate a univariate Polynomial at a specific point.

Evaluates a univariate Polynomial at the given x.

Raises

RuntimeError if this Polynomial is not univariate.

`x` may be of any type supporting the ** and + operations (which can be different from both CoefficientsType and RealScalar).

This method may also be used for efficient evaluation of the derivatives of the univariate polynomial, evaluated at `x`. `derivative_order` = 0 (the default) returns the polynomial value without differentiation. `derivative_order` = 1 returns the first derivative, etc.

Precondition:

derivative_order must be non-negative.

GetCoefficients(self: pydrake.polynomial.Polynomial_[Expression]) numpy.ndarray[object[m, 1]]
GetDegree(self: pydrake.polynomial.Polynomial_[Expression]) int

Returns the highest degree of any Monomial in this Polynomial.

The degree of a multivariate Monomial is the product of the degrees of each of its terms.

GetNumberOfCoefficients(self: pydrake.polynomial.Polynomial_[Expression]) int

Returns the number of unique Monomials (and thus the number of coefficients) in this Polynomial.

Integral(self: pydrake.polynomial.Polynomial_[Expression], integration_constant: pydrake.symbolic.Expression = 0.0) pydrake.polynomial.Polynomial_[Expression]

Takes the integral of this (univariate, non-constant) Polynomial.

Returns a new Polynomial that is the indefinite integral of this one in its sole variable.

Raises
• RuntimeError if this Polynomial is not univariate, or if it has no

• variables.

If integration_constant is given, adds that constant as the constant term (zeroth-order coefficient) of the resulting Polynomial.

IsAffine(self: pydrake.polynomial.Polynomial_[Expression]) bool

Returns true iff this is a sum of terms of degree 1, plus a constant.