dq.solver.Expm
Expm()
Explicit matrix exponentiation to compute propagators.
Explicitly batch-compute the propagators for all time intervals in tsave
. These
propagators are then iteratively applied:
- starting from the initial state for
dq.sesolve()
anddq.mesolve()
, to compute states for all times intsave
, - starting from the identity matrix for
dq.sepropagator()
anddq.mepropagator()
, to compute propagators for all times intsave
.
For the Schrödinger equation with constant Hamiltonian \(H\), the propagator from time \(t_0\) to time \(t_1\) is an \(n\times n\) matrix given by $$ U(t_0, t_1) = \exp(-i (t_1 - t_0) H). $$
For the Lindblad master equation with constant Liouvillian \(\mathcal{L}\), the problem is vectorized and the propagator from time \(t_0\) to time \(t_1\) is an \(n^2\times n^2\) matrix given by $$ \mathcal{U}(t_0, t_1) = \exp((t_1 - t_0)\mathcal{L}). $$
Warning
If the Hamiltonian or jump operators are sparse qarrays, they will be silently converted to dense qarrays before computing their matrix exponentials.
Warning
This solver is not recommended for open systems of large dimension, due to the \(\mathcal{O}(n^6)\) scaling of computing the Liouvillian exponential.
Warning
This solver only supports constant or piecewise constant Hamiltonian and jump operators.
Supported gradients
This solver supports differentiation with
dq.gradient.Autograd
(default).