Thanks, Dima, John, mmarco and Jason, for the very helpful comments. Dima - had not thought about using QQbar! That pretty much gives the output I would like to have as the default, other than the reference to the "Algebraic Field" in the output. John sees my dilemma exactly. The less I have to say about field extensions, the better. I have broached QQbar in my textbook, since it is also useful for orthogonality computations over QQ, but I have not belabored the details.
Jason - I'd forgotten what Mathematica does on a problem like this. Ouch. We are certainly doing better already. But we have QQbar, rather than all that Root[] nonsense. I agree that the current output is extremely interesting and informative, with common "formulas" for eigenvectors across the Galois conjugates of set of roots of an irreducible factor of the characteristic polynomial. But look at the terms I used in that last phrase. I *have* tried to explain this a couple times in seminar presentations at a couple of undergradaute institutions and it did not go so smoothly. I'd see nothing wrong with preserving this behavior as an option, I'm just queasy about having it as the default. The output when you change the base ring to QQbar originally is even easier to explain - it doesn't require an explanation (other than the question marks in the QQbar representations). So I guess I'm wondering if there is a real argument against moving the default output from one requiring Galois theory to understand to something (ie like the QQbar examples above) more familiar to a beginning student, engineer or scientist. Dima - Eigenspaces from matrices over RDF/CDF make claims about dimensions of eigenspaces that are either false or misleading, depending on your viewpoint. We apply other exact ideas to this class of matrices, such as rank, that I think should also be dealt with. But that is a post for another day. Better would be to have a routine that groups "equal" eigenvalues according to a user-supplied tolerance for the equality. sage: A = identity_matrix(3).change_ring(RDF) sage: A.eigenspaces_right() [(1.0, Vector space of degree 3 and dimension 1 over Real Double Field User basis matrix: [1.0 0.0 0.0]), (1.0, Vector space of degree 3 and dimension 1 over Real Double Field User basis matrix: [0.0 1.0 0.0]), (1.0, Vector space of degree 3 and dimension 1 over Real Double Field User basis matrix: [0.0 0.0 1.0])] sage: A.eigenmatrix_right() ( [1.0 0 0] [1.0 0.0 0.0] [ 0 1.0 0] [0.0 1.0 0.0] [ 0 0 1.0], [0.0 0.0 1.0] ) mmarco - thanks for the background. Right now we have extend=True for eigenvalues of all matrices, but it only takes effect if the eigenvalues are in QQbar, so the matrix base ring needs to be QQ, or a number field, or ... I don't have a real opinion myself here - just bringing it up as part of the discussion to see what others think. Rob -- To post to this group, send an email to [email protected] To unsubscribe from this group, send an email to [email protected] For more options, visit this group at http://groups.google.com/group/sage-devel URL: http://www.sagemath.org
