Skip to content

Commit

Permalink
documented new msolveRealSolutions inputs
Browse files Browse the repository at this point in the history
  • Loading branch information
mahrud committed Aug 7, 2024
1 parent 6b53d9c commit 22f6460
Showing 1 changed file with 38 additions and 24 deletions.
62 changes: 38 additions & 24 deletions M2/Macaulay2/packages/Msolve.m2
Original file line number Diff line number Diff line change
Expand Up @@ -403,58 +403,72 @@ Node
degree lm
dim lm
Node
Key
QQi
Headline
the class of all rational intervals
Description
This class is similar to the class of @TO2(RRi, "real intervals")@,
except that the boundaries are arbitrary precision rational numbers.
Caveat
Currently this class is not implemented in the interpreter,
which means rings or matrices over rational intervals are not supported,
and many functionalities of @TO RRi@ are not yet available.
Node
Key
msolveRealSolutions
(msolveRealSolutions, Ideal)
(msolveRealSolutions, Ideal, Ring)
(msolveRealSolutions, Ideal, RingFamily)
[msolveRealSolutions, Threads]
[msolveRealSolutions, Verbosity]
Headline
compute all real solutions to a zero dimensional system using symbolic methods
Usage
msolveRealSolutions(I)
msolveRealSolutions(I, K)
Inputs
I:Ideal
which is zero dimensional, in a polynomial ring with coefficients over @TO QQ@
K:{Ring,RingFamily}
the field to find answers in, which must be one of
@TO QQi@ (default), @TO QQ@, @TO RR@, or @TO RRi@ (possibly with specified precision)
Threads => ZZ -- number of processor threads to use
Verbosity => ZZ -- level of verbosity between 0, 1, and 2
Outputs
Sols:List
of lists; each entry in the list @TT "Sols"@ consists of a list representing
:List
of lists; each entry in the list consists of a list representing
the coordinates of a solution. By default each solution coordinate value is
also represented by a two element list of rational numbers, {a, b}, this means
that that coordinate of the solution has a value greater than or equal to a and
less than or equal to b. This interval is computed symbolically and its correctness
is guaranteed by exact methods.
also represented by a @TO2(QQi, "rational interval")@ consisting of a two element
list of rational numbers, @TT "{a, b}"@, this means that that coordinate of the
solution has a value greater than or equal to @TT "a"@ and less than or equal to @TT "b"@.
This interval is computed symbolically and its correctness is guaranteed by exact methods.
Description
Text
This functions uses the msolve package to compute the real solutions to a zero
dimensional polynomial ideal with either integer or rational coefficients.
The output is a list of lists, each entry in the list Sol consists of a list
representing the coordinates of a solution. By default each solution coordinate
value is also represented by a two element list of rational numbers, {a, b},
this means that that coordinate of the solution has a value greater than or
equal to a and less than or equal to b. This interval is computed symbolically
and its correctness is guaranteed by exact methods.
Text
Option "output type" (default = "rational interval") gives alternative ways to provide output
either using @TO RRi@ ("float interval")
or by taking a floating point approximation of the average of the interval endpoints ("float middle point").
Text
First an example over a finite field
The second input is optional, and indicates the alternative ways to provide output
either using an exact rational interval @TO QQi@, a real interval @TO RRi@,
or by taking a rational or real approximation of the midpoint of the intervals.
Example
R = QQ[x,y]
I = ideal {(x-1)*x, y^2-5}
sols = msolveRealSolutions I
floatSolsInterval = msolveRealSolutions(I,"output type"=>"float interval")
floatAproxSols = msolveRealSolutions(I,"output type"=>"float middle point")
rationalIntervalSols = msolveRealSolutions I
rationalApproxSols = msolveRealSolutions(I, QQ)
floatIntervalSols = msolveRealSolutions(I, RRi)
floatIntervalSols = msolveRealSolutions(I, RRi_10)
floatApproxSols = msolveRealSolutions(I, RR)
floatApproxSols = msolveRealSolutions(I, RR_10)
Text
Note in cases where solutions have multiplicity this is not reflected in the output.
While the solver does not return multiplicities,
it reliably outputs the verified isolating intervals for multiple solutions.
Example
I = ideal {(x-1)*x^3, (y^2-5)^2}
floatAproxSols=msolveRealSolutions(I,"output type"=>"float interval")
floatApproxSols = msolveRealSolutions(I, RRi)
Node
Key
msolveRUR
Expand Down Expand Up @@ -548,15 +562,15 @@ Node
This functions uses the F4SAT algorithm implemented in the msolve library to compute a
Groebner basis, in GRevLex order, of $I:f^\infty$, that is of the saturation of the
ideal $I$ by the principal ideal generated by the polynomial $f$.
Text
First an example; note the ring must be a polynomial ring over a finite field
Example
R=ZZ/1073741827[z_1..z_3]
I=ideal(z_1*(z_2^2-17*z_1-z_3^3),z_1*z_2)
satMsolve=ideal msolveSaturate(I,z_1)
satM2=saturate(I,z_1)
Text
Note that the ring must be a polynomial ring over a finite field.
Caveat
Currently this algorithm only works over prime fields in characteristic between $2^{16}$ and $2^{31}$.
Currently the F4SAT algorithm is only implemented over prime fields in characteristic between $2^{16}$ and $2^{31}$.
Node
Key
Expand Down

0 comments on commit 22f6460

Please sign in to comment.