Macaulay2 » Documentation
Packages » Msolve :: msolveRealSolutions
next | previous | forward | backward | up | index | toc

msolveRealSolutions -- compute all real solutions to a zero dimensional system using symbolic methods

Description

This functions uses the msolve package to compute the real solutions to a zero dimensional polynomial ideal with either integer or rational coefficients.

The second input is optional, and indicates the alternative ways to provide output either using an exact rational interval QQi, a real interval RRi, or by taking a rational or real approximation of the midpoint of the intervals.

i1 : R = QQ[x,y]

o1 = R

o1 : PolynomialRing
i2 : I = ideal {(x-1)*x, y^2-5}

             2       2
o2 = ideal (x  - x, y  - 5)

o2 : Ideal of R
i3 : rationalIntervalSols = msolveRealSolutions I

        18446744073709551615  18446744073709551617    41248173712355948587 
o3 = {{{--------------------, --------------------}, {--------------------,
        18446744073709551616  18446744073709551616    18446744073709551616 
     ------------------------------------------------------------------------
     41248173712355948589                  4777175695879208551           
     --------------------}}, {{- ---------------------------------------,
     18446744073709551616        340282366920938463463374607431768211456 
     ------------------------------------------------------------------------
               7030826425098817999              5156021714044493573 
     ---------------------------------------}, {-------------------,
     340282366920938463463374607431768211456    2305843009213693952 
     ------------------------------------------------------------------------
     2578010857022246787      9223372036854775807  18446744073709551619     
     -------------------}}, {{-------------------, --------------------}, {-
     1152921504606846976      9223372036854775808  18446744073709551616     
     ------------------------------------------------------------------------
     41248173712355948595    10312043428088987145       
     --------------------, - --------------------}}, {{-
     18446744073709551616     4611686018427387904       
     ------------------------------------------------------------------------
                217097306260001813           
     ---------------------------------------,
     340282366920938463463374607431768211456 
     ------------------------------------------------------------------------
                1797103304179143                 10312043428088987147   
     --------------------------------------}, {- --------------------, -
     10633823966279326983230456482242756608       4611686018427387904   
     ------------------------------------------------------------------------
     41248173712355948587
     --------------------}}}
     18446744073709551616

o3 : List
i4 : rationalApproxSols = msolveRealSolutions(I, QQ)

          10312043428088987147              281706341152451181           
o4 = {{1, --------------------}, {--------------------------------------,
           4611686018427387904    85070591730234615865843651857942052864 
     ------------------------------------------------------------------------
     10312043428088987147    36893488147419103233    82496347424711897175  
     --------------------}, {--------------------, - --------------------},
      4611686018427387904    36893488147419103232    36893488147419103232  
     ------------------------------------------------------------------------
                   159590000526269237              82496347424711897175
     {- ---------------------------------------, - --------------------}}
        680564733841876926926749214863536422912    36893488147419103232

o4 : List
i5 : floatIntervalSols = msolveRealSolutions(I, RRi)

o5 = {{[1,1], [2.23607,2.23607]}, {[-1.40389e-20,2.06617e-20],
     ------------------------------------------------------------------------
     [2.23607,2.23607]}, {[1,1], [-2.23607,-2.23607]},
     ------------------------------------------------------------------------
     {[-6.37992e-22,1.68999e-22], [-2.23607,-2.23607]}}

o5 : List
i6 : floatIntervalSols = msolveRealSolutions(I, RRi_10)

o6 = {{[.999999,1], [2.23606,2.23607]}, {[-1.0763e-8,2.73922e-8],
     ------------------------------------------------------------------------
     [2.23607,2.23607]}, {[.999999,1], [-2.23607,-2.23607]},
     ------------------------------------------------------------------------
     {[-1.36471e-7,9.06775e-8], [-2.23607,-2.23607]}}

o6 : List
i7 : floatApproxSols = msolveRealSolutions(I, RR)

o7 = {{1, 2.23607}, {3.31144e-21, 2.23607}, {1, -2.23607}, {-2.34496e-22,
     ------------------------------------------------------------------------
     -2.23607}}

o7 : List
i8 : floatApproxSols = msolveRealSolutions(I, RR_10)

o8 = {{1, 2.23607}, {8.3146e-9, 2.23607}, {1, -2.23607}, {-2.28965e-8,
     ------------------------------------------------------------------------
     -2.23607}}

o8 : List

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.

i9 : I = ideal {(x-1)*x^3, (y^2-5)^2}

             4    3   4      2
o9 = ideal (x  - x , y  - 10y  + 25)

o9 : Ideal of R
i10 : floatApproxSols = msolveRealSolutions(I, RRi)

o10 = {{[1,1], [2.23607,2.23607]}, {[-1.40389e-20,2.06617e-20],
      -----------------------------------------------------------------------
      [2.23607,2.23607]}, {[1,1], [-2.23607,-2.23607]},
      -----------------------------------------------------------------------
      {[-6.37992e-22,1.68999e-22], [-2.23607,-2.23607]}}

o10 : List

Ways to use msolveRealSolutions:

  • msolveRealSolutions(Ideal)
  • msolveRealSolutions(Ideal,Ring)
  • msolveRealSolutions(Ideal,RingFamily)

For the programmer

The object msolveRealSolutions is a method function with options.


The source of this document is in Msolve.m2:644:0.