missing eigenvectors

45 views
Skip to first unread message

davidp

unread,
Aug 6, 2010, 2:56:37 PM8/6/10
to sage-support
Sage has no trouble finding the eigenvectors of the 3x3 matrix below
but something is wrong in the 4x4 example. Am I doing something
silly?

sage: version()
'Sage Version 4.3, Release Date: 2009-12-24'
sage: m=matrix(CC,[[1,0,I],[1,1,0],[I,0,1]])
sage: m.eigenvectors_right()
[(1.00000000000000 + 1.00000000000000*I, [
(1.00000000000000, -1.00000000000000*I, 1.00000000000000)
], 1), (1.00000000000000, [
(0, 1.00000000000000, 0)
], 1), (1.00000000000000 - 1.00000000000000*I, [
(1.00000000000000, 1.00000000000000*I, -1.00000000000000)
], 1)]
sage: n=matrix(CC,[[1,0,I,0],[1,1,0,I],[I,0,1,1],[0,I,0,2]])
sage: n.eigenvectors_right()
[(1.77621849241320 + 1.01489897201814*I, [

], 1), (1.77621849241320 - 1.01489897201814*I, [

], 1), (0.723781507586799 + 1.07181709265703*I, [

], 1), (0.723781507586799 - 1.07181709265703*I, [

], 1)]

Jason Grout

unread,
Aug 6, 2010, 10:29:18 PM8/6/10
to sage-s...@googlegroups.com

Short answer: use CDF, not CC.

sage: n=matrix(CDF,[[1,0,I,0],[1,1,0,I],[I,0,1,1],[0,I,0,2]])
sage: n.eigenvectors_right()
[(0.723781507587 - 1.07181709266*I, [(-0.512558924324 -
0.132091804021*I, 0.462262927873 - 0.251444224409*I, 0.585855615051,
-0.293915958782 - 0.115371137717*I)], 1), (1.77621849241 -
1.01489897202*I, [(0.340477754428 - 0.0450332871844*I, 0.598345310973,
-0.38050619325 - 0.218580892372*I, -0.562226753834 - 0.123968940799*I)],
1), (0.723781507587 + 1.07181709266*I, [(0.512558924324 -
0.132091804021*I, -0.462262927873 - 0.251444224409*I, 0.585855615051,
-0.293915958782 + 0.115371137717*I)], 1), (1.77621849241 +
1.01489897202*I, [(0.340477754428 + 0.0450332871844*I, 0.598345310973,
0.38050619325 - 0.218580892372*I, 0.562226753834 - 0.123968940799*I)], 1)]

That will use LAPACK under the hood (via scipy).


Medium answer: We will (very?!) soon have linear algebra over CC be very
good, pending completion of ongoing work in wrapping ALGLIB in Sage.

Long answer: Our generic algorithms are woefully inadequate for
multiprecision linear algebra (we just do the textbook algorithms, which
can have really bad roundoff error). That is what CC employs. In fact
there is an error displayed to this effect the first time you try it:

sage: n=matrix(CC,[[1,0,I,0],[1,1,0,I],[I,0,1,1],[0,I,0,2]])
sage: n.eigenvectors_right()

/Users/grout/sage/local/bin/sage-ipython:1: UserWarning: Using generic
algorithm for an inexact ring, which may result in garbage from
numerical precision issues.
#!/usr/bin/env python
/Users/grout/sage/local/bin/sage-ipython:1: UserWarning: Using generic
algorithm for an inexact ring, which will probably give incorrect
results due to numerical precision issues.
#!/usr/bin/env python
[(1.77621849241320 + 1.01489897201814*I, [

], 1), (1.77621849241320 - 1.01489897201814*I, [

], 1), (0.723781507586799 + 1.07181709265703*I, [

], 1), (0.723781507586799 - 1.07181709265703*I, [

], 1)]

Thanks,

Jason


davidp

unread,
Aug 6, 2010, 11:08:54 PM8/6/10
to sage-support
Thanks a lot!

Dave
Reply all
Reply to author
Forward
0 new messages