GiNaCRA  0.6.4
GiNaCRA::MultivariatePolynomialFactory Class Reference

#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 > &degrees, 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.

Detailed Description

Definition at line 76 of file MultivariatePolynomialFactory.h.


Member Function Documentation

template<class monomialOrdering >
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.

Parameters:
cornersof the staircase (unverified input semantics)
Returns:
the list of monomials building the border of the staircase of the given Groebner basis

Definition at line 423 of file MultivariatePolynomialFactory.h.

References searchBorderOfTheStaircase().

template<class monomialOrdering >
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.

Parameters:
borderof the staircase (unverified input semantics)
gbspecial Groebner basis (unverified input semantics)
Returns:
the list of monomials building the border of the staircase of the given Groebner basis

Definition at line 445 of file MultivariatePolynomialFactory.h.

References coefficientLcm().

template<class monomialOrdering >
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.

Exceptions:
invalid_argumentin case the input was no special Groebner basis
See also:
page 456 in ISBN 0-387-94090-1 and ISBN-13: 978-3642069642

Definition at line 91 of file MultivariatePolynomialFactory.h.

References GiNaCRA::MultivariateTerm< monomialOrdering >::tdegree().

template<class monomialOrdering >
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.

Parameters:
gbspecial Groebner basis (unverified input semantics)
Returns:
lcm of the coefficients of the given Groebner basis

Definition at line 471 of file MultivariatePolynomialFactory.h.

References GiNaC::lcm().

Referenced by borderTermsOfTheStaircase(), and termsUnderTheStaircase().

template<class monomialOrdering >
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.

Parameters:
gbGroebner basis
Returns:
the list of leading monomials of the given Groebner basis

Definition at line 333 of file MultivariatePolynomialFactory.h.

template<class monomialOrdering >
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.

Parameters:
polynomial
degreeslist of degrees satisfying the special Groebner basis property checked by checkForSpecialGroebnerBasis
radiusof the sphere around zero for bounded algebric sampling (symbolic or numeric)
infinitesimal
Returns:
deformation of the input polynomial
See also:
page 485 in ISBN 0-387-94090-1 and ISBN-13: 978-3642069642

Definition at line 183 of file MultivariatePolynomialFactory.h.

Referenced by specialGroebnerBasis().

template<class monomialOrdering >
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.

Parameters:
variableslist of variables to be used in the template
degreefinal degree of the template
indexnumber identifying the template by determining its coefficients
Returns:
general position polynomial
See also:
Notation 13.4 in ISBN 0-387-94090-1 and ISBN-13: 978-3642069642

Definition at line 158 of file MultivariatePolynomialFactory.h.

References GiNaC::sortVariables().

template<class monomialOrdering >
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.

Parameters:
gbspecial Groebner basis
Returns:
the list of monomials under the staircase of the given Groebner basis

Definition at line 353 of file MultivariatePolynomialFactory.h.

References searchMonomialsUnderTheStaircase().

template<class monomialOrdering >
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.

Parameters:
corners_currentiterator position pointing to the current corner to be multiplied
corners_begininitial iterator position of the list of corners
corners_endfinal iterator position of the list of corners
monomialprefix of all monomials to be computed
monomialsresulting monomials are apended to this list
Returns:
pointer to the list of monomials sorted lexicographicly and by degree (starting from the lowest monomial in order)

Definition at line 529 of file MultivariatePolynomialFactory.h.

References searchMonomialsUnderTheStaircase().

Referenced by borderOfTheStaircase().

template<class monomialOrdering >
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.

Parameters:
variables_current
variables_end
degrees_current
monomial
monomialsresulting monomials are apended to this list
Returns:
pointer to the list of monomials sorted lexicographicly and by degree (starting from the lowest monomial in order)

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().

template<class monomialOrdering >
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.

Parameters:
polynomial
degreeslist of degrees
radiusof the sphere around zero for bounded algebric sampling (symbolic or numeric)
infinitesimal
Returns:
special Groebner basis (list of MultivariatePolynonials)
See also:
page 492 in ISBN 0-387-94090-1 and ISBN-13: 978-3642069642

Definition at line 220 of file MultivariatePolynomialFactory.h.

References deformation(), GiNaCRA::MultivariatePolynomial< monomialOrdering >::diff(), GiNaC::prod(), and GiNaCRA::MultivariatePolynomial< monomialOrdering >::reduction().

Referenced by synthesizeSpecialGroebnerBasis().

template<class monomialOrdering >
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.

Parameters:
polynomial
radiusof the sphere around zero for bounded algebric sampling (symbolic or numeric)
infinitesimal
Returns:
special Groebner basis (list of MultivariatePolynonials)
See also:
page 492 in ISBN 0-387-94090-1 and ISBN-13: 978-3642069642

Definition at line 315 of file MultivariatePolynomialFactory.h.

References specialGroebnerBasis(), and synthesizeSpecialGroebnerBasisDegrees().

template<class monomialOrdering >
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.

Parameters:
polynomial
Returns:
list of degrees

Definition at line 290 of file MultivariatePolynomialFactory.h.

References GiNaCRA::MultivariatePolynomial< monomialOrdering >::tdegree(), and GiNaCRA::MultivariatePolynomial< monomialOrdering >::Variables().

Referenced by synthesizeSpecialGroebnerBasis().

template<class monomialOrdering >
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.

Parameters:
monomialsunder the staircase (unverified input semantics)
gbspecial Groebner basis (unverified input semantics)
coeffreference, after computation contains the least common multiple of the leading coefficients of the special Groebner basis (optional)
Returns:
the list of monomials under the staircase of the given Groebner basis

Definition at line 398 of file MultivariatePolynomialFactory.h.

References coefficientLcm().


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