Re: Matrix Diagonalization
- From: Ron Shepard <ron-shepard@xxxxxxxxxxxxxxxxxx>
- Date: Sat, 14 Mar 2009 10:40:26 -0500
In article <8208a$49bb86df$d55d2be5$2068@xxxxxxxxxxxxxx>,
Jan Gerrit Kootstra <jan.gerrit@xxxxxxxxxxxxxxx> wrote:
[...]Lambda would equal one with multiplicity two. What makes it problematic?Also the simple case of all eigenvalues being equal is not at all simple.Not as not simple as:
Much better to try the case of all eigenvalues having differing values.
( 1 0 )
( 1 1 )
LAPACK and virtually everything else get that one wrong!
Run it, extracting all eigenvectors, and see :-)
The problem is that it has only one eigenvector. LAPACK will return
all eigenvalues and eigenvectors without comment, but one of the
latter is invalid (i.e. all zeroes). If you aren't expecting that,
your code can go bananas.
The all zeroes is not invalid, it is the 'generilized' eigenvector. So
it is not what one should expect from a classical point of view.
There is some confusion here. The original post was about finding
the eigenvectors and eigenvalues of a real symmetric matrix using
SUBROUTINE DSYEV in lapack. A real symmetric matrix of dimension N
always has N eigenvalues and N orthogonal eigenvectors, so the above
situations involving "deficient" eigenvectors does not occur.
The confusion, I think, is that the above matrix could be passed to
DSYEV without problem, but what happens depends on the second
positional argument to the subroutine. If that second argument is
UPLO="U", then the routine will ignore the lower triangle of the
input and diagonalize a unit matrix of dimension 2x2. The routine
would return two eigenvalues, both equal to one, and two orthogonal
eigenvectors. If that second argument is UPLO='L', then the routine
will ignore the upper triangle and diagonalize a 2x2 matrix with all
four elements equal to 1. The two eigenvalues will be 1 and 0, and
the two eigenvectors returned will be orthogonal.
So the above sentence, "LAPACK will return all eigenvalues and
eigenvectors without comment, but one of the latter is invalid (i.e.
all zeroes)," is correct when a general matrix diagonalization
routine is used in lapack, but it is not correct when SUBROUTINE
DSYEV is used in lapack. The discussion seemed to switch, without
comment, from symmetric matrices to general matrices, and I'm
certain that this is confusing to the original poster and others who
are interested in the answer to the original question about
incorrect eigenvectors.
$.02 -Ron Shepard
.
- Follow-Ups:
- Re: Matrix Diagonalization
- From: nmm1
- Re: Matrix Diagonalization
- References:
- Matrix Diagonalization
- From: Fatemeh
- Re: Matrix Diagonalization
- From: Gordon Sande
- Re: Matrix Diagonalization
- From: nmm1
- Re: Matrix Diagonalization
- From: Larry Gates
- Re: Matrix Diagonalization
- From: nmm1
- Re: Matrix Diagonalization
- From: Jan Gerrit Kootstra
- Matrix Diagonalization
- Prev by Date: Re: Hi
- Next by Date: Re: Matrix Diagonalization
- Previous by thread: Re: Matrix Diagonalization
- Next by thread: Re: Matrix Diagonalization
- Index(es):
Relevant Pages
|