Re: Sorting eigenvectors by eigenvalue
- To: mathgroup at smc.vnet.net
- Subject: [mg2070] Re: [mg2054] Sorting eigenvectors by eigenvalue
- From: Peder Thusgaard Ruhoff <ptk at imada.ou.dk>
- Date: Sat, 23 Sep 1995 20:35:35 -0400
On Mon, 18 Sep 1995, William F. Campbell <valentin at wam.umd.edu> wrote: > I'm trying to use Sort to sort eigenvectors by eigenvalue. The eignevectors > are in a list of lists called vecs, and the eigenvalues in vals after the > following function call on matrix aa: > > {vals,vecs}=Eigensystem[aa] > > Then I want to define an ordering function p so I can use Sort[vecs,p]. > I tried the following: > > p[vecs[[i_]],vecs[[j_]]]:=Greater[Abs[vals[[i]],Abs[vals[[j]]]] > > Mathematica wont parse vecs[[i_]] saying that i is neither an integer nor > a list of integers. How can I accomplish what I want to do? > ... > Dear Bill Campbell, I don't know if this is what you need, but here is a function that sorts the eigenvalues and eigenvectors using Sort. SortEigensystem[eigsys_] := Transpose[Sort[Transpose[eigsys]]] SortEigensystem[eigsys_, p_] := Transpose[Sort[Transpose[eigsys], p]] Note that you can specify you own ordering function (the second argument) which is passed directly to Sort. EXAMPLE: ======== In[1]:= SortEigensystem[eigsys_] := Transpose[Sort[Transpose[eigsys]]] In[2]:= SortEigensystem[eigsys_, p_] := Transpose[Sort[Transpose[eigsys], p]] In[3]:= mat = N[{{1,2,0},{2,3,4},{0,4,5}}] Out[3]= {{1., 2., 0}, {2., 3., 4.}, {0, 4., 5.}} In[4]:= MatrixForm[%] Out[4]//MatrixForm= 1. 2. 0 2. 3. 4. 0 4. 5. In[5]:= eigsys = Eigensystem[mat] Out[5]= {{8.33816, 1.95205, -1.29021}, > {{0.172027, 0.631179, 0.75632}, {0.786436, 0.374362, -0.491296}, > {0.593233, -0.679313, 0.431981}}} In[6]:= SortEigensystem[eigsys] Out[6]= {{-1.29021, 1.95205, 8.33816}, > {{0.593233, -0.679313, 0.431981}, {0.786436, 0.374362, -0.491296}, > {0.172027, 0.631179, 0.75632}}} In[7]:= SortEigensystem[eigsys, N[#1 > #2]&] Out[7]= {{8.33816, 1.95205, -1.29021}, > {{0.172027, 0.631179, 0.75632}, {0.786436, 0.374362, -0.491296}, > {0.593233, -0.679313, 0.431981}}} =============================================================================== Best wishes, Peder ------------------------------------------------------------------------------ Peder Thusgaard Ruhoff Phone: (+45) 66 15 86 96, ext. 2411 Dept. of Mathematics and Computer Science Fax: (+45) 65 93 26 91 Odense University, Campusvej 55 Email: ptk at imada.ou.dk DK-5230 Odense M, DENMARK "It is important for him who wants to discover not to confine himself to one chapter of science, but to keep in touch with various others." - Jacques Hadamard ------------------------------------------------------------------------------