Maybe there is no bug, but the problem is that it take a very very long 
time to compute the minimal polynomial of the absolute value of an 
algebraic number.


Le dimanche 30 mars 2014 16:21:06 UTC+2, Paul Mercat a écrit :
>
> I can confirm that the error comes from the comparaison of two elements of 
> QQbar, because the comparaison of absolutes values of two complexe 
> conjugate doesn't work
>
> sage: a = Automaton([(0, 0, 0), (0, 1, 1), (1, 1, 1), (1, 2, 0), (2, 0, 
> 0), (2, 3, 1), (3, 4, 1), (3, 7, 0), (4, 1, 1), (4, 5, 0), (5, 0, 0), (5, 
> 6, 1), (6, 7, 0), (6, 37, 1), (7, 3, 1), (7, 8, 0), (8, 0, 0), (8, 9, 1), 
> (9, 2, 0), (9, 10, 1), (10, 2, 0), (10, 11, 1), (11, 2, 0), (11, 12, 1), 
> (12, 13, 0), (12, 34, 1), (13, 14, 0), (13, 24, 1), (14, 1, 1), (14, 15, 
> 0), (15, 16, 0), (15, 33, 1), (16, 0, 0), (16, 17, 1), (17, 1, 1), (17, 18, 
> 0), (18, 3, 1), (18, 19, 0), (19, 1, 1), (19, 20, 0), (20, 1, 1), (20, 21, 
> 0), (21, 22, 0), (21, 31, 1), (22, 23, 0), (23, 0, 0), (23, 24, 1), (24, 4, 
> 1), (24, 25, 0), (25, 26, 1), (25, 29, 0), (26, 7, 0), (26, 27, 1), (27, 1, 
> 1), (27, 28, 0), (28, 6, 1), (28, 19, 0), (29, 0, 0), (29, 30, 1), (30, 10, 
> 1), (30, 18, 0), (31, 2, 0), (31, 32, 1), (32, 2, 0), (32, 3, 1), (33, 2, 
> 0), (33, 17, 1), (34, 35, 1), (35, 1, 1), (35, 36, 0), (36, 16, 0), (36, 
> 26, 1), (37, 5, 0), (37, 11, 1)])
> sage: m = a.graph().adjacency_matrix()
> sage: e = m.eigenvalues()
> sage: l = [abs(el) for el in e]
> sage: l[19]==l[20] #doesn't terminate !!!!
>
> Le dimanche 30 mars 2014 16:09:28 UTC+2, Paul Mercat a écrit :
>>
>> I think I know where is the problem.
>> I have tried to reimplemente the function max, and I've see that it 
>> doesn't terminate when there is a comparaison between two complex 
>> conjugates.
>>
>> The bug with max comes from a bug in the comparaison of two elements of 
>> QQbar : it should detect when two algebraic numbers are equals, but it 
>> doesn't and so it try to compute with more and more precision to see which 
>> one is greater, but it doesn't terminates because there are equals.
>>
>> Maybe I will try to fix this.
>>
>> Paul
>>
>> Le dimanche 30 mars 2014 16:00:14 UTC+2, Paul Mercat a écrit :
>>>
>>> If I do what you propose, it works.
>>> But I want the maximum of the list in QQbar, not in RR, and I don't 
>>> understand why the max function take all this time.
>>> And it also doesn't work with key=abs.
>>>
>>> Paul
>>>
>>> Le dimanche 30 mars 2014 15:49:45 UTC+2, John Cremona a écrit :
>>>>
>>>> m is an integer matrix and its eigenvalues (which are not all rel 
>>>> anyway) are returned as algebraic numbers (try e[0].parent()). 
>>>>
>>>> Perhaps you want this: 
>>>> sage: max([RR(ei) for ei in e if ei in RR]) 
>>>> 1.99801167774722 
>>>>
>>>> but note that only 22 of the 38 eigenvalues are real. 
>>>>
>>>> John 
>>>>
>>>>
>>>> On 30 March 2014 14:32, Paul Mercat <mer...@yahoo.fr> wrote: 
>>>> > The function max sometimes doesn't work in sage. 
>>>> > Here is an example : 
>>>> > 
>>>> > sage: a = Automaton([(0, 0, 0), (0, 1, 1), (1, 1, 1), (1, 2, 0), (2, 
>>>> 0, 0), 
>>>> > (2, 3, 1), (3, 4, 1), (3, 7, 0), (4, 1, 1), (4, 5, 0), (5, 0, 0), (5, 
>>>> 6, 1), 
>>>> > (6, 7, 0), (6, 37, 1), (7, 3, 1), (7, 8, 0), (8, 0, 0), (8, 9, 1), 
>>>> (9, 2, 
>>>> > 0), (9, 10, 1), (10, 2, 0), (10, 11, 1), (11, 2, 0), (11, 12, 1), 
>>>> (12, 13, 
>>>> > 0), (12, 34, 1), (13, 14, 0), (13, 24, 1), (14, 1, 1), (14, 15, 0), 
>>>> (15, 16, 
>>>> > 0), (15, 33, 1), (16, 0, 0), (16, 17, 1), (17, 1, 1), (17, 18, 0), 
>>>> (18, 3, 
>>>> > 1), (18, 19, 0), (19, 1, 1), (19, 20, 0), (20, 1, 1), (20, 21, 0), 
>>>> (21, 22, 
>>>> > 0), (21, 31, 1), (22, 23, 0), (23, 0, 0), (23, 24, 1), (24, 4, 1), 
>>>> (24, 25, 
>>>> > 0), (25, 26, 1), (25, 29, 0), (26, 7, 0), (26, 27, 1), (27, 1, 1), 
>>>> (27, 28, 
>>>> > 0), (28, 6, 1), (28, 19, 0), (29, 0, 0), (29, 30, 1), (30, 10, 1), 
>>>> (30, 18, 
>>>> > 0), (31, 2, 0), (31, 32, 1), (32, 2, 0), (32, 3, 1), (33, 2, 0), (33, 
>>>> 17, 
>>>> > 1), (34, 35, 1), (35, 1, 1), (35, 36, 0), (36, 16, 0), (36, 26, 1), 
>>>> (37, 5, 
>>>> > 0), (37, 11, 1)]) 
>>>> > sage: m = a.graph().adjacency_matrix() 
>>>> > sage: e = m.eigenvalues() 
>>>> > sage: print e 
>>>> > sage: max(e) #doesn't terminate !!! 
>>>> > 
>>>> > Do you know why it doesn't work ? 
>>>> > 
>>>> > Paul 
>>>> > 
>>>> > -- 
>>>> > You received this message because you are subscribed to the Google 
>>>> Groups 
>>>> > "sage-devel" group. 
>>>> > To unsubscribe from this group and stop receiving emails from it, 
>>>> send an 
>>>> > email to sage-devel+...@googlegroups.com. 
>>>> > To post to this group, send email to sage-...@googlegroups.com. 
>>>> > Visit this group at http://groups.google.com/group/sage-devel. 
>>>> > For more options, visit https://groups.google.com/d/optout. 
>>>>
>>>

-- 
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.

Reply via email to