Page 1 of 1

unitary tranformation

PostPosted: Wed Aug 13, 2008 1:50 pm
by nl2219
Hi all,

I wonder whether there is a routine in LAPACK to perform unitary transformation on a complex Hermitian matrix A so that Q**H * A * Q = T, where T is diagonal.

I only found zhetrd_ in LAPACK which did similar job except for that T there is real symmetric tridiagonal form, not diagonal.

Then how can I get a diagonal T by unitary similarity transformation please?

Please help me out. Thanks in advance.

Re: unitary tranformation

PostPosted: Wed Aug 13, 2008 3:30 pm
by Julien Langou
I wonder whether there is a routine in LAPACK to perform unitary transformation on a complex Hermitian matrix A so that Q**H * A * Q = T, where T is diagonal.


In other words, you want to perform the eigenvalue decomposition of A (A Hermitian) where T is the diagonal matrix with the eigenvalues of A along the diagonal and Q is a (unitary) basis of eigenvectors associated with. Yes, LAPACK can help you do this. You can use: ZHEEV, ZHEEVX, ZHEEVD or ZHEEVR for DOUBLE COMPLEX (CHEEV, CHEEVX, CHEEVD or CHEEVR for COMPLEX).

To know which one to use: (1) read the interface to see the functionality, (2) time all four on a small system and pick the one you want (in general ZHEEVR or ZHEEVD are the fast ones), (3) you can read

>> James W. Demmel, Osni A. Marques, Beresford N. Parlett, and Christof Vömel.
>> Performance and Accuracy of LAPACK's Symmetric Tridiagonal Eigensolvers.
>> SIAM Journal on Scientific Computing, volume 30, issue 3, pages 1508-1526, 2008.
>> Preliminary version: LAPACK Working Note 183: http://www.netlib.org/lapack/lawnspdf/lawn183.pdf


Julien.

Re: unitary tranformation

PostPosted: Wed Aug 13, 2008 3:32 pm
by sven
You want one of the routines, such as ZHEEV, in Table 2.5 of the LAPACK Users' Guide:

http://www.netlib.org/lapack/lug/node32.html#tabdriveseig

See also:

http://www.netlib.org/lapack/lug/node30.html

Sven Hammarling.

Re: unitary tranformation

PostPosted: Wed Aug 13, 2008 3:33 pm
by nl2219
Thanks for quick reply. I will try your suggestion.

Many thanks.