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