81 lines
5.3 KiB
Plaintext
81 lines
5.3 KiB
Plaintext
---
|
||
title: LieTrotter (v1.2)
|
||
description: API reference for qiskit.synthesis.LieTrotter in qiskit v1.2
|
||
in_page_toc_min_heading_level: 1
|
||
python_api_type: class
|
||
python_api_name: qiskit.synthesis.LieTrotter
|
||
---
|
||
|
||
# LieTrotter
|
||
|
||
<Class id="qiskit.synthesis.LieTrotter" isDedicatedPage={true} github="https://github.com/Qiskit/qiskit/tree/stable/1.2/qiskit/synthesis/evolution/lie_trotter.py#L28-L143" signature="qiskit.synthesis.LieTrotter(reps=1, insert_barriers=False, cx_structure='chain', atomic_evolution=None, wrap=False)" modifiers="class">
|
||
Bases: [`ProductFormula`](qiskit.synthesis.ProductFormula "qiskit.synthesis.evolution.product_formula.ProductFormula")
|
||
|
||
The Lie-Trotter product formula.
|
||
|
||
The Lie-Trotter formula approximates the exponential of two non-commuting operators with products of their exponentials up to a second order error:
|
||
|
||
$$
|
||
e^{A + B} \approx e^{A}e^{B}.
|
||
$$
|
||
|
||
In this implementation, the operators are provided as sum terms of a Pauli operator. For example, we approximate
|
||
|
||
$$
|
||
e^{-it(XX + ZZ)} = e^{-it XX}e^{-it ZZ} + \mathcal{O}(t^2).
|
||
$$
|
||
|
||
**References**
|
||
|
||
\[1]: D. Berry, G. Ahokas, R. Cleve and B. Sanders, “Efficient quantum algorithms for simulating sparse Hamiltonians” (2006). [arXiv:quant-ph/0508139](https://arxiv.org/abs/quant-ph/0508139) \[2]: N. Hatano and M. Suzuki, “Finding Exponential Product Formulas of Higher Orders” (2005). [arXiv:math-ph/0506007](https://arxiv.org/pdf/math-ph/0506007.pdf)
|
||
|
||
<Admonition title="Deprecated since version 1.2_pending" type="danger">
|
||
The ‘Callable\[\[Pauli | SparsePauliOp, float], QuantumCircuit]’ signature of the ‘atomic\_evolution’ argument is pending deprecation as of qiskit 1.2. It will be marked deprecated in a future release, and then removed no earlier than 3 months after the release date. Instead you should update your ‘atomic\_evolution’ function to be of the following type: ‘Callable\[\[QuantumCircuit, Pauli | SparsePauliOp, float], None]’.
|
||
</Admonition>
|
||
|
||
**Parameters**
|
||
|
||
* **reps** ([*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.13)")) – The number of time steps.
|
||
* **insert\_barriers** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.13)")) – Whether to insert barriers between the atomic evolutions.
|
||
* **cx\_structure** ([*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.13)")) – How to arrange the CX gates for the Pauli evolutions, can be `"chain"`, where next neighbor connections are used, or `"fountain"`, where all qubits are connected to one. This only takes effect when `atomic_evolution is None`.
|
||
* **atomic\_evolution** (*Callable\[\[*[*Pauli*](qiskit.quantum_info.Pauli "qiskit.quantum_info.Pauli") *|*[*SparsePauliOp*](qiskit.quantum_info.SparsePauliOp "qiskit.quantum_info.SparsePauliOp")*,* [*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)")*],* [*QuantumCircuit*](qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit")*] | Callable\[\[*[*QuantumCircuit*](qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit")*,* [*Pauli*](qiskit.quantum_info.Pauli "qiskit.quantum_info.Pauli") *|*[*SparsePauliOp*](qiskit.quantum_info.SparsePauliOp "qiskit.quantum_info.SparsePauliOp")*,* [*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.13)")*], None] | None*) – A function to apply the evolution of a single [`Pauli`](qiskit.quantum_info.Pauli "qiskit.quantum_info.Pauli"), or [`SparsePauliOp`](qiskit.quantum_info.SparsePauliOp "qiskit.quantum_info.SparsePauliOp") of only commuting terms, to a circuit. The function takes in three arguments: the circuit to append the evolution to, the Pauli operator to evolve, and the evolution time. By default, a single Pauli evolution is decomposed into a chain of `CX` gates and a single `RZ` gate. Alternatively, the function can also take Pauli operator and evolution time as inputs and returns the circuit that will be appended to the overall circuit being built.
|
||
* **wrap** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.13)")) – Whether to wrap the atomic evolutions into custom gate objects. This only takes effect when `atomic_evolution is None`.
|
||
|
||
## Attributes
|
||
|
||
### settings
|
||
|
||
<Attribute id="qiskit.synthesis.LieTrotter.settings">
|
||
Return the settings in a dictionary, which can be used to reconstruct the object.
|
||
|
||
**Returns**
|
||
|
||
A dictionary containing the settings of this product formula.
|
||
|
||
**Raises**
|
||
|
||
[**NotImplementedError**](https://docs.python.org/3/library/exceptions.html#NotImplementedError "(in Python v3.13)") – If a custom atomic evolution is set, which cannot be serialized.
|
||
</Attribute>
|
||
|
||
## Methods
|
||
|
||
### synthesize
|
||
|
||
<Function id="qiskit.synthesis.LieTrotter.synthesize" github="https://github.com/Qiskit/qiskit/tree/stable/1.2/qiskit/synthesis/evolution/lie_trotter.py#L103-L121" signature="synthesize(evolution)">
|
||
Synthesize an `qiskit.circuit.library.PauliEvolutionGate`.
|
||
|
||
**Parameters**
|
||
|
||
**evolution** ([*PauliEvolutionGate*](qiskit.circuit.library.PauliEvolutionGate "qiskit.circuit.library.PauliEvolutionGate")) – The evolution gate to synthesize.
|
||
|
||
**Returns**
|
||
|
||
A circuit implementing the evolution.
|
||
|
||
**Return type**
|
||
|
||
[QuantumCircuit](qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit")
|
||
</Function>
|
||
</Class>
|
||
|