Group Abstract Group Abstract

Message Boards Message Boards

RootIntervals function supports algebraic number coefficients?

Posted 6 years ago

I found that the RootIntervals function supports algebraic number coefficients, which are not mentioned in the documentation.

In[1]:= RootIntervals[
 x^5 + z*x + y /. {y -> Root[y^3 + 3, 1], 
   z -> Root[x^2 - 3, 1]*Root[x^3 - 4, 1]}]

Out[1]= {{{-(5799246877899597/4503599627370496), -(8293940660758793/
    9007199254740992)}, {-(7591302381148321/9007199254740992), 0}, {0,
    6896505648855517/4503599627370496}}, {{1}, {1}, {1}}}

What I want to know is that this function is still reliable under algebraic number coefficients? (i.e. correct and complete isolation of each root)

It would be nice to be able to provide relevant articles.

Thanks for reading!!

POSTED BY: HaoKun Li
2 Replies
Posted 6 years ago

Yes, using MinimalPolynomial is a very good idea. But I wonder if RootIntervals doesn't have to calculate MinimalPolynomial when coefficients is algebraic number . (e.g. by using the isolation interval of the coefficient)

And thank you very much for your presentation.

POSTED BY: HaoKun Li
Posted 6 years ago

Just as a (cautionary) note, the bounds produced by RootIntervals[] in this particular case aren't very tight:

s1 = RootIntervals[x^5 - Sqrt[3] x Root[-4 + #1^3 &, 1] + Root[3 + #1^3 &, 1], Reals]
   {{{-(5799246877899597/4503599627370496), -(8293940660758793/9007199254740992)},
     {-(7591302381148321/9007199254740992), 0}, {0,6896505648855517/4503599627370496}},
    {{1}, {1}, {1}}}

Abs[Subtract @@@ First[%]] // N
   {0.366879, 0.842804, 1.53133}

For comparison:

Union[MinimalPolynomial[#, x] & /@
      (x /. Solve[x^5 - Sqrt[3] x Root[-4 + #1^3 &, 1] + Root[3 + #1^3 &, 1] == 0, x])]
   {729 - 104976 x^6 + 5038848 x^12 - 1458 x^15 - 80621568 x^18 - 1749600 x^21 -
    33592320 x^27 + 1215 x^30 - 1644624 x^36 + 559872 x^42 - 540 x^45 - 194400 x^51 +
    135 x^60 - 1296 x^66 - 18 x^75 + x^90}

s2 = RootIntervals[First[%], Reals]
   {{{-(161/128), -(513/512)}, {-(139/256), -(17/32)}, {1/512, 533/1024},
     {5/4, 13/8}}, {{1}, {1}, {1}, {1}}}

Abs[Subtract @@@ First[%]] // N
   {0.255859, 0.0117188, 0.518555, 0.375}

As a visual check:

NumberLinePlot[{Apply[IntervalUnion, Interval /@ First[s1]], 
                Apply[IntervalUnion, Interval /@ First[s2]]}]

intervals

POSTED BY: J. M.
Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
Attachments
Remove
or Discard