how to make eigenvectors ( obtained from _geev ) orthorgonal?

how to make eigenvectors ( obtained from _geev ) orthorgonal?

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 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

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

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?

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

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...


Chi-Hung W. wrote:
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.

Leave a Comment

Please sign in to add a comment. Not a member? Join today