Evolution¶
- class Evolution(num_modes, operator, time=1.0)¶
Bases:
FermionicGateImplements the time evolution of an operator.
Given a fermionic
operator\(H\) and an evolutiontime\(t\), this gate implements the unitary\[U = e^{-i t H}.\]For \(U\) to be unitary, \(H\) must be Hermitian. This is the caller’s responsibility and is not verified.
Note
How this evolution is decomposed into a circuit is not fixed by this gate alone. The default
_define()implementation splits the evolution group-by-group when theoperatorhasgroupsassigned, and term-by-term otherwise, yielding a first-order product formula (which is exact only when the individual factors mutually commute). The transpilation process may further alter this decomposition (for example,QDriftTrotterizationreplaces it with a randomized product formula).Initializing an instance of this gate can be done with the arguments listed below.
- Parameters:
num_modes (int) – the number of fermionic modes on which this gate acts.
operator (OperatorTrait) – the Hermitian operator \(H\) under which to time evolve the acted-upon fermionic modes.
time (float) – the evolution time \(t\) entering the exponent of \(e^{-i t H}\). A negative value evolves backwards in time.
Attributes
- operator¶
The operator under which to time evolve the acted-upon fermionic modes.