Taking the exponential of a super operator

216 views
Skip to first unread message

Gerardo Suarez

unread,
May 13, 2021, 4:27:51 AM5/13/21
to QuTiP: Quantum Toolbox in Python
I have an superoperator that's the generator of the dynamics of the system and would like to know how one takes the exponential of a given super operator let us say for example that I have the super operator

L= a . a.dag()

such that 

Lp= a p a.dag()

How do I find ?

exp(L) p

The question may indeed be a silly one but I've struggled to do this for a couple weeks now. I didn;'t find anything like that in the documentation. If you could give me an explanantion, recommend a source  or provide an example I would really appreciate it 

Also I do not need this to be done in QUTIP any other framework also works if you know is possible there

Jake Lishman

unread,
May 13, 2021, 4:37:44 AM5/13/21
to qu...@googlegroups.com
Hi Gerardo,

If you're using QuTiP's superoperator formalism, where L is a Qobj of
type 'super', you can call the L.expm() method to find the matrix
exponential. QuTiP doesn't have a built-in way to find only the
exponential action on a single state without calculating the full
exponential, but if this is really required for you for memory reasons,
you can use scipy's scipy.sparse.linalg.expm_multiply on the attribute
L.data (which is compatible with SciPy's sparse matrices).

Jake

Gerardo Suarez

unread,
May 13, 2021, 5:06:38 AM5/13/21
to QuTiP: Quantum Toolbox in Python
Thanks a lot! once I do that is the correct approach to vectorize the density operator that I wish to apply the super operator on and after I do get it back to an operator?

Jake Lishman

unread,
May 13, 2021, 5:12:19 AM5/13/21
to qu...@googlegroups.com
Yeah, exactly. The manual functions to do that are operator_to_vector
and vector_to_operator, or there's some little-used QuTiP functionality
where you can "call" a Qobj like a function, and it'll use the outer
Qobj to "act" on the inner state, which in this case does what you want.

In other words, you can do

# find superoperator action
superoperator = L.expm()
# act on a state rho, which will automatically vectorise-devectorise
evolved = superoperator(rho)

Jake

Gerardo Suarez

unread,
May 13, 2021, 5:22:23 AM5/13/21
to QuTiP: Quantum Toolbox in Python
Thanks a lot, this Incredibly useful!
Reply all
Reply to author
Forward
0 new messages