vkillion Posted February 21, 2012 Posted February 21, 2012 Hello, I have an interesting problem I need help with. I am trying to develop an optimization for a process that requires eigenvalue calculations on several (sometimes thousands) of matrices. These matrices have some special properties. 1. The matrices are Hamiltonian. 2. The matrices are symmetric about the main diagonal. 3. The matrices are mostly sparse. 4. All off-diagonal elements are either 0 or 0.05. 5. The 0.05 elements come in bands. 6. Between iterations, all off-diagonal elements stay the same. That is, only the diagonal changes between iterations. What I am wondering is, if I find the eigenvalues of the first matrix, can I use these results to calculate the others, knowing that only the diagonal has changed? Currently, I am just brute force calling an eigenvalue function on every single matrix, but that is very slow (especially because I eventually want to solve 7776x7776 matrices). I have attached an example of the matrices I am using. Elements are comma delimited and rows are new line delimited. Take a look and let me know what you think. Thank you, Vincent matrix1.txt
baxtrom Posted February 21, 2012 Posted February 21, 2012 Hi there, perhaps Gershgorin circle theorem could help you, especially if the diagonal entries of the matrix are dominant. I don't know if you are familiar with Gershgorin's theorem but it states that the eigenvalues of a matrix will be located within special circles in the complex plane. The location of the circles will be given by the diagonal elements, and the radius by the off-diagonal elements in the same row (sum of absolute values). In your case, if the off-diagonal entries are small then the eigenvalues should be close to the diagonal entries. That could provide you with an initial guess to use with some smart numeric method, i.e. perhaps some form of power method or similar. Good luck! PS. I hope my reply above does not infuriate anyone. Recent experience indicates it is easy to step on academic toes here on scienceforums. We'll see what happens. DS.
vkillion Posted April 12, 2012 Author Posted April 12, 2012 Thank you for your response. I apologize for not seeing this sooner. My spam filter ate the notification email of a post so I didn't think to check. Since I made that original post, I have done some more research on the topic and have a bit of different information that changes some of the aspects of the problem. I'll post my modified information below. Hello, I have a linear algebra problem that I need help with. Basically, I need to get the eigenvalues and eigenvectors of several (sometimes tens of thousands) very large matrices (6^n x 6^n, where n>= 3, to be specific). Currently, we are just using MATLAB's eig() function to get them. I am trying to find optimizations for the simulations to cut down on computing time. There are three matrices that we use. H_constant - generated before the loop. Real and symmetric about the diagonal. Does not change after initial calculation. H_location - generated during each iteration. Diagonal. H_final - the addition of H_constant and H_location. Therefore, it is also real and symmetric about the diagonal. It is H_final that we need the eigenvalues and eigenvectors of. My theory is that we calculate the eigenvalues and eigenvectors of H_constant (which won't change after the initial calculation) once. We use this result with the eigenvalues of H_location (the diagonal), to get the eigenvalues and eigenvectors of H_final1. This would reduce our computation from tens of thousands of eig() calls to 1 eig() call and tens of thousands of very simple operations. I don't remember enough of my linear algebra to prove such a theory. I hope I was able to explain the problem well enough. I hope someone is able to help me with this problem. Thank you, Vincent Let me know if this information helps.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now