steady_state
Graph.steady_state(hamiltonian, lindblad_terms, method='QR', *, name=None)
Find the steady state of a time-independent open quantum system.
The Hamiltonian and Lindblad operators that you provide have to give rise to a unique steady state.
Parameters
- hamiltonian (Tensor or spmatrix) – A 2D array of shape
(D, D)
representing the time-independent Hamiltonian of the system, Hs. - lindblad_terms (list [ tuple [ float , np.ndarray or Tensor or scipy.sparse.spmatrix ] ]) – A list of pairs, (γj,Lj), representing the positive decay rate γj and the Lindblad operator Lj for each coupling channel j. You must provide at least one Lindblad term.
- method (str , optional) – The method used to find the steady state. Must be one of “QR”, “EIGEN_SPARSE”, or “EIGEN_DENSE”. The “QR” method obtains the steady state through a QR decomposition and is suitable for small quantum systems with dense representation. The “EIGEN_SPARSE” and “EIGEN_DENSE” methods find the steady state as the eigenvector whose eigenvalue is closest to zero, using either a sparse or a dense representation of the generator. Defaults to “QR”.
- name (str or None , optional) – The name of the node.
Returns
The density matrix representing the steady state of the system.
Return type
WARNING
This function currently does not support calculating the gradient with respect to its inputs. Therefore, it cannot be used in a graph for a run_optimization or run_stochastic_optimization call, which will raise a RuntimeError. Please use gradient-free optimization if you want to perform an optimization task with this function. You can learn more about it in the How to optimize controls using gradient-free optimization user guide.
SEE ALSO
Graph.density_matrix_evolution_pwc
: State evolution of an open quantum system.
Graph.jump_trajectory_evolution_pwc
: Trajectory-based state evolution of an open quantum system.
Notes
Under the Markovian approximation, the dynamics of an open quantum system can be described by the GKS–Lindblad master equation 1 2,
dtdρs(t)=L(ρs(t)),where the Lindblad superoperator L is defined as
L(ρs(t))=−i[Hs(t),ρs(t)]+j∑γjD[Lj]ρs(t),where D is a superoperator describing the decoherent process in the system evolution and defined as
D[X]ρ:=XρX†−21(X†Xρ+ρX†X)for any system operator X.
This function computes the steady state of L by solving
dtdρs(t)=0.The function assumes that Hs is time independent and that the dynamics generated by L give rise to a unique steady state. That is, the generated quantum dynamical map has to be ergodic 3.
References
- [1] V. Gorini, A. Kossakowski, and E. C. G. Sudarshan, J. Math. Phys. 17, 821 (1976).
- [2] G. Lindblad, Commun. Math. Phys. 48, 119 (1976).
- [3] D. Burgarth, G. Chiribella, V. Giovannetti, P. Perinotti, and K. Yuasa, New J. Phys. 15 073045 (2013).
Examples
Compute the steady state of the single qubit open system dynamics according to the Hamiltonian H=ωσz and the single Lindblad operator L=σ−.
>>> omega = 0.8
>>> gamma = 0.5
>>> hamiltonian = omega * graph.pauli_matrix("Z")
>>> lindblad_terms = [(gamma, graph.pauli_matrix("M"))]
>>> graph.steady_state(hamiltonian, lindblad_terms, name="steady_state")
<Tensor: name="steady_state", operation_name="steady_state", shape=(2, 2)>
>>> result = bo.execute_graph(graph=graph, output_node_names="steady_state")
>>> result["output"]["steady_state"]["value"]
array([[1.+0.j 0.-0.j]
[0.-0.j 0.-0.j]])