GiNaCRA
0.6.4
|
#include <MultivariatePolynomialFactory.h>
Static Public Member Functions | |
template<class monomialOrdering > | |
static void | checkForSpecialGroebnerBasis (const list< MultivariatePolynomial< monomialOrdering > > &basis) throw ( invalid_argument ) |
Checks whether the given list comprises a special Groebner basis. | |
template<class monomialOrdering > | |
static const MultivariatePolynomial < monomialOrdering > | generalPositionTemplate (const vector< symbol > &variables, unsigned degree, numeric index) |
This method computes a polynomial which is in general position. | |
template<class monomialOrdering > | |
static const MultivariatePolynomial < monomialOrdering > | deformation (const MultivariatePolynomial< monomialOrdering > &polynomial, const list< int > °rees, const ex &radius, const infinitesimal_symbol &infinitesimal) throw ( invalid_argument ) |
The deformation of a polynomial is another polynomial perturbed depending on an infinitesimal element. | |
template<class monomialOrdering > | |
static const list < MultivariatePolynomial < monomialOrdering > > | specialGroebnerBasis (const MultivariatePolynomial< monomialOrdering > &polynomial, list< int > degrees, const ex &radius, const infinitesimal_symbol &infinitesimal) throw ( invalid_argument ) |
A special Groebner basis is a Groebner basis such that it contains exactly as many elements as there are symbols and, in addition, each element has a different variable of highest degree, and, in this variable, all elements have the same coefficients. | |
template<class monomialOrdering > | |
static const list< int > | synthesizeSpecialGroebnerBasisDegrees (const MultivariatePolynomial< monomialOrdering > &polynomial) |
This method generates a list of minimal degree values such that it can be used as input for the specialGroebnerBasis method. | |
template<class monomialOrdering > | |
static const list < MultivariatePolynomial < monomialOrdering > > | synthesizeSpecialGroebnerBasis (const MultivariatePolynomial< monomialOrdering > &polynomial, const ex &radius, const infinitesimal_symbol &infinitesimal) throw ( invalid_argument ) |
A special Groebner basis is a Groebner basis such that it contains exactly as many elements as there are symbols and, in addition, each element has a different variable of highest degree, and, in this variable, all elements have the same coefficients. | |
template<class monomialOrdering > | |
static const list < MultivariateMonomial < monomialOrdering > > | cornersOfTheStaircase (const list< MultivariatePolynomial< monomialOrdering > > &gb) throw ( invalid_argument ) |
Determines the list of leading monomials of the given Groebner basis. | |
template<class monomialOrdering > | |
static const list < MultivariateMonomial < monomialOrdering > > | monomialsUnderTheStaircase (const list< MultivariatePolynomial< monomialOrdering > > &gb) throw ( invalid_argument ) |
Computes the list of monomials which lay below the leading monomials of the ideal generated by the given Groebner basis, which in turn build the border of the staircase. | |
template<class monomialOrdering > | |
static const list < MultivariateTerm < monomialOrdering > > | termsUnderTheStaircase (const list< MultivariateMonomial< monomialOrdering > > &monomials, const list< MultivariatePolynomial< monomialOrdering > > &gb, ex &coeff=*(new ex(1))) throw ( invalid_argument ) |
Computes the list of monomials under the staircase multiplied by certain powers of the leading coefficients of the given Groebner basis. | |
template<class monomialOrdering > | |
static const list < MultivariateMonomial < monomialOrdering > > | borderOfTheStaircase (const list< MultivariateMonomial< monomialOrdering > > &corners) throw ( invalid_argument ) |
Computes the list of monomials which define the border between the leading monomials of the ideal generated by the given Groebner basis and the monomials under the staircase. | |
template<class monomialOrdering > | |
static const list < MultivariateTerm < monomialOrdering > > | borderTermsOfTheStaircase (const list< MultivariateMonomial< monomialOrdering > > &border, const list< MultivariatePolynomial< monomialOrdering > > &gb) throw ( invalid_argument ) |
Computes the list of borders of the staircase multiplied by the lcm of the leading coefficients of the given Groebner basis. | |
template<class monomialOrdering > | |
static MultivariatePolynomial < monomialOrdering > | coefficientLcm (const list< MultivariatePolynomial< monomialOrdering > > &gb) |
Computes the least common multiple (lcm) of the coefficients of the given Groebner basis. | |
template<class monomialOrdering > | |
static void | searchMonomialsUnderTheStaircase (vector< symbol >::const_iterator variables_current, const vector< symbol >::const_iterator &variables_end, list< int >::const_iterator degrees_current, const MultivariateMonomial< monomialOrdering > &monomial, list< MultivariateMonomial< monomialOrdering > > &monomials) throw ( invalid_argument ) |
Auxiliary method: Searches all monomials which are multiples of the given monomial by multiplying all possible powers of the symbol at the current index up to the degree at the given index. | |
template<class monomialOrdering > | |
static void | searchBorderOfTheStaircase (typename list< MultivariateMonomial< monomialOrdering > >::const_iterator corners_current, const typename list< MultivariateMonomial< monomialOrdering > >::const_iterator &corners_begin, const typename list< MultivariateMonomial< monomialOrdering > >::const_iterator &corners_end, const MultivariateMonomial< monomialOrdering > &monomial, list< MultivariateMonomial< monomialOrdering > > &monomials) throw ( invalid_argument ) |
Determines all possible monomials lead by the specified monomial w.r.t. |
Definition at line 76 of file MultivariatePolynomialFactory.h.
static const list<MultivariateMonomial<monomialOrdering> > GiNaCRA::MultivariatePolynomialFactory::borderOfTheStaircase | ( | const list< MultivariateMonomial< monomialOrdering > > & | corners | ) | throw ( invalid_argument ) [inline, static] |
Computes the list of monomials which define the border between the leading monomials of the ideal generated by the given Groebner basis and the monomials under the staircase.
corners | of the staircase (unverified input semantics) |
Definition at line 423 of file MultivariatePolynomialFactory.h.
References searchBorderOfTheStaircase().
static const list<MultivariateTerm<monomialOrdering> > GiNaCRA::MultivariatePolynomialFactory::borderTermsOfTheStaircase | ( | const list< MultivariateMonomial< monomialOrdering > > & | border, |
const list< MultivariatePolynomial< monomialOrdering > > & | gb | ||
) | throw ( invalid_argument ) [inline, static] |
Computes the list of borders of the staircase multiplied by the lcm of the leading coefficients of the given Groebner basis.
border | of the staircase (unverified input semantics) |
gb | special Groebner basis (unverified input semantics) |
Definition at line 445 of file MultivariatePolynomialFactory.h.
References coefficientLcm().
static void GiNaCRA::MultivariatePolynomialFactory::checkForSpecialGroebnerBasis | ( | const list< MultivariatePolynomial< monomialOrdering > > & | basis | ) | throw ( invalid_argument ) [inline, static] |
Checks whether the given list comprises a special Groebner basis.
invalid_argument | in case the input was no special Groebner basis |
Definition at line 91 of file MultivariatePolynomialFactory.h.
References GiNaCRA::MultivariateTerm< monomialOrdering >::tdegree().
static MultivariatePolynomial<monomialOrdering> GiNaCRA::MultivariatePolynomialFactory::coefficientLcm | ( | const list< MultivariatePolynomial< monomialOrdering > > & | gb | ) | [inline, static] |
Computes the least common multiple (lcm) of the coefficients of the given Groebner basis.
gb | special Groebner basis (unverified input semantics) |
Definition at line 471 of file MultivariatePolynomialFactory.h.
References GiNaC::lcm().
Referenced by borderTermsOfTheStaircase(), and termsUnderTheStaircase().
static const list<MultivariateMonomial<monomialOrdering> > GiNaCRA::MultivariatePolynomialFactory::cornersOfTheStaircase | ( | const list< MultivariatePolynomial< monomialOrdering > > & | gb | ) | throw ( invalid_argument ) [inline, static] |
Determines the list of leading monomials of the given Groebner basis.
gb | Groebner basis |
Definition at line 333 of file MultivariatePolynomialFactory.h.
static const MultivariatePolynomial<monomialOrdering> GiNaCRA::MultivariatePolynomialFactory::deformation | ( | const MultivariatePolynomial< monomialOrdering > & | polynomial, |
const list< int > & | degrees, | ||
const ex & | radius, | ||
const infinitesimal_symbol & | infinitesimal | ||
) | throw ( invalid_argument ) [inline, static] |
The deformation of a polynomial is another polynomial perturbed depending on an infinitesimal element.
polynomial | |
degrees | list of degrees satisfying the special Groebner basis property checked by checkForSpecialGroebnerBasis |
radius | of the sphere around zero for bounded algebric sampling (symbolic or numeric) |
infinitesimal |
Definition at line 183 of file MultivariatePolynomialFactory.h.
Referenced by specialGroebnerBasis().
static const MultivariatePolynomial<monomialOrdering> GiNaCRA::MultivariatePolynomialFactory::generalPositionTemplate | ( | const vector< symbol > & | variables, |
unsigned | degree, | ||
numeric | index | ||
) | [inline, static] |
This method computes a polynomial which is in general position.
variables | list of variables to be used in the template |
degree | final degree of the template |
index | number identifying the template by determining its coefficients |
Definition at line 158 of file MultivariatePolynomialFactory.h.
References GiNaC::sortVariables().
static const list<MultivariateMonomial<monomialOrdering> > GiNaCRA::MultivariatePolynomialFactory::monomialsUnderTheStaircase | ( | const list< MultivariatePolynomial< monomialOrdering > > & | gb | ) | throw ( invalid_argument ) [inline, static] |
Computes the list of monomials which lay below the leading monomials of the ideal generated by the given Groebner basis, which in turn build the border of the staircase.
gb | special Groebner basis |
Definition at line 353 of file MultivariatePolynomialFactory.h.
References searchMonomialsUnderTheStaircase().
static void GiNaCRA::MultivariatePolynomialFactory::searchBorderOfTheStaircase | ( | typename list< MultivariateMonomial< monomialOrdering > >::const_iterator | corners_current, |
const typename list< MultivariateMonomial< monomialOrdering > >::const_iterator & | corners_begin, | ||
const typename list< MultivariateMonomial< monomialOrdering > >::const_iterator & | corners_end, | ||
const MultivariateMonomial< monomialOrdering > & | monomial, | ||
list< MultivariateMonomial< monomialOrdering > > & | monomials | ||
) | throw ( invalid_argument ) [inline, static] |
Determines all possible monomials lead by the specified monomial w.r.t.
the given list of corners of the staircase specified as iterator.
corners_current | iterator position pointing to the current corner to be multiplied |
corners_begin | initial iterator position of the list of corners |
corners_end | final iterator position of the list of corners |
monomial | prefix of all monomials to be computed |
monomials | resulting monomials are apended to this list |
Definition at line 529 of file MultivariatePolynomialFactory.h.
References searchMonomialsUnderTheStaircase().
Referenced by borderOfTheStaircase().
static void GiNaCRA::MultivariatePolynomialFactory::searchMonomialsUnderTheStaircase | ( | vector< symbol >::const_iterator | variables_current, |
const vector< symbol >::const_iterator & | variables_end, | ||
list< int >::const_iterator | degrees_current, | ||
const MultivariateMonomial< monomialOrdering > & | monomial, | ||
list< MultivariateMonomial< monomialOrdering > > & | monomials | ||
) | throw ( invalid_argument ) [inline, static] |
Auxiliary method: Searches all monomials which are multiples of the given monomial by multiplying all possible powers of the symbol at the current index up to the degree at the given index.
variables_current | |
variables_end | |
degrees_current | |
monomial | |
monomials | resulting monomials are apended to this list |
Definition at line 488 of file MultivariatePolynomialFactory.h.
References GiNaCRA::MultivariatePolynomial< monomialOrdering >::degree(), GiNaCRA::MultivariateMonomial< monomialOrdering >::mul(), and GiNaCRA::MultivariatePolynomial< monomialOrdering >::Variables().
Referenced by monomialsUnderTheStaircase(), and searchBorderOfTheStaircase().
static const list<MultivariatePolynomial<monomialOrdering> > GiNaCRA::MultivariatePolynomialFactory::specialGroebnerBasis | ( | const MultivariatePolynomial< monomialOrdering > & | polynomial, |
list< int > | degrees, | ||
const ex & | radius, | ||
const infinitesimal_symbol & | infinitesimal | ||
) | throw ( invalid_argument ) [inline, static] |
A special Groebner basis is a Groebner basis such that it contains exactly as many elements as there are symbols and, in addition, each element has a different variable of highest degree, and, in this variable, all elements have the same coefficients.
polynomial | |
degrees | list of degrees |
radius | of the sphere around zero for bounded algebric sampling (symbolic or numeric) |
infinitesimal |
Definition at line 220 of file MultivariatePolynomialFactory.h.
References deformation(), GiNaCRA::MultivariatePolynomial< monomialOrdering >::diff(), GiNaC::prod(), and GiNaCRA::MultivariatePolynomial< monomialOrdering >::reduction().
Referenced by synthesizeSpecialGroebnerBasis().
static const list<MultivariatePolynomial<monomialOrdering> > GiNaCRA::MultivariatePolynomialFactory::synthesizeSpecialGroebnerBasis | ( | const MultivariatePolynomial< monomialOrdering > & | polynomial, |
const ex & | radius, | ||
const infinitesimal_symbol & | infinitesimal | ||
) | throw ( invalid_argument ) [inline, static] |
A special Groebner basis is a Groebner basis such that it contains exactly as many elements as there are symbols and, in addition, each element has a different variable of highest degree, and, in this variable, all elements have the same coefficients.
This method is a combination of synthesizeSpecialGroebnerBasisDegrees and specialGroebnerBasis.
polynomial | |
radius | of the sphere around zero for bounded algebric sampling (symbolic or numeric) |
infinitesimal |
Definition at line 315 of file MultivariatePolynomialFactory.h.
References specialGroebnerBasis(), and synthesizeSpecialGroebnerBasisDegrees().
static const list<int> GiNaCRA::MultivariatePolynomialFactory::synthesizeSpecialGroebnerBasisDegrees | ( | const MultivariatePolynomial< monomialOrdering > & | polynomial | ) | [inline, static] |
This method generates a list of minimal degree values such that it can be used as input for the specialGroebnerBasis method.
polynomial |
Definition at line 290 of file MultivariatePolynomialFactory.h.
References GiNaCRA::MultivariatePolynomial< monomialOrdering >::tdegree(), and GiNaCRA::MultivariatePolynomial< monomialOrdering >::Variables().
Referenced by synthesizeSpecialGroebnerBasis().
static const list<MultivariateTerm<monomialOrdering> > GiNaCRA::MultivariatePolynomialFactory::termsUnderTheStaircase | ( | const list< MultivariateMonomial< monomialOrdering > > & | monomials, |
const list< MultivariatePolynomial< monomialOrdering > > & | gb, | ||
ex & | coeff = *(new ex( 1 )) |
||
) | throw ( invalid_argument ) [inline, static] |
Computes the list of monomials under the staircase multiplied by certain powers of the leading coefficients of the given Groebner basis.
monomials | under the staircase (unverified input semantics) |
gb | special Groebner basis (unverified input semantics) |
coeff | reference, after computation contains the least common multiple of the leading coefficients of the special Groebner basis (optional) |
Definition at line 398 of file MultivariatePolynomialFactory.h.
References coefficientLcm().