"Gergö " <email@example.com> wrote in message news:firstname.lastname@example.org... > Hello, > > I am writing to you regarding two questions which arose when we were using > Matlab's "eigs" function. > > Question 1: How can it be achieved that "eigs" returns unnormalized > vektors? It normalize the vectors, at least when all eigenvalues are > computed.
In the situation where you ask for all or almost all the eigenvalues, EIGS calls EIG. If you ask for fewer eigenvalues, EIGS does not.
> Question 2: It seems that if "eigs" returns the k largest eigenvalues and > the corresponding vectors; and if we vary k: the sign of the eigenvectors > sometimes changes in dependency of k. Why is that the case?
If v is an eigenvector of A with eigenvalue d, we know that A*v = d*v. If c is a nonzero scalar, A*(c*v) = c*(A*v) = c*(d*v) = d*(c*v) so c*v is also an eigenvector of A with eigenvalue d. Let c = -1.
Calling EIGS multiple times, if you don't specify opts.v0, uses a random v0. That random v0 plus a change to the value of k may affect the signs of the eigenvectors or the values in the eigenvectors slightly due to taking a different path through the code; as long as A*V is "close to" V*D then the results are a valid set of eigenvalues and eigenvectors.