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

        8589934591  8589934593    4801919417  9603838835       
o3 = {{{----------, ----------}, {----------, ----------}}, {{-
        8589934592  8589934592    2147483648  4294967296       
     ------------------------------------------------------------------------
                                  15689630387                             
     --------------------------------------------------------------------,
     13479973333575319897333507543509815336818572211270286240551805124608 
     ------------------------------------------------------------------------
                                  5685713403                              
     -------------------------------------------------------------------},
     6739986666787659948666753771754907668409286105635143120275902562304  
     ------------------------------------------------------------------------
      4801919417  9603838835      8589934591  8589934593      9603838835   
     {----------, ----------}}, {{----------, ----------}, {- ----------, -
      2147483648  4294967296      8589934592  8589934592      4294967296   
     ------------------------------------------------------------------------
     4801919417                             3005676775                      
     ----------}}, {{- ----------------------------------------------------,
     2147483648        5986310706507378352962293074805895248510699696029696 
     ------------------------------------------------------------------------
                           4806552509                           9603838835   
     -----------------------------------------------------}, {- ----------, -
     23945242826029513411849172299223580994042798784118784      4294967296   
     ------------------------------------------------------------------------
     4801919417
     ----------}}}
     2147483648

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

          19207677669                                   4318203581           
o4 = {{1, -----------}, {- --------------------------------------------------
           8589934592      26959946667150639794667015087019630673637144422540
     ------------------------------------------------------------------------
                         19207677669         19207677669     
     ------------------, -----------}, {1, - -----------}, {-
     572481103610249216   8589934592          8589934592     
     ------------------------------------------------------------------------
                           7216154591                         19207677669
     -----------------------------------------------------, - -----------}}
     47890485652059026823698344598447161988085597568237568     8589934592

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

o5 = {{[1,1], [2.23607,2.23607]}, {[-1.16392e-57,8.43579e-58],
     ------------------------------------------------------------------------
     [2.23607,2.23607]}, {[1,1], [-2.23607,-2.23607]},
     ------------------------------------------------------------------------
     {[-5.02092e-43,2.00731e-43], [-2.23607,-2.23607]}}

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

o6 = {{[.999512,1.00049], [2.23535,2.23633]}, {[-1.16402e-57,8.43841e-58],
     ------------------------------------------------------------------------
     [2.23535,2.23633]}, {[.999512,1.00049], [-2.23633,-2.23535]},
     ------------------------------------------------------------------------
     {[-5.0219e-43,2.00736e-43], [-2.23633,-2.23535]}}

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

o7 = {{1, 2.23607}, {-1.60171e-58, 2.23607}, {1, -2.23607}, {-1.5068e-43,
     ------------------------------------------------------------------------
     -2.23607}}

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

o8 = {{1, 2.23584}, {-1.60087e-58, 2.23584}, {1, -2.23584}, {-1.50727e-43,
     ------------------------------------------------------------------------
     -2.23584}}

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.16392e-57,8.43579e-58],
      -----------------------------------------------------------------------
      [2.23607,2.23607]}, {[1,1], [-2.23607,-2.23607]},
      -----------------------------------------------------------------------
      {[-5.02092e-43,2.00731e-43], [-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:636:0.