RegularChains[ChainTools]
SubresultantChain
subresultant chain of two multivariate polynomials
LastSubresultant
last subresultant of two multivariate polynomials
SubresultantOfIndex
subresultant of given index for two multivariate polynomials
Calling Sequence
Parameters
Description
Examples
SubresultantChain(f1, f2, v, R)
SubresultantChain(f1, f2, v, R, 'representation'=value)
LastSubresultant(src, R)
SubresultantOfIndex(ind, src, R)
f1
-
polynomial of R
f2
v
variable of R
R
polynomial ring
'representation'='value'
(optional) specify representation; value can be 'MonomialBasis', 'ByValues', or 'BezoutMatrix'
src
subresultant chain data structure
ind
non-negative integer
The command SubresultantChain(f1, f2, v, R) returns a data structure which encodes the subresultant chain of f1 and f2 regarded as univariate polynomials in v.
f1 and f2 must have main variable v and degree⁡f2,v≤degree⁡f1,v must hold.
If the option 'representation'='MonomialBasis' is specified then this subresultant chain is encoded as the subresultants of f1 and f2 expressed over the monomial basis of R. That is, in simpler words, the subresultants of f1 and f2 are given in the standard way, by monomials and coefficients. This method is well-suited if the coefficients of f1 and f2 are in a prime field or if the coefficients of f1 and f2 w.r.t. v are neither very sparse nor very dense.
If the option 'representation'='BezoutMatrix' is specified then the Bezout Matrix of f1 and f2 is constructed. When SubresultantOfIndex is invoked the corresponding subresultant is obtained from appropriate minors of the Bezout Matrix of f1 and f2. This method is well-suited if the coefficients of f1 and f2 w.r.t. v are very sparse.
If the option 'representation'='ByValues' is specified then all the variables of f1 and f2 except v are specialized at sufficiently many good values in order to interpolate the subresultants of f1 and f2, when needed. Here, good specialization value means a point at which the initials of f1 and f2 do not vanish. This option uses FFT-based polynomial arithmetic, which implies that the ring R should satisfy the hypotheses of the commands from the FastArithmeticTools subpackage. This method is well-suited if the coefficients of f1 and f2 w.r.t. v are very dense.
By default, the option 'representation'='MonomialBasis' is used.
The data structure returned by SubresultantChain(f1, f2, v, R) can be used to compute the last subresultant of f1 and f2 with respect to v, that is, the non-zero subresultant of smallest index. More precisely, the command LastSubresultant(src, R) returns the non-zero subresultant of smallest index from the subresultant chain data structure encoded by src.
This data structure can be used to compute a subresultant of f1 and f2 (with respect to v) of a given index ind by means of the call SubresultantOfIndex(ind, src, R). Note that ind must be non-negative and less than degree⁡f2,v
This data structure can also be used to compute a regular GCD of f1 and f2 modulo the saturated ideal of a regular chain, by means of the command RegularGcd. In this case, the resultant of f1 and f2 must be zero modulo the saturated ideal of this regular chain.
with⁡RegularChains:
with⁡ChainTools:
Define a ring of polynomials.
R≔PolynomialRing⁡y,x
R≔polynomial_ring
Define two polynomials of R.
f1≔y2+6⁢x−1−y⁢x2+1
f2≔x2+6⁢y−1−x⁢y2+1
Compute their subresultant chain
src≔SubresultantChain⁡f1,f2,y,R
src≔subresultant_chain
We can choose different encodings to the computed subresultant chain
srcBezout≔SubresultantChain⁡f1,f2,y,R,representation=BezoutMatrix;op⁡srcBezout
srcBezout≔subresultant_chain
table⁡representation=BezoutMatrix,SRC_POLYP=−x2⁢y+x⁢y2−y2+6⁢x−y−6,type=subresultant_chain,SRC_MATRIX=−x2+5⁢x−6−x3+6⁢x2−11⁢x+6−x3+6⁢x2−11⁢x+6x4−5⁢x3+13⁢x2−35⁢x+42,SRC_MDEG=1,SRC_POLYQ=x2⁢y−x⁢y2−x2−x+6⁢y−6,SRC_MVAR=y
srcMono≔SubresultantChain⁡f1,f2,y,R,representation=MonomialBasis;op⁡srcMono
srcMono≔subresultant_chain
table⁡representation=MonomialBasis,SRC_POLYP=−x2⁢y+x⁢y2−y2+6⁢x−y−6,type=subresultant_chain,SRC_MDEG=1,subresultant_chain_vector=2⁢x6−22⁢x5+102⁢x4−274⁢x3+488⁢x2−552⁢x+288,−x3−x2⁢y+6⁢x2+5⁢x⁢y−11⁢x−6⁢y+6,x2⁢y−x⁢y2−x2−x+6⁢y−6,−x2⁢y+x⁢y2−y2+6⁢x−y−6,SRC_POLYQ=x2⁢y−x⁢y2−x2−x+6⁢y−6,SRC_MVAR=y
Note that ByValues representation is used only for modpn ring.
p≔962592769:
modpnR≔PolynomialRing⁡y,x,p:
srcValues≔SubresultantChain⁡f1,f2,y,modpnR,representation=ByValues;op⁡srcValues
srcValues≔subresultant_chain
table⁡representation=ByValues,SRC_POLYP=962592768⁢x2⁢y+x⁢y2+962592768⁢y2+6⁢x+962592768⁢y+962592763,type=subresultant_chain,SRC_MDEG=1,subresultant_chain_scube=subresultant_chain_specialization_cube,SRC_POLYQ=962592768⁢x2⁢y+x⁢y2+x2+x+962592763⁢y+6,SRC_MVAR=y
Extract the last non-zero subresultant
lsr≔LastSubresultant⁡src,R
lsr≔2⁢x6−22⁢x5+102⁢x4−274⁢x3+488⁢x2−552⁢x+288
which is also the subresultant of index 0 in this example
res≔SubresultantOfIndex⁡0,src,R
res≔2⁢x6−22⁢x5+102⁢x4−274⁢x3+488⁢x2−552⁢x+288
expand⁡lsr−res
0
Define a regular chain with res. Note that res is not required to be irreducible or even square free.
rc≔Chain⁡res,Empty⁡R,R
rc≔regular_chain
factor⁡res
2⁢x2−x+4⁢x−22⁢x−32
Compute a regular GCD of f1 and f2 modulo rc
RegularGcd⁡src,rc,R
−x3−x2⁢y+6⁢x2+5⁢x⁢y−11⁢x−6⁢y+6,regular_chain,x2⁢y−x⁢y2−x2−x+6⁢y−6,regular_chain,x2⁢y−x⁢y2−x2−x+6⁢y−6,regular_chain,x2⁢y−x⁢y2−x2−x+6⁢y−6,regular_chain,x2⁢y−x⁢y2−x2−x+6⁢y−6,regular_chain
See Also
FastArithmeticTools
RegularChains
RegularGcd
RegularGcdBySpecializationCube
ResultantBySpecializationCube
Download Help Document