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      9603838835    4801919417       
o3 = {{{----------, ----------}, {- ----------, - ----------}}, {{-
        8589934592  8589934592      4294967296    2147483648       
     ------------------------------------------------------------------------
                                  15867377981                             
     --------------------------------------------------------------------,
     13479973333575319897333507543509815336818572211270286240551805124608 
     ------------------------------------------------------------------------
                                  10891638261                              
     --------------------------------------------------------------------},
     13479973333575319897333507543509815336818572211270286240551805124608  
     ------------------------------------------------------------------------
        9603838835    4801919417      8589934591  8589934593    4801919417 
     {- ----------, - ----------}}, {{----------, ----------}, {----------,
        4294967296    2147483648      8589934592  8589934592    2147483648 
     ------------------------------------------------------------------------
     9603838835                             8788741765                      
     ----------}}, {{- ----------------------------------------------------,
     4294967296        1496577676626844588240573268701473812127674924007424 
     ------------------------------------------------------------------------
                          4276600829                        4801919417 
     ---------------------------------------------------}, {----------,
     748288838313422294120286634350736906063837462003712    2147483648 
     ------------------------------------------------------------------------
     9603838835
     ----------}}}
     4294967296

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

            19207677669     
o4 = {{1, - -----------}, {-
             8589934592     
     ------------------------------------------------------------------------
                                  621967465                                
     -------------------------------------------------------------------, -
     3369993333393829974333376885877453834204643052817571560137951281152   
     ------------------------------------------------------------------------
     19207677669       19207677669     
     -----------}, {1, -----------}, {-
      8589934592        8589934592     
     ------------------------------------------------------------------------
                           235540107                       19207677669
     ----------------------------------------------------, -----------}}
     2993155353253689176481146537402947624255349848014848   8589934592

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

o5 = {{[1,1], [-2.23607,-2.23607]}, {[-1.17711e-57,8.07987e-58],
     ------------------------------------------------------------------------
     [-2.23607,-2.23607]}, {[1,1], [2.23607,2.23607]},
     ------------------------------------------------------------------------
     {[-5.87256e-42,5.71517e-42], [2.23607,2.23607]}}

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

o6 = {{[.999512,1.00049], [-2.23633,-2.23535]}, {[-1.17739e-57,8.08059e-58],
     ------------------------------------------------------------------------
     [-2.23633,-2.23535]}, {[.999512,1.00049], [2.23535,2.23633]},
     ------------------------------------------------------------------------
     {[-5.87424e-42,5.7173e-42], [2.23535,2.23633]}}

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

o7 = {{1, -2.23607}, {-1.8456e-58, -2.23607}, {1, 2.23607}, {-7.86929e-44,
     ------------------------------------------------------------------------
     2.23607}}

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

o8 = {{1, -2.23584}, {-1.84668e-58, -2.23584}, {1, 2.23584}, {-7.84727e-44,
     ------------------------------------------------------------------------
     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.17711e-57,8.07987e-58],
      -----------------------------------------------------------------------
      [-2.23607,-2.23607]}, {[1,1], [2.23607,2.23607]},
      -----------------------------------------------------------------------
      {[-5.87256e-42,5.71517e-42], [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 /__w/M2/M2/macaulay2-1.26.05+ds/M2/Macaulay2/packages/Msolve.m2:644:0.