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) |
| (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 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:
The way most eigenproblem routines work is that matrix
Ais nudged, usually iteratively, towards a diagonal form
by a sequence of linear transformations:
The solution of an eigenproblem may get quite complicated and costly. Public domain eigenproblem routines are available within LAPACK, e.g.,:
Normally you would want such specialised routines to cover at least the following: