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