0

I need to find the eigenvalues and eigenvectors of a rather large (typically ~ 1000x1000) NxN Hermitian matrix, where only the main diagonal, the first two nebendiagonals and the sqrt(N)'th diagonals are non-zero. So a total of 7 diagonals.

Are there efficient algorithms to do this or do I have to treat the matrix as a bandmatrix with bandwidth sqrt(n)? I am usually interested in the first N/2 eigenvalues and corresponding eigenvectors. I am currently coding in python, but any implementation would be helpful, really :)

Ritteraxt
  • 82
  • 8
  • Typically one would try [scipy.linalg](https://docs.scipy.org/doc/scipy/reference/linalg.html) first. If that does not work, Julias ["\"](https://docs.julialang.org/en/v1/stdlib/LinearAlgebra/#Base.:\\-Tuple{AbstractMatrix,%20AbstractVecOrMat}) operator is pretty powerful and open source. Their Forums are pretty good for mathematical questions, too. In any case, for further help, I'd encourage you to post a a [mcve]. – AlexNe Mar 08 '22 at 16:08
  • Please provide enough code so others can better understand or reproduce the problem. – AlexNe Mar 08 '22 at 16:10
  • Hey thank you :D Yeah, i am currently using scipy.linalg.eigh, but I was hoping to be able to use more specific algorithms for my problem. – Ritteraxt Mar 09 '22 at 14:12
  • If there's a standard algorithm for your problem, Julia's \ should detect it. Otherwise it might be worth looking into the Gauss-Seidel method. – AlexNe Mar 09 '22 at 19:38

0 Answers0