Next: Jacobi Transformations of a Up: Eigensystems Previous: Eigensystems

# Introduction

Our example diffusion code, based on Fourier's original paper and on the IBM example code, which we have discussed in P573, called two important subroutines from the PESSL library: the first one was the FFT subroutine, and we have dedicated the previous chapter, 2, to Fast Fourier Transform, the second one was the Eigenvalue problem routine.

At this stage you should review section The Eigenvalue Problem'' in P573 before proceeding.

The Eigenvalue problem, in short, is about finding a non-zero solution to the following equation:

 (3.1)

As I have already mentioned before, if A is a normal matrix, i.e., if

 (3.2)

then there exists a rotation such that

 (3.3)

If A is defective, i.e., if it is not normal, then there is still a linear transformation X such that

 (3.4)

but this transformation is no longer of .

But whichever is the case the columns of either or X are simply eigenvectors of A that correspond to appropriate s.

There are actually two types of eigenvectors, which are referred to as left and right eigenvectors. If you took to heart what I have told you about vectors and forms in the past, you will recognise now that right eigenvectors are vectors, and left eigenvectors are forms, and that an orthogonality relationship exists between the two:

This is the case even for the defective matrices, although for defective matrices it may happen that neither nor form an (orthogonal) basis.

The way most eigenproblem routines work is that matrix Ais nudged, usually iteratively, towards a diagonal form by a sequence of linear transformations:

Once the resulting matrix is diagonal, up to the required accuracy, eigenvectors are returned in

The solution of an eigenproblem may get quite complicated and costly. Public domain eigenproblem routines are available within LAPACK, e.g.,:

CGEEV
compute for an complex nonsymmetric matrix A the eigenvalues and, optionally, the left and/or right eigenvectors
CHBEV
compute all the eigenvalues and, optionally, eigenvectors of a complex Hermitian band matrix A
CPTEQR
compute all eigenvalues and, optionally, eigenvectors of a symmetric positive definite tridiagonal matrix
DGEEV
compute for an real nonsymmetric matrix A, the eigenvalues, and, optionally, the lef and/or right eigenvectors
DSBEV
compute all the eigenvalues and, optionally, eigenvectors of a real symmetric band matrix A
DSPEV
compute all the eigenvalues and, optionally, eigenvectors of a real symmetric matrix A in packed storage
DSYEV
compute all eigenvalues and, optionally, eigenvectors of a real symmetric tridiagonal matrix A
There are many, many more in there specialised for various combinations of symmetries and requirements.

Normally you would want such specialised routines to cover at least the following:

• real, symmetric, tridiagonal
• real, symmetric, banded
• real, symmetric
• real, nonsymmetric
• complex, Hermitian
• complex, non-Hermitian
The purpose of those specialisations is to save time and storage, an important considerations especially when the matrices grow very large.

Next: Jacobi Transformations of a Up: Eigensystems Previous: Eigensystems
Zdzislaw Meglicki
2001-02-26