how to make eigenvectors ( obtained from _geev ) orthorgonal?

how to make eigenvectors ( obtained from _geev ) orthorgonal?

Bild des Benutzers Chi-Hung W.

I am looking for the eigenvectors & eigenvalues of a non-symmetric, complex-valued matrix. The matrix is a Hermitian matrix with some diagonal imaginary terms added, which is then non-hermitian. The obtained eigenvalues from the subroutine zgeev are precise, but, the eigenvectors are not, when I compare the results using zgeev with the results obtained from Mathematica. I think the problem is that it is not guaranteed that, the obtained eigenvectors from zgeev are orthorgonal, though, I have no idea why that the results obtained from Mathematica are perfect, ie. The eigenvectors are orthornomal and complete. Should I impose further procedure after using zgeev, to make sure the eigenvectors are orthonormal?

Thanks in advance for any reply&comments.


6 Beiträge / 0 neu
Letzter Beitrag
Nähere Informationen zur Compiler-Optimierung finden Sie in unserem Optimierungshinweis.
Bild des Benutzers mecej4

Please present details, preferably using a short example, to support your claim. 

Bild des Benutzers Chi-Hung W.

for more explicitly, I am doing this as a check, it is a 3X3 matrix. and there is a complex number only at matrix(1,1)

matrix = {{ -6.75490294261523187*(10^-4) + (i *(-10^-3)), 1,                                          1    },
              {                                                                1, 0,                                          1    },
              {                                                                1, 1,  6.75490294261523187*(10^-4)  }}

The matrix is non-symmetric. therefore I call zgeev for solving this. and it yields the following eigenvalues(here I output the real part of it only):

However, in mathematica, it is (real part of the eigenvalue)
I am wondering that maybe due to quasi-degeneracy, the eigenvalues are not precise enough (also the eigenvectors). Should I find ways to increase the precision or, try other subroutines for dealing degeneracy eigenvalues?

Bild des Benutzers mecej4

If you ran Mathematica on the 3 X 3 matrix that you gave above, you would not have obtained the eigenvalues as 2, -1 and -1. If the matrix that you gave Mathematica was the same matrix but with the diagonal elements replaced by zero, your comparison is not valid. Furthermore, your example does not agree with your original statement that "The obtained eigenvalues from the subroutine zgeev are precise".

Please make valid comparisons and report what you did accurately

Bild des Benutzers Chi-Hung W.

sorry for the wrong results...the real part of the eigenvalue was not what I had written here. I am new to mathematica.

I discovered that if I set
in mathematica, it would yield the same eigenvalues as what I have got using fortran+zgeev
though, if I set
    N[ Eigenvalues[mat] ]
in mathematica then it is somehow different. therefore the precision of the eigenvalues seems not converged when I use fortran..?

also the left/right eigenvectors are always not in accordance...

Bild des Benutzers mecej4


Chi-Hung W. schrieb:also the left/right eigenvectors are always not in accordance
Again, a simple statement such as that is not enough to go on. Note also that if v is an eigenvector, so is cv, where c is a complex constant different from zero. Different packages may use different conventions for choosing the constant.

Melden Sie sich an, um einen Kommentar zu hinterlassen.