Wolfram Function Repository
Instant-use add-on functions for the Wolfram Language
Function Repository Resource:
Compute a Groebner basis and a conversion matrix from the input polynomials to the basis
ResourceFunction["ExtendedGroebnerBasis"][polys,vars] gives the Groebner basis 𝒢 for the polynomial list polys along with a polynomial conversion matrix ℳ satisfying 𝒢=ℳ·polys. |
Create a set of polynomials:
| In[1]:= |
First compute its Groebner basis:
| In[2]:= |
| Out[2]= | ![]() |
Compute the extended Groebner basis:
| In[3]:= |
| Out[3]= | ![]() |
Check that the bases agree up to a constant factor:
| In[4]:= |
| Out[4]= |
Check the conversion matrix identity:
| In[5]:= |
| Out[5]= |
Here is a larger example:
| In[6]:= |
| Out[7]= | ![]() |
| In[8]:= |
| Out[8]= | ![]() |
Check that the bases agree up to constant factors (they are not identical in this instance):
| In[9]:= |
| Out[9]= |
Check the conversion matrix identity:
| In[10]:= |
| Out[10]= |
The Groebner basis of a pair of univariate polynomials is their greatest common divisor, and similarly the extended Groebner basis gives the extended GCD. Create a pair of polynomials with a known common divisor poly1:
| In[11]:= | ![]() |
Compute the extended GCD:
| In[12]:= |
| Out[12]= |
Check that the single polynomial in the Groebner basis is a GCD (a constant multiple of poly1):
| In[13]:= |
| Out[13]= |
Check the Bezout relation for the extended GCD:
| In[14]:= |
| Out[14]= |
Compare to PolynomialExtendedGCD:
| In[15]:= |
| Out[15]= |
Again check the Bezout relation:
| In[16]:= |
| Out[16]= |
Now check that these two computations agree up to a constant factor:
| In[17]:= |
| Out[17]= |
ExtendedGroebnerBasis can be much slower that GroebnerBasis for the same input:
| In[18]:= | ![]() |
| Out[18]= |
| In[19]:= |
| Out[19]= |
This work is licensed under a Creative Commons Attribution 4.0 International License