help-gsl
[Top][All Lists]

## Re: [Help-gsl] Eigenvalues and eigenvectors of arbitrary complex valued

 From: Patrick Alken Subject: Re: [Help-gsl] Eigenvalues and eigenvectors of arbitrary complex valued matrix Date: Fri, 14 Feb 2014 14:41:43 -0700 User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0

The gsl_eigen_genherm routines work on Hermitian matrices only (ie A = A^H). There is currently no support for complex non-symmetric eigensolvers in GSL. For this you will need to use the LAPACK library.

On 02/14/2014 10:31 AM, briccard wrote:

Hello,

I searched the documentation and the forum but I cannot understand which
method to use to determine eigenvalues/eigenvectors of an arbitrary
complex valued square matrix (except for a message stating that it was
not supported in 2007
http://lists.gnu.org/archive/html/help-gsl/2007-05/msg00014.html).

Looking at the section: "Complex Generalized Hermitian-Definite
Eigensystems"

it states that this method solves the problem: *A x = \lambda B x***

then I thought to set *A* as my matrix and *B* as the identity to revert
to *A x = \lambda x* . The problem is that the function:

int *gsl_eigen_genhermv* /(gsl_matrix_complex * A, gsl_matrix_complex *
B, gsl_vector * eval, gsl_matrix_complex * evec,
gsl_eigen_genhermv_workspace * w)

gives only real eigenvalues//, and then I got confused.

I don't understand some explanations of the documentation like:
"Similarly to the real case, this can be reduced to *C y = \lambda y*
where *C = L^{-1} A L^{-H}* is hermitian, and *y = L^H x*."

Is there any other function (I saw that sometimes complex functions are
not documented) to be used for this case?
If not, it doesn't look like I can use the ///*C = L^{-1} A L^{-H}* /and
//*/y = L^H x/* equations, identifying *C* as my original matrix, since
it is stated that *C* is hermitian (am I right) and I do not understand
what is the definition of the matrix *L* and the number *H*/.