MathGroup Archive 2013

[Date Index] [Thread Index] [Author Index]

Search the Archive

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





  • Prev by Date: Re: NURBS Package Available
  • Next by Date: Through[Divide[f1, f2][x]]
  • Previous by thread: How eigenvectors are normalized
  • Next by thread: Re: How eigenvectors are normalized