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 
     ------------------------------------------------------------------------
     10312043428088987147       
     --------------------}}, {{-
      4611686018427387904       
     ------------------------------------------------------------------------
                   209961790006027896306952992877               
     ----------------------------------------------------------,
     6277101735386680763835789423207666416102355444464034512896 
     ------------------------------------------------------------------------
                   249083931662655348845584502243                
     ----------------------------------------------------------},
     6277101735386680763835789423207666416102355444464034512896  
     ------------------------------------------------------------------------
      41248173712355948587  10312043428088987147      18446744073709551615 
     {--------------------, --------------------}}, {{--------------------,
      18446744073709551616   4611686018427387904      18446744073709551616 
     ------------------------------------------------------------------------
     18446744073709551617      10312043428088987147   
     --------------------}, {- --------------------, -
     18446744073709551616       4611686018427387904   
     ------------------------------------------------------------------------
     41248173712355948587                   15599430642176921            
     --------------------}}, {{- ---------------------------------------,
     18446744073709551616        170141183460469231731687303715884105728 
     ------------------------------------------------------------------------
                45521518104128543                 10312043428088987147   
     ---------------------------------------}, {- --------------------, -
     340282366920938463463374607431768211456       4611686018427387904   
     ------------------------------------------------------------------------
     41248173712355948587
     --------------------}}}
     18446744073709551616

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

          82496347424711897175  
o4 = {{1, --------------------},
          36893488147419103232  
     ------------------------------------------------------------------------
                     19561070828313726269315754683               
     {----------------------------------------------------------,
      6277101735386680763835789423207666416102355444464034512896 
     ------------------------------------------------------------------------
     82496347424711897175         82496347424711897175  
     --------------------}, {1, - --------------------},
     36893488147419103232         36893488147419103232  
     ------------------------------------------------------------------------
                 14322656819774701               82496347424711897175
     {---------------------------------------, - --------------------}}
      680564733841876926926749214863536422912    36893488147419103232

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

o5 = {{[1,1], [2.23607,2.23607]}, {[-3.34488e-29,3.96814e-29],
     ------------------------------------------------------------------------
     [2.23607,2.23607]}, {[1,1], [-2.23607,-2.23607]},
     ------------------------------------------------------------------------
     {[-9.16852e-23,1.33776e-22], [-2.23607,-2.23607]}}

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

o6 = {{[.999998,1], [2.23606,2.23607]}, {[-1.02725e-7,2.42623e-7],
     ------------------------------------------------------------------------
     [2.23607,2.23607]}, {[.999997,1], [-2.23608,-2.23606]},
     ------------------------------------------------------------------------
     {[-7.07185e-7,3.08203e-7], [-2.23607,-2.23606]}}

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

o7 = {{1, 2.23607}, {3.11626e-30, 2.23607}, {1, -2.23607}, {2.10453e-23,
     ------------------------------------------------------------------------
     -2.23607}}

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

o8 = {{1, 2.23607}, {6.99492e-8, 2.23607}, {1, -2.23607}, {-1.99491e-7,
     ------------------------------------------------------------------------
     -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]}, {[-3.34488e-29,3.96814e-29],
      -----------------------------------------------------------------------
      [2.23607,2.23607]}, {[1,1], [-2.23607,-2.23607]},
      -----------------------------------------------------------------------
      {[-9.16852e-23,1.33776e-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.