Perturbation Theory (qiskit_dynamics.perturbation)#

This module contains tools for numerically computing and utilizing perturbation theory terms. Perturbation theory is an advanced topic; a brief review of the concepts and notation required to understand the contents in this module are given in the Time-dependent perturbation theory and multi-variable series expansions review discussion.

Time-dependent perturbation theory#

The function solve_lmde_perturbation() computes Dyson series [1] and Magnus expansion [2][3] terms in a multi-variable setting via algorithms in [4]. It can also be used to compute Dyson-like integrals using the algorithm in [5]. Results are returned in either a PowerSeriesData or DysonLikeData class, which are data classes with functionality for indexing and accessing specific perturbation terms. See the function documentation for further details.

Truncated power-series representation and multisets#

The class ArrayPolynomial represents an array-valued multivariable polynomial (i.e. a truncated power series), and provides functionality for both evaluating and transforming array-valued polynomials.

This module makes use of the multiset package for indexing multi-variable power series. See the multiset and power series notation section of the perturbation review for an explanation of this convention.

Perturbation module functions#

solve_lmde_perturbation(perturbations, ...)

Compute time-dependent perturbation theory terms for an LMDE.

Perturbation module classes#

ArrayPolynomial([constant_term, ...])

A polynomial with array-valued coefficients.

PowerSeriesData(data, labels[, metadata])

Storage container for power series data.

DysonLikeData(data, labels[, metadata])

Storage container for DysonLike series data.

References