General complex matrices aren't supported.  You get real eigenvalues since
Hermitian matrices have real eigenvalues.  You would need to use something
else like LAPACK to solve complex eigensystems that are non-hermitian.

Fred


On Fri, Feb 14, 2014 at 12:31 PM, briccard <
balzan.ricca...@parisdescartes.fr> 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*/.
>
> Thanks for any help you can give me,
>
> Riccardo Balzan
>

Reply via email to