TimeEvolution¶
- class TimeEvolution(hamiltonian, trotterization_strategy=None, time=1.0, n_steps=1, order=1, initial_state=None, observable=None, _template_meta=None, _template_param=None, **kwargs)[source]¶
Bases:
ObservableMeasuringMixin,QuantumProgramQuantum program for Hamiltonian time evolution.
Simulates the evolution of a quantum state under a Hamiltonian using Trotter-Suzuki decomposition. Uses Divi’s TrotterizationStrategy (
ExactTrotterization,QDrift) for term selection and approximation.Initialize TimeEvolution.
- Parameters:
hamiltonian (
SparsePauliOp) – Hamiltonian to evolve under. Accepts anythingto_spo()consumes (SparsePauliOp, PennyLane operator, or a divi-convention Pauli-string dict).trotterization_strategy (
TrotterizationStrategy|None) – Strategy for term selection (ExactTrotterization,QDrift). Defaults to ExactTrotterization().time (
float) – Evolution time t (e^(-iHt)).n_steps (
int) – Number of Trotter steps.order (
int) – Suzuki-Trotter order (1 or even).initial_state (
InitialState|None) – Initial state preparation. Pass anInitialStateinstance (e.g.ZerosState(),SuperpositionState()). Defaults toZerosState()if None.observable (
SparsePauliOp|Sequence[SparsePauliOp] |None) –One of:
None— measure computational-basis probabilities over all qubits.Single observable accepted by
to_spo()— one expectation-value measurement;self.resultsis afloat.Sequence of such observables — multiple expectation-value measurements from the same circuit;
self.resultsis alist[float](one mitigated value per observable). Commuting observables are measured from a shared shot batch viaMeasurementStage’s QWC grouping; QuEPP shares the target circuit and dedupes path DAGs across observables.
**kwargs – Passed to QuantumProgram (backend, seed, progress_queue, etc.). Accepts
qem_protocolfor quantum error mitigation (requiresobservableto be set, since QEM operates on expectation values).
Attributes Summary
Get the final results.
Methods Summary
expval()Return expectation-value-mode results.
Return True once the program has produced results.
Return probability-mode results.
run(**kwargs)Execute time evolution.
Attributes Documentation
- results¶
Get the final results.
Returns one of:
dict[str, float]— probability distribution when noobservablewas provided.float— expectation value for a singleobservable.list[float]— per-observable expectation values whenobservableis a list/tuple.
- Raises:
RuntimeError – If
.run()has not yet been called.
Methods Documentation
- expval()[source]¶
Return expectation-value-mode results.
Returns a
floatwhenobservablewas a single operator, or alist[float](one entry per observable, in input order) whenobservablewas a list/tuple.- Raises:
RuntimeError – If
.run()has not yet been called, or if this instance was constructed without anobservable(probability mode). Useprobabilities()instead.- Return type:
- probabilities()[source]¶
Return probability-mode results.
- Raises:
RuntimeError – If
.run()has not yet been called, or if this instance was constructed with anobservable(expectation value mode). Useexpval()instead.- Return type: