W3cubDocs

/Eigen3

Polynomials module

This module provides a QR based polynomial solver.

To use this module, add

#include <unsupported/Eigen/Polynomials>

at the start of your source file.

class Eigen::PolynomialSolver< _Scalar, _Deg >
A polynomial solver. More...
class Eigen::PolynomialSolverBase< _Scalar, _Deg >
Defined to be inherited by polynomial solvers: it provides convenient methods such as. More...
template<typename Polynomial >
NumTraits< typename Polynomial::Scalar >::Real Eigen::cauchy_max_bound (const Polynomial &poly)
template<typename Polynomial >
NumTraits< typename Polynomial::Scalar >::Real Eigen::cauchy_min_bound (const Polynomial &poly)
template<typename Polynomials , typename T >
T Eigen::poly_eval (const Polynomials &poly, const T &x)
template<typename Polynomials , typename T >
T Eigen::poly_eval_horner (const Polynomials &poly, const T &x)
template<typename RootVector , typename Polynomial >
void Eigen::roots_to_monicPolynomial (const RootVector &rv, Polynomial &poly)

cauchy_max_bound()

template<typename Polynomial >
NumTraits<typename Polynomial::Scalar>::Real Eigen::cauchy_max_bound ( const Polynomial & poly )
inline
Returns
a maximum bound for the absolute value of any root of the polynomial.
Parameters
[in] poly : the vector of coefficients of the polynomial ordered by degrees i.e. poly[i] is the coefficient of degree i of the polynomial e.g. \( 1 + 3x^2 \) is stored as a vector \( [ 1, 0, 3 ] \).
Precondition
the leading coefficient of the input polynomial poly must be non zero

cauchy_min_bound()

template<typename Polynomial >
NumTraits<typename Polynomial::Scalar>::Real Eigen::cauchy_min_bound ( const Polynomial & poly )
inline
Returns
a minimum bound for the absolute value of any non zero root of the polynomial.
Parameters
[in] poly : the vector of coefficients of the polynomial ordered by degrees i.e. poly[i] is the coefficient of degree i of the polynomial e.g. \( 1 + 3x^2 \) is stored as a vector \( [ 1, 0, 3 ] \).

poly_eval()

template<typename Polynomials , typename T >
T Eigen::poly_eval ( const Polynomials & poly,
const T & x
)
inline
Returns
the evaluation of the polynomial at x using stabilized Horner algorithm.
Parameters
[in] poly : the vector of coefficients of the polynomial ordered by degrees i.e. poly[i] is the coefficient of degree i of the polynomial e.g. \( 1 + 3x^2 \) is stored as a vector \( [ 1, 0, 3 ] \).
[in] x : the value to evaluate the polynomial at.

poly_eval_horner()

template<typename Polynomials , typename T >
T Eigen::poly_eval_horner ( const Polynomials & poly,
const T & x
)
inline
Returns
the evaluation of the polynomial at x using Horner algorithm.
Parameters
[in] poly : the vector of coefficients of the polynomial ordered by degrees i.e. poly[i] is the coefficient of degree i of the polynomial e.g. \( 1 + 3x^2 \) is stored as a vector \( [ 1, 0, 3 ] \).
[in] x : the value to evaluate the polynomial at.
Note
for stability: \( |x| \le 1 \)

roots_to_monicPolynomial()

template<typename RootVector , typename Polynomial >
void Eigen::roots_to_monicPolynomial ( const RootVector & rv,
Polynomial & poly
)

Given the roots of a polynomial compute the coefficients in the monomial basis of the monic polynomial with same roots and minimal degree. If RootVector is a vector of complexes, Polynomial should also be a vector of complexes.

Parameters
[in] rv : a vector containing the roots of a polynomial.
[out] poly : the vector of coefficients of the polynomial ordered by degrees i.e. poly[i] is the coefficient of degree i of the polynomial e.g. \( 3 + x^2 \) is stored as a vector \( [ 3, 0, 1 ] \).