For smallest real parts one could adapt ex34.c, but it is going to be costly https://slepc.upv.es/documentation/current/src/eps/tutorials/ex36.c.html Also, if eigenvalues are clustered around the origin, convergence may still be very slow. It is a tough problem, unless you are able to compute a good preconditioner of A (no need to compute the exact inverse). Jose
El 1 jul 2021, a las 13:23, Varun Hiremath <[email protected]> escribió:
I'm solving for the smallest eigenvalues in magnitude. Though is it cheaper to solve smallest in real part, as that might also work in my case? Thanks for your help.
On Thu, Jul 1, 2021, 4:08 AM Jose E. Roman <[email protected]> wrote: Smallest eigenvalue in magnitude or real part?
El 1 jul 2021, a las 11:58, Varun Hiremath <[email protected]> escribió:
Sorry, no both A and B are general sparse matrices (non-hermitian). So is there anything else I could try?
On Thu, Jul 1, 2021 at 2:43 AM Jose E. Roman <[email protected]> wrote: Is the problem symmetric (GHEP)? In that case, you can try LOBPCG on the pair (A,B). But this will likely be slow as well, unless you can provide a good preconditioner.
Jose
El 1 jul 2021, a las 11:37, Varun Hiremath <[email protected]> escribió:
Hi All,
I am trying to compute the smallest eigenvalues of a generalized system A*x= lambda*B*x. I don't explicitly know the matrix A (so I am using a shell matrix with a custom matmult function) however, the matrix B is explicitly known so I compute inv(B)*A within the shell matrix and solve inv(B)*A*x = lambda*x.
To compute the smallest eigenvalues it is recommended to solve the inverted system, but since matrix A is not explicitly known I can't invert the system. Moreover, the size of the system can be really big, and with the default Krylov solver, it is extremely slow. So is there a better way for me to compute the smallest eigenvalues of this system?
Thanks, Varun