PuiseuxFactorize - Maple Help
For the best experience, we recommend viewing online help using Google Chrome or Microsoft Edge.

Online Help

All Products    Maple    MapleSim


MultivariatePowerSeries

  

PuiseuxFactorize

  

factorize a univariate polynomial over power series with Puiseux series coefficients

 

Calling Sequence

Parameters

Description

Examples

References

Compatibility

Calling Sequence

PuiseuxFactorize(u)

PuiseuxFactorize(u, pb, opt)

Parameters

u

-

univariate polynomial over power series with Puiseux coefficients in one variable generated by this package

pb

-

(optional) non-negative integer

opt

-

(optional) equation of the form returnleadingcoefficient = optval, where optval is automatic, true, or false

Description

• 

The command PuiseuxFactorize(u) factorizes u over the field of Puiseux series in one variable of the coefficients of u and returns the factors as a list, or issues an error if this is not possible.

• 

Let x be the main variable of u. The command PuiseuxFactorize(u) proceeds as follows.

– 

Firstly, Maple checks that the constant term, p0, of u is nonzero. Maple verifies if its analytic expression is known. If it is known to be different than 0, then the command proceeds without modifying u. In the case it is equal to 0, then we factorize x to the power m, with m being the degree of the smallest nonzero term of u. If its analytic expression is not known, then Maple makes use of a bound b to check if a0 is zero up to that degree or not. If by truncating a0 up to b Maple finds that is nonzero, then it does not modify u. If this is not the case, then an error is returned. In this case, one may want to rerun the command with a higher bound b (see below).

– 

Secondly, let pn be the leading coefficient of u (the Puiseux series that is the coefficient of the highest power, n, of x). Maple verifies if its analytic expression is known. If it is not known, or known to be different from 1, then u is multiplied by the inverse of pn; let us call the result v. Otherwise (if pn is known to be equal to 1), v is defined to be equal to u. Note that computing the inverse of a Puiseux series may fail (see Inverse). See also the discussion of the returnleadingcoefficient option below.

– 

Thirdly, let pn1 be the coefficient of degree n-1 of u. The command TschirnhausenTransformation(v, pn1) is evaluated; let us call the result w. The goal of this algorithm is to make the term of degree n-1 equal to zero.

– 

Next, an appropriate change of variables is applied to w in order to make it a univariate polynomial over power series. This allow us to apply the HenselFactorize algorithm. After that, Maple reverts the changes of variables previously applied. For details, see Nowak's version of the Newton-Puiseux algorithm.  

– 

Then, if the returnleadingcoefficient option instructs it to do so (see below), Maple adds the coefficient pn to the list containing the output of HenselFactorize.

– 

Finally, Maple adds m copies of the main variable u to the output list.

• 

If the argument pb is given, its value is used for the bound b. Otherwise, the global default for bound b is used; this can be set using SetPuiseuxBound. Its default value is 10.

• 

Since it is really v that is factored in the second and third steps of the algorithm below, and v and u differ by a factor of pn (the leading coefficient of u), it is necessary to include a factor corresponding to pn in order to obtain factors that multiply together to u. The returnleadingcoefficient option determines whether pn, investigated and potentially used in the first step of the algorithm, is returned with the other factors. In all cases, if pn is returned, it is converted to a univariate polynomial over power series with main variable x in order to match the type of the other factors; out of necessity, it is a constant polynomial, because it does not depend on x (it is, after all, a coefficient of x).

– 

If the option returnleadingcoefficient = true is included, then pn is always returned as the first entry in the resulting list of factors, even if it is equal to 1.

– 

If the option returnleadingcoefficient = false is included, then pn is always omitted from the resulting list of factors, even if it is different from 1. In this case, the resulting list of factors will contain only univariate polynomials over power series with Puiseux series coefficients of positive degree in x.

– 

By default (or if this behavior is requested explicitly by including the option returnleadingcoefficient = automatic), pn is returned as a entry of the resulting list of factors only if it is not known to be equal to 1, and omitted otherwise.

Remark

• 

The functions ExtendedHenselConstruction and PuiseuxFactorize both factorize a univariate polynomial over the field of univariate Puiseux series into linear factors, thus into irreducible factors. The ExtendedHenselConstruction can also factorize a univariate polynomial over multivariate Puiseux series into linear factors. In contrast, the HenselFactorize command only lifts the initial factors of the input polynomial over the ring of power series y, thus the factors may not be linear and, hence, may not be irreducible over the field of univariate Puiseux series.

• 

When using the MultivariatePowerSeries package, do not assign anything to the variables occurring in the power series, Puiseux series, and univariate polynomials over these series. If you do, you may see invalid results.

Examples

withMultivariatePowerSeries:

We create a univariate polynomial over power series from a list of Puiseux series:

fUnivariatePolynomialOverPuiseuxSeriesPuiseuxSeries1,PuiseuxSeries0,PuiseuxSeriesx,x=x13,PuiseuxSeriesx,x=x12,PuiseuxSeriesx1+x,x=x12,z

fUnⅈvarⅈatⅇPolynomⅈalOvⅇrPuⅈsⅇuxSⅇrⅈⅇs: 1+0z+x13z2+xz3+0+z4

(1)

We compute its Puiseux factorization:

FPuiseuxFactorizef

FUnⅈvarⅈatⅇPolynomⅈalOvⅇrPuⅈsⅇuxSⅇrⅈⅇs: 1,UnⅈvarⅈatⅇPolynomⅈalOvⅇrPuⅈsⅇuxSⅇrⅈⅇs: 1x,UnⅈvarⅈatⅇPolynomⅈalOvⅇrPuⅈsⅇuxSⅇrⅈⅇs: 0++x18z,UnⅈvarⅈatⅇPolynomⅈalOvⅇrPuⅈsⅇuxSⅇrⅈⅇs: 0++x18z,UnⅈvarⅈatⅇPolynomⅈalOvⅇrPuⅈsⅇuxSⅇrⅈⅇs: 0++x18z,UnⅈvarⅈatⅇPolynomⅈalOvⅇrPuⅈsⅇuxSⅇrⅈⅇs: 0++x18z

(2)

We can see more terms of the factors as follows:

mapprint,mapTruncate,F,10:

1

1x

RootOf_Z22,index=12IRootOf_Z22,index=12+x18z

IRootOf_Z22,index=12+RootOf_Z22,index=12+x18z

RootOf_Z22,index=12+IRootOf_Z22,index=12+x18z

IRootOf_Z22,index=12RootOf_Z22,index=12+x18z

(3)

Notice that by using the special option returnleadingcoefficient = true, we get an different factor than one.

FPuiseuxFactorizef,returnleadingcoefficient=true

FUnⅈvarⅈatⅇPolynomⅈalOvⅇrPuⅈsⅇuxSⅇrⅈⅇs: 0+,UnⅈvarⅈatⅇPolynomⅈalOvⅇrPuⅈsⅇuxSⅇrⅈⅇs: 1x,UnⅈvarⅈatⅇPolynomⅈalOvⅇrPuⅈsⅇuxSⅇrⅈⅇs: 0++x18z,UnⅈvarⅈatⅇPolynomⅈalOvⅇrPuⅈsⅇuxSⅇrⅈⅇs: 0++x18z,UnⅈvarⅈatⅇPolynomⅈalOvⅇrPuⅈsⅇuxSⅇrⅈⅇs: 0++x18z,UnⅈvarⅈatⅇPolynomⅈalOvⅇrPuⅈsⅇuxSⅇrⅈⅇs: 0++x18z

(4)

mapprint,mapTruncate,F,10:

x5+x92x4+x72x3+x52x2+x32x+x

1x

RootOf_Z22,index=12IRootOf_Z22,index=12+x18z

IRootOf_Z22,index=12+RootOf_Z22,index=12+x18z

RootOf_Z22,index=12+IRootOf_Z22,index=12+x18z

IRootOf_Z22,index=12RootOf_Z22,index=12+x18z

(5)

Let us see that we got the correct output.

pMultiplyseqF

pUnⅈvarⅈatⅇPolynomⅈalOvⅇrPuⅈsⅇuxSⅇrⅈⅇs: 0++0+z+0+z2+0+z3+0+z4

(6)

TruncateSubtractf,p,10

0

(7)

Now by using returnleadingcoefficient = false, we get only 5 factors.

FPuiseuxFactorizef,returnleadingcoefficient=false

FUnⅈvarⅈatⅇPolynomⅈalOvⅇrPuⅈsⅇuxSⅇrⅈⅇs: 1x,UnⅈvarⅈatⅇPolynomⅈalOvⅇrPuⅈsⅇuxSⅇrⅈⅇs: 0++x18z,UnⅈvarⅈatⅇPolynomⅈalOvⅇrPuⅈsⅇuxSⅇrⅈⅇs: 0++x18z,UnⅈvarⅈatⅇPolynomⅈalOvⅇrPuⅈsⅇuxSⅇrⅈⅇs: 0++x18z,UnⅈvarⅈatⅇPolynomⅈalOvⅇrPuⅈsⅇuxSⅇrⅈⅇs: 0++x18z

(8)

mapprint,mapTruncate,F,10:

1x

RootOf_Z22,index=12IRootOf_Z22,index=12+x18z

IRootOf_Z22,index=12+RootOf_Z22,index=12+x18z

RootOf_Z22,index=12+IRootOf_Z22,index=12+x18z

IRootOf_Z22,index=12RootOf_Z22,index=12+x18z

(9)

Let's now define 4 Puiseux series and a univariate polynomial using this series as coefficients.

a1PuiseuxSeries1+y2,y=y12,y=2;a2PuiseuxSeries1y2+1,y=y16,y=1;a3PuiseuxSeries1y2+y+1,y=y12,y=2

a1PuⅈsⅇuxSⅇrⅈⅇs: 1y2+1y

a2PuⅈsⅇuxSⅇrⅈⅇs of 1y13+1y : 1y+

a3PuⅈsⅇuxSⅇrⅈⅇs of 1y+y+1y2 : 1y2+

(10)

bproc := proc(d) if d  = 20 then return u^(20); else return 0; end if; end proc;

bprocprocdifd=20thenreturnu^20elsereturn0end ifend proc

(11)

psoPowerSeriesbproc,variables=u;a0PuiseuxSeriespso,u=y

psoPowⅇrSⅇrⅈⅇs: 0+

a0PuⅈsⅇuxSⅇrⅈⅇs: 0+

(12)

hUnivariatePolynomialOverPuiseuxSeriesPuiseuxSeries0,PuiseuxSeries0,a0,a2,a3,x

hUnⅈvarⅈatⅇPolynomⅈalOvⅇrPuⅈsⅇuxSⅇrⅈⅇs: 0+0x+0+x2+1y+x3+1y2+x4

(13)

Now let's try to factorize h.

FPuiseuxFactorizeh

Error, (in MultivariatePowerSeries:-PuiseuxFactorize) invalid input: constant term in the main variable of _up may be equal to 0 which is not allowed

We get an error since Maple is not able to determine if a0 is nonzero or not. Let's try again but now with a bound of 21.

FPuiseuxFactorizeh,21

FUnⅈvarⅈatⅇPolynomⅈalOvⅇrPowⅇrSⅇrⅈⅇs: 0+1x,UnⅈvarⅈatⅇPolynomⅈalOvⅇrPowⅇrSⅇrⅈⅇs: 0+1x,UnⅈvarⅈatⅇPolynomⅈalOvⅇrPuⅈsⅇuxSⅇrⅈⅇs: 1,UnⅈvarⅈatⅇPolynomⅈalOvⅇrPuⅈsⅇuxSⅇrⅈⅇs: y2,UnⅈvarⅈatⅇPolynomⅈalOvⅇrPuⅈsⅇuxSⅇrⅈⅇs: 0++1yx,UnⅈvarⅈatⅇPolynomⅈalOvⅇrPuⅈsⅇuxSⅇrⅈⅇs: 1++1yx

(14)

Notice that the univariate polynomial over power series x is returned twice at the beginning of the output. This is due the fact that x^2 had to be factored out of h at the first step of the algorithm.

References

  

K. J. Nowak. "Some elementary proofs of Puiseux's theorems." Univ. Iagel. Acta Math Vol. 38 (2000): 279-282.

  

Mohammadali Asadi, Alexander Brandt, Mahsa Kazemi, Marc Moreno Maza, and Erik Postma. "Multivariate Power Series in Maple." Corless R.M., Gerhard J., Kotsireas I.S. (eds) Maple in Mathematics Education and Research. MC 2020. Communications in Computer and Information Science (CCIS), Vol. 1414 Springer (2021): 48-66.

Compatibility

• 

The MultivariatePowerSeries[PuiseuxFactorize] command was introduced in Maple 2023.

• 

For more information on Maple 2023 changes, see Updates in Maple 2023.

See Also

ExtendedHenselConstruction

HenselFactorize

Inverse

PuiseuxSeries

SetPuiseuxBound

Subtract

TschirnhausenTransformation

UnivariatePolynomialOverPowerSeries