How to obtain the actual time evolution operators using QuTiP solvers?

866 views
Skip to first unread message

ahmad.j...@gmail.com

unread,
Nov 27, 2018, 6:12:04 AM11/27/18
to QuTiP: Quantum Toolbox in Python
Given a Hamiltonian, we can calculate the unitary (non-dissipative) time-evolution of an arbitrary state vector |ψ0(psi0) using the QuTiP function qutip.mesolve. It evolves the state vector and evaluates the expectation values for a set of operators expt_ops at the points in time in the list times, using an ordinary differential equation solver. 

Is there a way to retrieve this unitary time evolution operator that evolves the state vector?

Gary Steele

unread,
Nov 30, 2021, 4:03:45 AM11/30/21
to QuTiP: Quantum Toolbox in Python
I see for a long time no answer on this, and I think I have a related question:

Is it possible to calculate the expectation value of a *time dependent* operator in qutip? 

Say I have the results of an `mesolve` calculation. And then I want to calculate the expectation value of a time dependent operator. Is that possible? 

(My specific application is for making a notebook illustrating for undergraduates the RWA approximation.)

In a similar vein: Is it possible to "apply" a time dependent operator to a state? This would also work for my specific application as then I could translate my RWA schroedinger states into lab frame schroedinger states and calculate the expectation value of a time-independent operator. 

Thanks!
Gary

Simon Cross

unread,
Nov 30, 2021, 7:30:01 AM11/30/21
to qu...@googlegroups.com
Hi Gary,

I think you have a few options.

1) Don't pass any e_ops to mesolve and just calculate what you need to
afterwards from result.states.
2) Pass functions f(t, state) to e_ops and let mesolve store their
results in result.expect.

The QobjEvo class allows one to construct time-dependent Qobj-like
objects in QuTiP --
https://qutip.org/docs/latest/apidoc/classes.html#qutip.QobjEvo -- and
these may be useful regardless of which option you choose. In
particular QobjEvo instances have a `.expect(t, state)` method.

Yours sincerely,
Simon Cross

j794...@uwaterloo.ca

unread,
Dec 8, 2021, 3:02:20 AM12/8/21
to QuTiP: Quantum Toolbox in Python
Hi all,

The simplest way to retrieve a time-evolution operator is using the 'propagator' function. This function will return you a time-evolution operator at some time t, given its Hamiltonian and t_list. 

The results calculated from mesolve/mcsolve is not completely equal to the results from U*psi0, but they are basically equal if you do not require 100% accuracy. Ignore those surplus decimals and their results are all good. 

BTW, a problem is that the propagator way is not so friendly to us when applied to mixed states. 

Arjit

unread,
Mar 25, 2022, 2:15:02 AM3/25/22
to QuTiP: Quantum Toolbox in Python
'm trying to plot the time evolution of two level atom by using mesolve but i was not able to get as I'm a beginner in the field , it would be very helpful if someone could help,
i have taken random density matrix with unit trace and trying to see its evolution with time , of all the 4 states of a two two level system ,
taking Hamiltonian as [sigmaz() * omega /2] , take omega =1 and  every other constant in the simplest way possible to get the plot of all four states evolving in time .
im basically trying to plot all the four ode's given in equation 98 with respect to time.
please help!!
Screenshot 2022-03-25 105639.jpg
Screenshot 2022-03-25 105548.jpg
Reply all
Reply to author
Forward
0 new messages