Skip to content

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:

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).