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

                     902032198730430703           
o3 = {{{- ---------------------------------------,
          170141183460469231731687303715884105728 
     ------------------------------------------------------------------------
               489252593706376763                41248173712355948589   
     --------------------------------------}, {- --------------------, -
     42535295865117307932921825928971026432      18446744073709551616   
     ------------------------------------------------------------------------
     20624086856177974293      18446744073709551615  18446744073709551617  
     --------------------}}, {{--------------------, --------------------},
      9223372036854775808      18446744073709551616  18446744073709551616  
     ------------------------------------------------------------------------
        10312043428088987147    41248173712355948587       
     {- --------------------, - --------------------}}, {{-
         4611686018427387904    18446744073709551616       
     ------------------------------------------------------------------------
               7833034560488014481           
     ---------------------------------------,
     170141183460469231731687303715884105728 
     ------------------------------------------------------------------------
               8896322538539421681              41248173712355948583 
     ---------------------------------------}, {--------------------,
     170141183460469231731687303715884105728    18446744073709551616 
     ------------------------------------------------------------------------
     2578010857022246787      18446744073709551615  18446744073709551617  
     -------------------}}, {{--------------------, --------------------},
     1152921504606846976      18446744073709551616  18446744073709551616  
     ------------------------------------------------------------------------
      41248173712355948585  20624086856177974295
     {--------------------, --------------------}}}
      18446744073709551616   9223372036854775808

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

                 1054978176095076349              82496347424711897175      
o4 = {{---------------------------------------, - --------------------}, {1,
       340282366920938463463374607431768211456    36893488147419103232      
     ------------------------------------------------------------------------
       82496347424711897175               33227749314106475           
     - --------------------}, {--------------------------------------,
       36893488147419103232    10633823966279326983230456482242756608 
     ------------------------------------------------------------------------
     82496347424711897175       82496347424711897175
     --------------------}, {1, --------------------}}
     36893488147419103232       36893488147419103232

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

o5 = {{[1,1], [-2.23607,-2.23607]}, {[1,1], [2.23607,2.23607]},
     ------------------------------------------------------------------------
     {[-1.18216e-28,5.9719e-29], [-2.23607,-2.23607]},
     ------------------------------------------------------------------------
     {[-5.08781e-24,1.36916e-23], [2.23607,2.23607]}}

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

o6 = {{[.999999,1], [-2.23607,-2.23607]}, {[.999999,1], [2.23607,2.23607]},
     ------------------------------------------------------------------------
     {[-1.84822e-9,1.4341e-9], [-2.23607,-2.23607]},
     ------------------------------------------------------------------------
     {[-2.15159e-8,6.30598e-8], [2.23607,2.23607]}}

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

o7 = {{1, -2.23607}, {1, 2.23607}, {-2.92485e-29, -2.23607}, {4.30188e-24,
     ------------------------------------------------------------------------
     2.23607}}

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

o8 = {{1, -2.23607}, {1, 2.23607}, {-2.07057e-10, -2.23607}, {2.07719e-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,1], [2.23607,2.23607]},
      -----------------------------------------------------------------------
      {[-1.18216e-28,5.9719e-29], [-2.23607,-2.23607]},
      -----------------------------------------------------------------------
      {[-5.08781e-24,1.36916e-23], [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.