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 <[email protected]> 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 [email protected] 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 <[email protected]> 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 [email protected] 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 <[email protected]> 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 [email protected] 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 [email protected].
>> >> > 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 [email protected].
>> > 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 [email protected].
> 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 [email protected].
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