Eigenvalues and Eigenvectors

[ Generalised Symmetric Eigenproblem ] [ Eigenvalues and Eigenvectors ]


GENERALISED SYMMETRIC EIGENPROBLEM

In this page we demonstrate we employ ALADDIN's matrix functions to compute solutions to the generalised symmetric eigenvalue problem. More precisely, we seek solutions to the matrix equations:

    [ K ].[ phi ] = [ M ].[ phi ].[ lambda ]

    (nxn) . (nxp) = (nxn) . (nxp) . (pxp)     <=== matrix dimensions.
where
    [ K ]      = (nxn) positive definite symmetric matrix;
    [ M ]      = (nxn) positive definite symmetric matrix;
    [ phi ]    = (nxp) matrix containing 'p' eigenvectors;
    [ lambda ] = (pxp) diagonal matrix containing 'p' eigenvalues;

and p <= n . For structural dynamics applications, [K] and [M] correspond to the stiffness and mass matrices, respectively.

We will assume readers are familiar with:

A review of the theoretical concepts needed to solve linear matrix equations may be found in Bathe's Finite Element Text.


EIGENVALUES AND EIGENVECTORS

ALADDIN provides three functions for computing solutions to the generalised symmetric eigen problem:

    FUNCTION               PURPOSE
    ==================================================================

    Eigen( K, M, [p] )     Compute 'p' eigenvalues and eigenvectors.

                           The third argument is a (1x1) matrix cont-
                           aining the number of eigenvalues/vectors
                           to be computed (i.e. `p`).

                           The result is assigned to a ((n+1) x p)
                           matrix called [ eigen ].

    Eigenvalue( eigen )    Extract eigenvalues from array [ eigen ].

    Eigenvector( eigen )   Extract eigenvectors from array [ eigen ].

    ==================================================================

Example 1 : The script of code

    /* [a] : Setup (2x2) [K] matrix and [M] = [I] */ 

    K = [  2,  -2;
          -2,   4 ];

    M = [ 1,  0;
          0,  1 ];

    /* [b] : Compute eigenvalues and eigenvectors */ 

    eigen = Eigen ( K, M, [2]);
    eigenvalue  = Eigenvalue ( eigen );
    eigenvector = Eigenvector ( eigen );

    /* [c] : Print eigenvalues and eigenvectors */ 

    PrintMatrix( eigenvalue );
    PrintMatrix( eigenvector );

generates the output

    *** SUBSPACE ITERATION CONVERGED IN  2 ITERATIONS 

    MATRIX : "eigenvalue"

    row/col                  1   
           units                
       1            7.63932e-01
       2            5.23607e+00

   MATRIX : "eigenvector"

   row/col                  1            2   
           units                             
      1            1.00000e+00 -6.18034e-01
      2            6.18034e-01  1.00000e+00

In thie example we compute both eigenvalues and eigenvectors. Only 2 cycles of subspace iteration are needed to reach convergece.

Note : By writing down the characteristic equations for [K] it is and easy hand calculation to show that the eigenvalues are given by solutions to

    P (x) = (2 - x).(4 - x) - 4 = 0. ==> x_1 = 3 - sqrt(5) = 0.764.
                                         x_2 = 3 + sqrt(5) = 5.236.


Developed in April 1996 by Mark Austin
Last Modified June 22, 1996
Copyright © 1996, Mark Austin, Department of Civil Engineering, University of Maryland