LastSubresultant - Maple Help
For the best experience, we recommend viewing online help using Google Chrome or Mozilla Firefox.

Online Help

All Products    Maple    MapleSim


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

Calling Sequence

SubresultantChain(f1, f2, v, R)

SubresultantChain(f1, f2, v, R, 'representation'=value)

LastSubresultant(src, R)

SubresultantOfIndex(ind, src, R)

Parameters

f1

-

polynomial of R

f2

-

polynomial of R

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

Description

• 

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.

Examples

> 

with⁡RegularChains:

> 

with⁡ChainTools:

Define a ring of polynomials.

> 

R≔PolynomialRing⁡y,x

R≔polynomial_ring

(1)

Define two polynomials of R.

> 

f1≔y2+6⁢x−1−y⁢x2+1

f1≔y2+6⁢x−1−y⁢x2+1

(2)
> 

f2≔x2+6⁢y−1−x⁢y2+1

f2≔x2+6⁢y−1−x⁢y2+1

(3)

Compute their subresultant chain

> 

src≔SubresultantChain⁡f1,f2,y,R

src≔subresultant_chain

(4)

We can choose different encodings to the computed subresultant chain

> 

srcBezout≔SubresultantChain⁡f1,f2,y,R,representation=BezoutMatrix;op⁡srcBezout

srcBezout≔subresultant_chain

table⁡SRC_MDEG=1,SRC_POLYQ=x2⁢y−x⁢y2−x2−x+6⁢y−6,SRC_MVAR=y,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_POLYP=−x2⁢y+x⁢y2−y2+6⁢x−y−6,representation=BezoutMatrix

(5)
> 

srcMono≔SubresultantChain⁡f1,f2,y,R,representation=MonomialBasis;op⁡srcMono

srcMono≔subresultant_chain

table⁡SRC_MDEG=1,SRC_POLYQ=x2⁢y−x⁢y2−x2−x+6⁢y−6,SRC_MVAR=y,type=subresultant_chain,SRC_POLYP=−x2⁢y+x⁢y2−y2+6⁢x−y−6,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,representation=MonomialBasis

(6)

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⁡SRC_MDEG=1,SRC_POLYQ=962592768⁢x2⁢y+x⁢y2+x2+x+962592763⁢y+6,SRC_MVAR=y,type=subresultant_chain,SRC_POLYP=962592768⁢x2⁢y+x⁢y2+962592768⁢y2+6⁢x+962592768⁢y+962592763,representation=ByValues,subresultant_chain_scube=subresultant_chain_specialization_cube

(7)

Extract the last non-zero subresultant

> 

lsr≔LastSubresultant⁡src,R

lsr≔2⁢x6−22⁢x5+102⁢x4−274⁢x3+488⁢x2−552⁢x+288

(8)

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

(9)
> 

expand⁡lsr−res

0

(10)

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

(11)
> 

factor⁡res

2⁢x2−x+4⁢x−22⁢x−32

(12)

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

(13)

See Also

FastArithmeticTools

RegularChains

RegularGcd

RegularGcdBySpecializationCube

ResultantBySpecializationCube