I'm not sure if it's enough to just take the minimum length of the
intervals that overlap and set eps to something smaller than that.
Someone more familiar with the inner workings of the algorithm would
have to verify whether that would work or if it could still leave
intersecting endpoints.

IMO, we should just fix the function to not return intersecting
endpoints in the first place. The intervals aren't really isolating if
they intersect.

Aaron Meurer

On Tue, May 21, 2024 at 2:58 PM Ani J <anij...@gmail.com> wrote:
>
> Yes, this seems like a good option, so keep reducing eps in a while loop 
> until the endpoints of all intervals are different, right?
>
> On Tuesday, May 21, 2024 at 1:55:54 PM UTC-7 asme...@gmail.com wrote:
>>
>> I don't know if there's an existing option to do this. It seems like
>> it would be useful. You can always lower the eps to make the intervals
>> smaller:
>>
>> >>> Poly(x**6 + 19/5*x**5 + 131/50*x**4 - x**2 - 19/5*x - 131/50, x, 
>> >>> domain='QQ').intervals(eps=0.1)
>> [((-29/10, -26/9), 1), ((-1, -1), 1), ((-10/11, -9/10), 1), ((1, 1), 1)]
>>
>> Aaron Meurer
>>
>> On Tue, May 21, 2024 at 2:51 PM Ani J <ani...@gmail.com> wrote:
>> >
>> >
>> > Oh! I see, but i believe that the intervals overlap on the endpoints, is 
>> > it possible to make the intervals completely disjoint??
>> > For example consider the following program:
>> >
>> > from sympy import Poly
>> > from sympy.abc import x
>> > from sympy import div, QQ
>> > p = Poly(x**6 + 19/5*x**5 + 131/50*x**4 - x**2 - 19/5*x - 131/50, x, 
>> > domain='QQ')
>> > p.intervals()
>> >
>> > The intervals that this outputs is: [((-3, -2), 1), ((-1, -1), 1), ((-1, 
>> > 0), 1), ((1, 1), 1)]
>> >
>> > Here we can see that the point -1 is a common endpoint between the second 
>> > and
>> >
>> > the third term. Is it possible to enforce that there be no common point?
>> >
>> >
>> > Best
>> >
>> > On Tuesday, May 21, 2024 at 10:27:15 AM UTC-7 asme...@gmail.com wrote:
>> >>
>> >> Yes, this is the case. The documentation for this method could perhaps
>> >> be improved, but the key word is "isolating", meaning each interval
>> >> contains exactly one root. You can also read more about the algorithm
>> >> that is referenced in the docstring
>> >> https://en.wikipedia.org/wiki/Vincent%27s_theorem
>> >>
>> >> Aaron Meurer
>> >>
>> >>
>> >> On Tue, May 21, 2024 at 9:18 AM Chris Smith <smi...@gmail.com> wrote:
>> >> >
>> >> > I strongly suspect that the roots returned by `Poly.intervals` have 
>> >> > only one root in them (by definition). If you use 
>> >> > `refine_root(lo,hi,eps)` to refine the root bounds to arbitrary width 
>> >> > and give it an interval in which there is more than one root, it will 
>> >> > raise an error.
>> >> >
>> >> > /c
>> >> > On Tuesday, May 21, 2024 at 6:06:14 AM UTC-5 ani...@gmail.com wrote:
>> >> >>
>> >> >> Is it possible to use SymPy library to get intervals (with rational 
>> >> >> endpoints) such that there is exactly one root in the interval? I 
>> >> >> would like to use an implementation of RRI algorithm for my purpose. I 
>> >> >> believe that the interval function does this. Is this correct? Is it 
>> >> >> guaranteed that the output intervals are guaranteed to not have any 
>> >> >> common points?
>> >> >>
>> >> >>
>> >> > --
>> >> > You received this message because you are subscribed to the Google 
>> >> > Groups "sympy" group.
>> >> > To unsubscribe from this group and stop receiving emails from it, send 
>> >> > an email to sympy+un...@googlegroups.com.
>> >> > To view this discussion on the web visit 
>> >> > https://groups.google.com/d/msgid/sympy/807f8910-040d-475b-91b6-a5002cedeea0n%40googlegroups.com.
>> >
>> > --
>> > You received this message because you are subscribed to the Google Groups 
>> > "sympy" group.
>> > To unsubscribe from this group and stop receiving emails from it, send an 
>> > email to sympy+un...@googlegroups.com.
>> > To view this discussion on the web visit 
>> > https://groups.google.com/d/msgid/sympy/884eb7ff-0762-4771-a81f-930c13dada2dn%40googlegroups.com.
>
> --
> You received this message because you are subscribed to the Google Groups 
> "sympy" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to sympy+unsubscr...@googlegroups.com.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/sympy/c987974b-cf39-4c8a-ad0a-579b61778513n%40googlegroups.com.

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sympy+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sympy/CAKgW%3D6LB2-7GKdeUx5z3qaST6K-s22MSUs%2Bi%3DDA2_Nh67URU3Q%40mail.gmail.com.

Reply via email to