next | previous | forward | backward | up | top | index | toc | Macaulay2 website
EigenSolver :: zeroDimSolve

zeroDimSolve -- zero-dimensional polynomial system solver



This function is a general-purpose solver for zero-dimensional polynomial systems. The default Strategy is "Stickelberger", which leverages Stickelberger's theorem to compute the coordinates of solution points as (joint) eigenvalues of multiplication matrices corresponding to the variables of the ring.

The option Multiplier allows the user to specify the linear form used to construct the multiplication matrix. For example, if the ambient polynomial ring is $QQ[x,y,z]$ and only the $y$-coordinates of solutions are needed, then one can specify Multiplier => y (and ignore the coordinates of other solution points). By default, a random linear form is used: due to this, it may be helpful to run this function a couple of times to minimize the likelihood of a "bad" linear form being chosen.

The option Basis allows the user to specify a basis of the quotient $R/I$, if one is known. The default value is null, in which case a basis for $R/I$ will be computed via a Grobner basis computation.

In general, Strategy => "Stickelberger" does not require the input ideal I to be radical, so solutions may appear with multiplicity:

i1 : R = QQ[x,y]

o1 = R

o1 : PolynomialRing
i2 : I = ideal"x2,xy,y3"

             2        3
o2 = ideal (x , x*y, y )

o2 : Ideal of R
i3 : sols = zeroDimSolve I

o3 = {{0, 0}, {-8.90741e-293, 0}, {0, -8.01667e-292}, {0, -8.01667e-292}}

o3 : List
i4 : #sols == 4 and all(sols, p -> clean(1e-16, matrix p) == 0)

o4 = true

See also

Ways to use zeroDimSolve :

For the programmer

The object zeroDimSolve is a method function with options.