I am writing some Java software which requires calculating eigenvalues and eigenvectors of positive definite symmetric sparse matrices. I don't need all of the eigenvalues, but I'm mostly interested in the small ones. The problem is:
1) For testing purposes, my code needs to run on a laptop (quad core, 4 gigs of RAM)
2) The test data involves big matrices - generally over 10000 by 10000
These two constraints mean that most of the usual Java matrix packages are inadequate for my current needs - I can't even store a dense 10000 by 10000 matrix in memory let alone compute with them.
So my question is: how do people work around memory constraints when doing matrix calculations? My matrices are generally pretty sparse - usually under 5% of the entries are nonzero. Are there algorithms which exploit this? Could I somehow store the matrix on my hard drive and only load pieces of it at a time to reduce the pressure on my RAM?