2009/6/11 Rob Beezer <goo...@beezer.cotse.net>: > > On Jun 8, 7:47 pm, Jason Grout <jason-s...@creativetrax.com> wrote: >> I've never had to use the left eigenvectors of a graph. > > And I've never needed a directed graph so my matrices are always > symmetric. (Just kidding.) ;-) > > The above is now: http://trac.sagemath.org/sage_trac/ticket/6258 > > A related question: matrices and graphs have eigenspaces() methods, > but matrices have eigenvalues() and graphs have spectrum(). The > spectrum() method seems identical in the style of its output to the > eigenvalues() method - a list of eigenvalues repeated according to > multiplicity. Furthermore, in algebraic graph theory the term > "spectrum" is closely tied to both the values of the eigenvalues and > their multiplicities. > > For example, graphs.HoffmanSingletonGraph() has 50 eigenvalues but > just three are distinct. The usual shorthand is to list the > eigenvalues with their multiplicities as an exponent - for the Hoffman- > Singleton graph this would look like > > 7^1 2^28 (-3)^21 > > Yes, you can count the multiple eigenvalues, or write a routine to do > it for you, but I think this is something that should be built into > Sage. > > So a proposal for graphs: > > 1. Add a new eigenvalues() method for a graph, identical to the > current spectrum(), more in line with the use for matrices. > > 2. Have spectrum() return something like a list of pairs (e_i, m_i) > with m_i being the multiplicity of eigenvalue e_i, more in line with > expectations for the term. For example, "Algebraic Graph > Theory" (Godsil and Royle) says the spectrum is the "list of the > eigenvalues together with their multiplicities." Biggs' "Algebraic > Graph Theory" says the spectrum "is the set of numbers which are > eigenvalues, together with their multiplicities."
Two quick comments: (1) I would be happy for matrices to have a spectrum() method too as a synonym for eigenvalues-with-multiplicities; (2) The Factorization class could be used to hold the lists of eigenvalues with multiplicities, like this: sage: I3 = identity_matrix(QQ,3) sage: M = I3.block_sum(2*I3) sage: M.eigenvalues() [2, 2, 2, 1, 1, 1] sage: Factorization(M.charpoly().roots()) 1^3 * 2^3 or sage: Factorization([(a,1) for a in M.eigenvalues()]) 1^3 * 2^3 John > > Rob > > > --~--~---------~--~----~------------~-------~--~----~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~----------~----~----~----~------~----~------~--~---