Dear all,

I want to calculate k smallest eigenvalues of a large sparse matrix (1e6*1e6), and the only solver I can find to finish this task is LOBPCG from MAGMA, which can solve the largest and smallest eigenvalues. However, I couldn't find some certain parameter to determine to solve whether largest or smallest k eigenvalues. Could you please tell me how to set parameters to calculate only k smallest eigenvalues of a large sparse matrix? I know that num_eigenvaluses in solver_par is the k number of EV for eigensovers, but I didn't find documation about sparse precond_par parameters. Is there some parameters that I didn't notice?

Best regards,

Shiyun

## calculate k smallest eigenvalues using LOBPCG

### Re: calculate k smallest eigenvalues using LOBPCG

According to viewtopic.php?f=2&t=1266&p=3677&hilit=l ... 483a#p3677 it calculates the smallest eigenvalues. The thread also explains how to trick it into computing the largest ones.

### Re: calculate k smallest eigenvalues using LOBPCG

If you are a scientist/engineer you probably have a large matrix from a real problem.

You probably want the largest and smallest eigenvalues to get a condition number and bound errors.

If this is the case, then ignore the mathematicians as much as you can.

Don't find ALL the eigenvalues. It is very expensive.

Don't use a symbolic package. It is even slower.

For the largest eigenvalue start with a random unit vector, v.

iterate on w = Av, v = w/|w| (so v is a unit vector)

|w| converges to the largest eigenvalue quickly.

For the smallest. Replace A with A_inverse.

Iterate on: solve Aw = v for w, v = w/|w|

Smallest converges quickly to 1/|w| .

You probably want the largest and smallest eigenvalues to get a condition number and bound errors.

If this is the case, then ignore the mathematicians as much as you can.

Don't find ALL the eigenvalues. It is very expensive.

Don't use a symbolic package. It is even slower.

For the largest eigenvalue start with a random unit vector, v.

iterate on w = Av, v = w/|w| (so v is a unit vector)

|w| converges to the largest eigenvalue quickly.

For the smallest. Replace A with A_inverse.

Iterate on: solve Aw = v for w, v = w/|w|

Smallest converges quickly to 1/|w| .

### Re: calculate k smallest eigenvalues using LOBPCG

Hello,

I have tried to calculate the smallest eigenvalues according to viewtopic.php?f=2&t=1266&p=3677&hilit=l ... 483a#p3677, but when I type ./testing_dsolver don't show anything... Do I have to type any other command before?

I have tried to calculate the smallest eigenvalues according to viewtopic.php?f=2&t=1266&p=3677&hilit=l ... 483a#p3677, but when I type ./testing_dsolver don't show anything... Do I have to type any other command before?