Thanks a lot! Dave
On Aug 6, 7:29 pm, Jason Grout <[email protected]> wrote: > On 8/6/10 11:56 AM, davidp wrote: > > > > > 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)] > > 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 -- To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/sage-support URL: http://www.sagemath.org
