Re: How eigenvectors are normalized
- To: mathgroup at smc.vnet.net
- Subject: [mg130912] Re: How eigenvectors are normalized
- From: "Nasser M. Abbasi" <nma at 12000.org>
- Date: Sat, 25 May 2013 05:37:59 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- Delivered-to: l-mathgroup@wolfram.com
- Delivered-to: mathgroup-outx@smc.vnet.net
- Delivered-to: mathgroup-newsendx@smc.vnet.net
- References: <knnbt5$qr6$1@smc.vnet.net>
- Reply-to: nma at 12000.org
On 5/24/2013 4:29 AM, Ben Blomberg wrote: > Dear Mathgroup, > > When I use the function "Eigenvectors" how are the eigenvectors normalized? > Is it Euclidean norm equal to 1, with the largest component has imaginary > part equal to zero? > > Thanks, > Ben > > In Mathematica, they are normalized so that Euclidean norm of each is 1 -------------------------- In[120]:= k = {{300, 100}, {100, 200}}; m = {{4, 1.}, {1, 3}}; {lam, phi} = Eigensystem[{k, m}]; phi = Transpose[phi]; Norm[phi[[;; , #]]] & /@ Range[2] Out[124]= {1., 1.} ------------------------ But it is more common, at least in engineering and modal analysis, is to "mass" normalize them. when the eigenvectors are mass normalized, then phi'*m*phi will give the identity matrix and phi'*k*phi will give a diagonal matrix with square of the eignevalues (lam here) on the diagonal. This is what that "other" software does by default: ---------------- EDU>> m=[4 1;1 3]; EDU>> k=[300 100;100 200]; EDU>> [phi,lam]=eig(k,m); EDU>> phi.'*m*phi 1.0000 0.0000 -0.0000 1.0000 EDU>> phi.'*k*phi 58.0179 -0.0000 0.0000 78.3458 EDU>> phi 0.3406 -0.3958 -0.5512 -0.2446 ------------------------- But it is easy to make the Mathematica eigenvectors be mass normalized. Simply find phi'*M*phi for each eigenvector and call this mu. Then divide each phi by mu. This gives you the "mass" normalized eigenvector. --------------------------- phi[[1 ;; All, #1]]/ Sqrt[phi[[1 ;; All, #1]].m.phi[[1 ;; All, #1]]] & /@ Range[2] Out[135]= {{-0.395843, -0.244644}, {0.34064, -0.551167}} In[139]:= phii.m.Transpose[phii] // Chop Out[139]= {{1., 0}, {0, 1.}} In[140]:= phii.k.Transpose[phii] // Chop Out[140]= {{78.3458, 0}, {0, 58.0179}} ------------------------- --Nasser