Solvers (qiskit_dynamics.solvers)#

This module provides classes and functions for solving differential equations.

Table 1 summarizes the standard solver interfaces exposed in this module. It includes a high level class Solver for solving models of quantum systems, as well as low-level functions for solving both ordinary differential equations y˙(t)=f(t,y(t)) and linear matrix differential equations y˙(t)=G(t)y(t).

Additionally, this module contains more specialized solvers for linear matrix differential equations based on perturbative expansions, described below.

Table 1 Solver interfaces#

Object

Description

Solver

High level solver class for both Hamiltonian and Lindblad dynamics. Automatically constructs the relevant model type based on system details, and the solve() method automatically handles qiskit.quantum_info input types.

solve_ode()

Low level solver function for ordinary differential equations:

y˙(t)=f(t,y(t)),

for y(t) arrays of arbitrary shape and f specified as an arbitrary callable.

solve_lmde()

Low level solver function for linear matrix differential equations in standard form:

y˙(t)=G(t)y(t),

where G(t) is either a callable or a qiskit_dynamics model type, and y(t) arrays of suitable shape for the matrix multiplication above.

Perturbative Solvers#

The classes DysonSolver and MagnusSolver implement advanced solvers detailed in [1], with the DysonSolver implementing a variant of the Dysolve algorithm originally introduced in [2].

The solvers are specialized to linear matrix differential equations with G(t) decomposed as:

G(t)=G0+jRe[fj(t)ei2πνjt]Gj,

and are fixed step with a pre-defined step size Δt. The differential equation is solved by either computing a truncated Dyson series, or taking the exponential of a truncated Magnus expansion.

Add reference to both userguide and perturbation theory module documentation.

Solver classes#

Solver([static_hamiltonian, ...])

Solver class for simulating both Hamiltonian and Lindblad dynamics, with high level type-handling of input states.

DysonSolver(operators, rotating_frame, dt, ...)

Solver for linear matrix differential equations based on the Dyson series.

MagnusSolver(operators, rotating_frame, dt, ...)

Solver for linear matrix differential equations based on the Magnus expansion.

Solver functions#

solve_ode(rhs, t_span, y0[, method, t_eval])

General interface for solving Ordinary Differential Equations (ODEs).

solve_lmde(generator, t_span, y0[, method, ...])

General interface for solving Linear Matrix Differential Equations (LMDEs) in standard form.

References