alex wrote: > i have trouble in collecting the eigenvectors to form an eigenvector > matrix (in the order given by the eigenvalue computation...). > > How can i do this ? > > I have tried all matrix commands. >
For a "normal" matrix (i.e., not symbolic), you'll probably want to use the .eigenmatrix_right() method. For a symbolic matrix (until we fix it to be consistent), you can generate the eigenvectors as below and just do something like: matrix(M._maxima_().eigenvectors().sage()[1:]).transpose() This gets all of the eigenvectors, puts them as rows in a matrix, then transposes the matrix so that they are actually columns. Jason > THX. > > On Mar 4, 6:22 pm, Jason Grout <jason-s...@creativetrax.com> wrote: >> Alexander Hupfer wrote: >>> thank you for your quick reply. >>> Just for sake of documentation: >>> the output reads as [[[eigenvalue1, eigenvalue2],[multiplicity of >>> EVal1, multiplicity of EVal2]], Eigenvect of EVal1,..., Eigenvect >>> EVal1, Eigenvect of EVal2,..., Eigenvect of EVal2] >> Interestingly, there doesn't seem to be an easy way to tell (from the >> output) which eigenvector goes with which eigenvalue in the following >> examples: >> >> sage: M = matrix(SR,4,4, [[0,1,0,0],[0,0,0,0],[0,0,2,0],[0,0,0,2]]); M >> >> [0 1 0 0] >> [0 0 0 0] >> [0 0 2 0] >> [0 0 0 2] >> sage: M._maxima_().eigenvectors().sage() >> [[[0, 2], [2, 2]], [1, 0, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]] >> sage: M = matrix(SR,4,4, [[0,0,0,0],[0,0,0,0],[0,0,2,1],[0,0,0,2]]); M >> >> [0 0 0 0] >> [0 0 0 0] >> [0 0 2 1] >> [0 0 0 2] >> sage: M._maxima_().eigenvectors().sage() >> [[[0, 2], [2, 2]], [1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0]] >> >> I believe MMA helps you by making sure that the list ofeigenvectorsis >> exactly as long as the sum of the multiplicities by inserting zero >> vectors where needed (in other words, you can just count multiplicities >> to get a generating set for the eigenspace). The Sage >> eigenvectors_right command avoids the problem by returning a set >> ofeigenvectorsassociated with each eigenvalue. >> >> Thanks, >> >> Jason >> >> >> >>> On 4 Mrz., 12:44, Jason Grout <jason-s...@creativetrax.com> wrote: >>>> sonium wrote: >>>>> Hi, I have problems calculating theeigenvectorsof asymbolicmatrix. >>>>> I tried: >>>>> a,b = var('a'),var('b') >>>>> M = matrix(SR,4,4,((a, 0, 0, 0), (0,-a,0,0), (0,0,a,0), (0,0,0,-a))) >>>>> M.eigenvectors_right() >>>>> what results in: >>>>> AttributeError: 'SymbolicArithmetic' object has no attribute 'degree' >>>> This comes from us not having a special implementation of the eigen >>>> functions forsymbolicmatrices (i.e., using maxima). For now, you can do: >>>> sage: a,b = var('a'),var('b') >>>> sage: M = matrix(SR,4,4,((a, 0, 0, 0), (0,-a,0,0), (0,0,a,0), (0,0,0,-a))) >>>> sage: M._maxima_().eigenvectors().sage() >>>> [[[-a, a], [2, 2]], [0, 1, 0, 0], [0, 0, 0, 1], [1, 0, 0, 0], [0, 0, 1, 0]] >>>> Seehttp://maxima.sourceforge.net/docs/manual/en/maxima_25.html#Item_003a... >>>> to understand the output of the command. >>>> The specific error you received came from there not being a .degree() >>>> method for asymbolicpolynomial. >>>>> and >>>>> P.<a,b> = PolynomialRing(QQ) >>>>> M = matrix(P,4,4,((a, 0, 0, 0), (0,-a,0,0), (0,0,a,0), (0,0,0,-a))) >>>>> M.eigenvectros_right() >>>>> what gives: >>>>> Traceback (most recent call last): >>>>> File "<stdin>", line 1, in <module> >>>>> File "/home/sage/sagenb/sage_notebook/worksheets/sonium/1/code/ >>>>> 26.py", line 6, in <module> >>>>> M.eigenvectors_right() >>>>> File "/home/sage/sage_install/sage-a/local/lib/python2.5/site- >>>>> packages/SQLAlchemy-0.4.6-py2.5.egg/", line 1, in <module> >>>>> File "matrix2.pyx", line 3054, in >>>>> sage.matrix.matrix2.Matrix.eigenvectors_right (sage/matrix/matrix2.c: >>>>> 18020) >>>>> File "matrix2.pyx", line 3000, in >>>>> sage.matrix.matrix2.Matrix.eigenvectors_left (sage/matrix/matrix2.c: >>>>> 17523) >>>>> File "matrix2.pyx", line 2755, in >>>>> sage.matrix.matrix2.Matrix.eigenspaces_left (sage/matrix/matrix2.c: >>>>> 16250) >>>>> File "matrix2.pyx", line 1058, in sage.matrix.matrix2.Matrix.fcp >>>>> (sage/matrix/matrix2.c:7456) >>>>> File "polynomial_element.pyx", line 2288, in >>>>> sage.rings.polynomial.polynomial_element.Polynomial.factor (sage/rings/ >>>>> polynomial/polynomial_element.c:18681) >>>>> NotImplementedError >>>> I'm not sure what is going on here... >>>> Thanks, >>>> Jason > > > --~--~---------~--~----~------------~-------~--~----~ To post to this group, send email to sage-support@googlegroups.com To unsubscribe from this group, send email to sage-support-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-support URLs: http://www.sagemath.org -~----------~----~----~----~------~----~------~--~---