Finding few eigenvalues of the Liouvillian

218 views
Skip to first unread message

CLledo

unread,
Mar 13, 2018, 5:53:51 AM3/13/18
to QuTiP: Quantum Toolbox in Python
Hi everyone,

The eigenvalues of the Liouvillian (lindbladian) are complex with non-positive real part. I have a huge Liouvillian and I would like to find just a few eigenvalues with real part close to zero. Does anyone know if there is a more efficient way of doing this than using qutip.eigenenergies (which solve all the eigenvalues)?

I have tried scipy.sparse.linalg.eigs, but it gives the wrong answer with the mode 'LR' (largest real) and with 'SM' (smaller magnitude) I can certainly obtain the zero-eigenvalue but the other eigenvalues are not necessarily the ones with larger (less negative) real part.

Thank you for your help

Aleksandrina Kirkova

unread,
May 12, 2021, 6:15:58 AM5/12/21
to QuTiP: Quantum Toolbox in Python
Hello,

I've been facing a similar issue, and would be interested to hear if you have resolved this.
Thank you!

Jake Lishman

unread,
May 19, 2021, 11:07:12 AM5/19/21
to QuTiP: Quantum Toolbox in Python
Hi both,

Sorry for the delay.  Underneath, QuTiP just calls down to scipy.sparse.linalg.eigs(h), so you should get roughly the same results either way when using the defaults.  Qobj.eigenenergies also takes an "eigvals" keyword argument, which is an integer of how many eigenvalues should be returned, and a "sort" argument, which can be "high" or "low", which internally get mapped to the "LR"/"SR" (or "LA/SA" for Hermitian matrices) "which" parameters.

However, if you need much finer control, you're probably better calling scipy.sparse.linalg.eigs as you did.  The underlying sparse matrix algorithms are generally not so efficient when you're asking for small eigenvalues (that may be why you're finding the wrong values), but you can use some related properties to alleviate some of this - this is called "shift-invert", and it's governed by the "sigma" argument to eigs.  You might find better performance and accuracy if you set "sigma" to something close to 0, and then ask for the _largest_ eigenvalues instead.

Jake
Reply all
Reply to author
Forward
0 new messages