David Joyner wrote: > I think it's great that you are doing this. Does a patch exist yet? > I'd like to try it out.
Yes, on my computer. The documentation isn't there yet, though. I'll try to put up something today. Thanks, Jason > > On Sat, Jul 19, 2008 at 11:06 AM, Jason Grout > <[EMAIL PROTECTED]> wrote: >> I've been working on writing eigenvalue/eigenvector functions, as >> mentioned here: >> http://groups.google.com/group/sage-devel/browse_thread/thread/c8d2001f2b19a9bc/2585039efd2fbd2f?lnk=gst&q=kernel#2585039efd2fbd2f >> >> Here is the interface as it now stands. Does anyone have any comments >> or questions? >> >> * eigenspaces_left, eigenspaces_right: Like the current eigenspaces >> function, but returns the algebraic multiplicity of the eigenvalue as >> well in tuples like: (eigenvalue, eigenspace, algebraic multiplicity). >> This way, existing code that depends on the first two elements of a >> returned tuple being what they are still works. In the future, we might >> consider using a dictionary like {"eigenvalue": eigenvaxill works. It >> prints a deprecation warning and then calls eigenspaces_left. >> >> Also, the even_if_inexact argument is deprecated. Instead, a warning >> message is printed if the function is called with an inexact base ring. >> >> Note that the eigenspace functions still return the eigenvalues up to >> Galois conjugation, and the algebraic multiplicity applies to each >> galois conjugate of the returned eigenvalue (at least, I think that's >> how the math should work, right?) >> >> * eigenvalues: This function returns all the eigenvalues as elements of >> QQbar: i.e., it returns all the galois conjugates of eigenvalues >> returned in eigenspaces_left. For an nxn matrix, it returns n >> eigenvalues, so the algebraic multiplicity is not explicitly returned, >> but is implicit in the list. >> >> * eigenvectors_left, eigenvectors_right: These functions return tuples >> of the form: (eigenvalue, list of eigenvectors, algebraic multiplicity). >> The eigenvalues are elements of QQbar and are all distinct >> eigenvalues. The list of eigenvectors is found by taking the basis of >> the space returned in eigenspaces_* and then mapping it to QQbar^n by >> the map that takes the eigenvalue to a particular galois conjugate. >> >> * eigenmatrix_left, eigenmatrix_right: This mimics the eig command in >> Matlab: it returns a matrix D and a matrix P, where D is a diagonal >> matrix of eigenvalues and P is a matrix of rows or columns corresponding >> eigenvectors or zero vectors so that AP=PD or PA=DP (depending on left >> or right). >> >> I'm also trying to get the kernel and image and other functions that >> depend on left/right notions to signify they side they are computing. >> Right now I changed them to *_left and *_right (instead of left_* and >> right_*) and deprecating the left_* and right_* functions. I realize >> that the *_left/right functions don't read as naturally as left/right_* >> functions, but they make a lot more sense in tab completion; if someone >> is looking to compute the kernel of a matrix, then it's harder to find >> the function if it is called left/right_kernel than if it is called >> kernel_left/right. For tab completion, I think it's better in general >> to do an index-style noun_modifier than modifier_noun (as would be more >> naturally spoken). >> >> Also, to address another point: there would be a lot functions with the >> above changes. I'm following the philosophy expressed, I believe, by >> Nick: that each function should clearly indicate what it is returning >> and that arguments should not change the mathematical content of what is >> being returned. I see left eigenvectors and right eigenvectors as >> fundamentally different things, i.e., I wouldn't ever want to confuse >> the two (well, I guess unless the matrix was symmetric :). That's why I >> have two different functions instead of one eigenvectors(left=True) or >> eigenvectors(right=True). >> >> I'm trying hard to get this done for 3.0.6 in time for an AIM workshop >> on undergraduate linear algebra research that is introducing the >> participants to Sage. Otherwise, I'm afraid that Sage won't be very >> suitable for the workshop, not having an eigenvalues function, for example. >> >> Thanks, >> >> Jason >> >> > > > > --~--~---------~--~----~------------~-------~--~----~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~----------~----~----~----~------~----~------~--~---