
From:  Håkan Johansson 
Subject:  Re: [Buggsl] sign convention for eigenvectors in gsl_eigen_hermv 
Date:  Tue, 18 Feb 2014 18:54:55 +0100 
Useragent:  Alpine 2.00 (DEB 1167 20080823) 
Perhaps also the answer dated 23 Apr, 2011 09:28:04 in the following http://www.mathworks.com/matlabcentral/newsreader/view_thread/306717discussion may help. Trying to implement any convention be forcing e.g. a certain sign of the first nonzero element is illdefined and therefore hazardous.
Cheers, Håkan On Tue, 18 Feb 2014, Patrick Alken wrote:
In case you didn't see my reply to your first message, it is pasted below:  There is no "sign convention" regarding eigenvectors, since if v is an eigenvector of a matrix, any scalar multiple of v is also an eigenvector. gsl_eigen_hermv guarantees that the eigenvectors are normalized to unit magnitude, but of course the negative of the computed vector is still a valid eigenvector with unit magnitude. I suspect you will find that any eigenvector software will exhibit the same behavior. There really is no way to determine a standard sign convention for eigenvectors.  Your vector v8 is a perfectly legitimate eigenvector of the matrix. Patrick On 02/18/2014 10:43 AM, Walter Hahn wrote:Dear all, a few weeks ago, I have sent you this bug report already without giving you enough information. Now, I would like to provide the missing information and correct some statements. After using the procedure gsl_eigen_hermv to diagonalize a matrix, I suspect that the sign convention for the eigenvectors should be reconsidered. More specifically, I diagonalize a matrix which has only a few nonzero entries, namely at m(2i,2i+1) and m(2i+1,2i) for all i. In my case, I diagonalize a 8x8 matrix with real entries, e.g. 1.0. The eigenvectors should be of the following form (not normalized): v1=(1,1,0,0,0....) v2=(1,1,0,0,0,...), other eigenvectors can be obtained by shifting the nonzero coefficients of v1 and v2 by two places to the right. However, diagonalizing the 8x8 matrix described above, I obtain the eigenvectors as described above except the last one which is v8=(0,0,0,0,0,0,1,1) instead of (0,0,0,0,0,0,1,1), i.e., multiplied with (1). Therefore, I think that the sign convention is either not implemented correctly or the convention used is not broad enough. Please find in the attachment to this email a simple compilable code which demonstrates this problem. I have checked the described results for GSL versions 1.15 and 1.16. Kind regards, Walter
[Prev in Thread]  Current Thread  [Next in Thread] 