- ARPACK-wrapped scipy.sparse.linalg.eigsh and scipy.sparse.linalg.eigs, and
- LOBPCG-based scipy.sparse.linalg.lobpcg.

First, the option

`largest=`

seems to work in the opposite way. If I set is as `largest=False`

, I actually get largest eigenvalues. To get smallest eigenvalues, I set it as `largest=True`

. Second, the function requires an initial approximation to the eigenvectors, which is not easy for new users. As someone pointed out, sometimes it takes "a very large number of iterations to get the correct eigenvalues."

Nevertheless, the solver is not too bad compared with ARPACK-wrapped

`eigsh`

(for real symmetric square matrix or complex hermitian matrixes) and `eigs`

(for non-symmetric square matrixes). For example, given two matrixes, I got the two eigenvalues for general eigenvalue problem:- by
`eigsh`

: [-1.0385276515935676e-16, 0.9194804029047039, 3.7579933101613547, 8.257545329015041, 10.44664798242384] - by
`lobpcg`

: [7.0329601669327232e-16, 0.91948040290470379, 3.7579933101613623, 8.2575453290150449, 10.446647982423839]

## 1 comment:

This is cool!

Post a Comment