Package cc.redberry.rings.poly.multivar
Class GroebnerMethods
- java.lang.Object
-
- cc.redberry.rings.poly.multivar.GroebnerMethods
-
public final class GroebnerMethods extends Object
Utility methods based on Groebner bases
-
-
Method Summary
Modifier and Type Method Description static <Poly extends AMultivariatePolynomial>
booleanalgebraicallyDependentQ(List<Poly> sys)
Returns true if a given set of polynomials is algebraically dependent or false otherwise.static <Poly extends AMultivariatePolynomial>
List<Poly>algebraicRelations(List<Poly> polys)
Gives a list of algebraic relations (annihilating polynomials) for the given list of polynomialsstatic <Poly extends AMultivariatePolynomial>
List<Poly>eliminate(List<Poly> ideal, int variable)
Eliminates specified variables from the given ideal.static <Poly extends AMultivariatePolynomial>
List<Poly>eliminate(List<Poly> ideal, int... variables)
Eliminates specified variables from the given ideal.static <Term extends AMonomial<Term>,Poly extends AMultivariatePolynomial<Term,Poly>>
Poly[][]JacobianMatrix(List<Poly> sys)
Creates a Jacobian matrix of a given list of polynomialsstatic <Poly extends AMultivariatePolynomial>
List<Rational<Poly>>LeinartasDecomposition(Rational<Poly> fraction)
Computes Leinartas's decomposition of given rational expression (see https://arxiv.org/abs/1206.4740)static <Poly extends AMultivariatePolynomial>
List<Poly>NullstellensatzCertificate(List<Poly> polynomials)
Computes Nullstellensatz certificate for a given list of polynomials assuming that they have no common zeros (or equivalently assuming that the ideal formed by the list is trivial).static <Poly extends AMultivariatePolynomial>
List<Poly>NullstellensatzCertificate(List<Poly> polynomials, boolean boundTotalDeg)
Computes Nullstellensatz certificate for a given list of polynomials assuming that they have no common zeros (or equivalently assuming that the ideal formed by the list is trivial).static <Poly extends AMultivariatePolynomial>
List<Poly>NullstellensatzSolver(List<Poly> polynomials, Poly rhs, boolean boundTotalDeg)
Tries to find solution of the equationS_1 * f_1 + ... + S_n * f_n = g
for givenf_i
andg
and unknownS_i
by transforming to a system of linear equations with unknown coefficients ofS_i
.static <Poly extends AMultivariatePolynomial>
booleanprobablyAlgebraicallyDependentQ(List<Poly> sys)
Returns true if a given set of polynomials is probably algebraically dependent or false otherwise (which means that the given set is certainly independent).
-
-
-
Method Detail
-
eliminate
public static <Poly extends AMultivariatePolynomial> List<Poly> eliminate(List<Poly> ideal, int variable)
Eliminates specified variables from the given ideal.
-
eliminate
public static <Poly extends AMultivariatePolynomial> List<Poly> eliminate(List<Poly> ideal, int... variables)
Eliminates specified variables from the given ideal.
-
probablyAlgebraicallyDependentQ
public static <Poly extends AMultivariatePolynomial> boolean probablyAlgebraicallyDependentQ(List<Poly> sys)
Returns true if a given set of polynomials is probably algebraically dependent or false otherwise (which means that the given set is certainly independent). The method applies two criteria: it tests for lead set (LEX) independence and does a probabilistic Jacobian test.
-
algebraicallyDependentQ
public static <Poly extends AMultivariatePolynomial> boolean algebraicallyDependentQ(List<Poly> sys)
Returns true if a given set of polynomials is algebraically dependent or false otherwise.
-
algebraicRelations
public static <Poly extends AMultivariatePolynomial> List<Poly> algebraicRelations(List<Poly> polys)
Gives a list of algebraic relations (annihilating polynomials) for the given list of polynomials
-
JacobianMatrix
public static <Term extends AMonomial<Term>,Poly extends AMultivariatePolynomial<Term,Poly>> Poly[][] JacobianMatrix(List<Poly> sys)
Creates a Jacobian matrix of a given list of polynomials
-
NullstellensatzCertificate
public static <Poly extends AMultivariatePolynomial> List<Poly> NullstellensatzCertificate(List<Poly> polynomials)
Computes Nullstellensatz certificate for a given list of polynomials assuming that they have no common zeros (or equivalently assuming that the ideal formed by the list is trivial). The method doesn't perform explicit check that thepolynomials
have no common zero, so if they are the method will fail.- Parameters:
polynomials
- list of polynomials- Returns:
- polynomials
S_i
such thatS_1 * f_1 + ... + S_n * f_n = 1
or null if no solution with moderate degree bounds exist (either sincepolynomials
have a common root or because the degree bound on the solutions is so big that the system is intractable for computer)
-
NullstellensatzCertificate
public static <Poly extends AMultivariatePolynomial> List<Poly> NullstellensatzCertificate(List<Poly> polynomials, boolean boundTotalDeg)
Computes Nullstellensatz certificate for a given list of polynomials assuming that they have no common zeros (or equivalently assuming that the ideal formed by the list is trivial). The method doesn't perform explicit check that thepolynomials
have no common zero, so if they are the method will fail.- Parameters:
polynomials
- list of polynomials- Returns:
- polynomials
S_i
such thatS_1 * f_1 + ... + S_n * f_n = 1
or null if no solution with moderate degree bounds exist (either sincepolynomials
have a common root or because the degree bound on the solutions is so big that the system is intractable for computer)
-
NullstellensatzSolver
public static <Poly extends AMultivariatePolynomial> List<Poly> NullstellensatzSolver(List<Poly> polynomials, Poly rhs, boolean boundTotalDeg)
Tries to find solution of the equationS_1 * f_1 + ... + S_n * f_n = g
for givenf_i
andg
and unknownS_i
by transforming to a system of linear equations with unknown coefficients ofS_i
.- Parameters:
polynomials
- list of polynomialsrhs
- right hand side of the equationboundTotalDeg
- whether to perform evaluations by increasing total degree of unknown polys or by increasing individual degrees of vars- Returns:
- polynomials
S_i
such thatS_1 * f_1 + ... + S_n * f_n = g
or null if no solution with moderate degree bounds exists
-
LeinartasDecomposition
public static <Poly extends AMultivariatePolynomial> List<Rational<Poly>> LeinartasDecomposition(Rational<Poly> fraction)
Computes Leinartas's decomposition of given rational expression (see https://arxiv.org/abs/1206.4740)
-
-