# What's the optimal method to solve for the top eigenvectors of a very large, real, symmetric matrix of limited rank?

Consider a real symmetric matrix of dimension N~10^5 and rank m~2000. What is the most efficient algorithm for determining the top m eigenvectors? If the answer isn't obvious, are there existing routines for this in languages like MATLAB or Python?

• Take a look at "Efficient Algorithms for Large-scale Generalized Eigenvector Computation and Canonical Correlation Analysis" arxiv.org/abs/1604.03930 – Biswajit Banerjee Sep 12 '16 at 23:14
• That paper deals with generalized eigenvectors and CCA. I don't see a solution to this problem in there unless I'm missing something. – user149661 Sep 13 '16 at 4:13
• As a first though (didn't test it), I would go with QR decomposition with economy option both in matlab or scipy. Then work with the smaller square matrix. – percusse Sep 13 '16 at 9:19
• Is the matrix dense? – Wolfgang Bangerth Sep 13 '16 at 20:32
• @user149661 Are the inputs exact, or are there measurement errors that may spoil the low-rank property? – Federico Poloni Sep 14 '16 at 12:47