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

Reply via email to