Time-dependent perturbation theory and multi-variable series expansions review#
The perturbation
module contains functionality for
numerically computing perturbation theory expansions used in the study of the
dynamics of quantum systems. Following [1],
this discussion reviews key concepts required
to understand and utilize the module, including the Dyson series and Magnus expansion,
their generalization to a multi-variable setting, and the notation used to represent
multi-variable power series in terms of multisets.
The Dyson series and Magnus expansion#
The Dyson series [2] and Magnus expansion [3][4] are time-dependent perturbation theory expansions for solutions of linear matrix differential equations (LMDEs). For an LMDE
with
The Magnus expansion alternatively seeks to construct a time-averaged generator, i.e. an operator
The Magnus expansion provides
a series expansion, which, under certain conditions [4],
converges to
where explicit expressions for the
Generalizing to the multi-variable case#
In applications, these expansions are often used in a multi-variable setting, in which
the generator
Mathematically, we explicitly write the generator as a function of these variables
For physical applications we take the existence of such a power series for granted:
up to constant factors, the coefficients
Before defining the multi-variable Dyson series and Magnus expansions, we transform
the generator into the toggling frame of
the generator
Denoting
and hence solution for
Using this, [1] defines the multi-variable Dyson series
for the generator
where the
with the
Computing multi-variable Dyson series and Magnus expansion terms#
Given a power series decomposition of the generator as above,
the function solve_lmde_perturbation()
computes,
in the toggling frame of the unperturbed generator, either multi-variable
Dyson series or Magnus expansion terms via the algorithms in
[1]. It can also be used to compute Dyson-like terms via
the algorithm in [7]. In the presentation here and elsewhere,
the expansions are phrased as infinite series, but of course in practice truncated
versions must be specified and computed.
Utilizing this function, and working with the other objects in the module, requires understanding the notation and data structures used to represent power series.
Multiset power series notation#
Following [1], the perturbation
module utilizes a multiset notation to more compactly represent and work with power series.
Consider the power series expansion above for the generator
and similarly denote
where
Some example usages of this notation are:
,
, and
.
Finally, we denote the set of multisets of size
Similarly, the multi-variable Dyson series is written as:
and the multi-variable Magnus expansion as:
In the module, multisets are represented using the Multiset
object in the
multiset package. Arguments to functions
which must specify a multiset or a list of multisets accept either Multiset
instances
directly, or a valid argument to the constructor to Multiset
, with the restriction that
the multiset entries must be non-negative integers.
References