bug-gsl
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug-gsl] Re: [Help-gsl] error in Schur decomposition of a non-symmetric


From: Patrick Alken
Subject: [Bug-gsl] Re: [Help-gsl] error in Schur decomposition of a non-symmetric matrix ?
Date: Tue, 23 Mar 2010 09:23:54 -0600
User-agent: Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.9.1.8) Gecko/20100227 Thunderbird/3.0.3

On 03/23/2010 02:50 AM, Francesco Abbate wrote:
2010/3/23 Patrick Alken<address@hidden>:
Yes, T is not strictly upper triangular, and the standard terminology seems
to be "quasi upper triangle" since complex eigenvalues will have a non-zero
subdiagonal element in T. So T is upper triangle with some possible non-zero
subdiagonal elements corresponding to complex eigenvalues.
I've made some tests and it seems that the function gsl_eigen_nonsymmv
set the whole matrix A to the Schur form T and not only the upper part.

I don't believe the lower elements of A are zero'd out and could contain
garbage values. I wouldn't rely on these values being 0, but you could call
gsl_linalg_hessenberg_set_zero to force them to be 0.
Hi Patrick,

thank you very much for your answer.

You are saying that the lower part of A is not set to 0 but so, what
about the subdiagonal ? I have to guess the exact meaning of what the
documentation is saying. Now it seems that "only some elements of the
subdiagonal are set, those that corresponds to 2x2 diagonal
submatrices corresponding to complex eigenvalues. The other elements
of the subdiagonal and lower part of A are not set". Is this correct ?
I believe that the documentation should be explicit enough so that
people should not guess the meaning of what is written.

For the other side I've made many empirical tests with my software,
"GSL Shell", and it all the cases I've tested I've found that the
whole matrix A is set to T, including the lower part.

Francesco

Perhaps a more clear explanation of the Schur form is this: if you take a given 2x2 block on the diagonal of the matrix, call it

[ T11 T12 ]
[ T21 T22 ]

then either T21 = 0, or T21 is nonzero.

If T21 is zero, then T11 and T22 are both real eigenvalues of the original matrix.

If T21 is nonzero, then T11 = T22, and T11 +/- sqrt(|T21*T12|) are complex conjugate eigenvalues.

So, the subdiagonal element (T21) is guaranteed to be 0 in the case of real eigenvalues, and nonzero in the case of complex eigenvalues. I will try to update the documentation to make this a little more clear.

The rest of A (below the subdiagonal) is not guaranteed to be 0, as far as I remember.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]