PiecewisePolynomialPauliRotations
class qiskit.circuit.library.PiecewisePolynomialPauliRotations(num_state_qubits=None, breakpoints=None, coeffs=None, basis='Y', name='pw_poly')
Basen: FunctionalPauliRotations
Stückweise polynomial gesteuerte Pauli-Drehungen.
Diese Klasse implementiert eine stückweise polynomiale (nicht notwendigerweise kontinuierliche) Funktion, , auf Qubit-Amplituden, die durch Haltepunkte und Koeffizienten wie folgt definiert ist. Angenommen, die Haltepunkte sind eine Teilmenge von , wobei die Anzahl der Status-Qubits ist. Bezeichnen Sie die entsprechenden Koeffizienten mit , wobei der höchste Grad aller Polynome ist.
Dann ist definiert als:
wobei wir bei gleicher Anzahl von Haltepunkten wie bei Polynomen implizit von ausgehen.
Man beachte den Faktor in den Koeffizienten von . Dies steht im Einklang mit den Pauli-Drehungen von Qiskit.
Beispiele
>>> from qiskit import QuantumCircuit
>>> from qiskit.circuit.library.arithmetic.piecewise_polynomial_pauli_rotations import\
... PiecewisePolynomialPauliRotations
>>> qubits, breakpoints, coeffs = (2, [0, 2], [[0, -1.2],[-1, 1, 3]])
>>> poly_r = PiecewisePolynomialPauliRotations(num_state_qubits=qubits,
...breakpoints=breakpoints, coeffs=coeffs)
>>>
>>> qc = QuantumCircuit(poly_r.num_qubits)
>>> qc.h(list(range(qubits)));
>>> qc.append(poly_r.to_instruction(), list(range(qc.num_qubits)));
>>> qc.draw()
┌───┐┌──────────┐
q_0: ┤ H ├┤0 ├
├───┤│ │
q_1: ┤ H ├┤1 ├
└───┘│ │
q_2: ─────┤2 ├
│ pw_poly │
q_3: ─────┤3 ├
│ │
q_4: ─────┤4 ├
│ │
q_5: ─────┤5 ├
└──────────┘Quellenangaben:
[1] Haener, T., Roetteler, M., & Svore, K. M. (2018). Optimierung von Quantenschaltungen für arithmetische Operationen. arXiv:1805.12445
[2] Carrera Vazquez, A., Hiptmair, R., & Woerner, S. (2022). Verbesserung des Algorithmus für lineare Quantensysteme durch Richardson-Extrapolation. ACM Transactions on Quantum Computing 3, 1, Artikel 2
Die Klasse qiskit.circuit.library.arithmetic.piecewise_polynomial_pauli_rotations.PiecewisePolynomialPauliRotations ist ab Qiskit 2.2 veraltet. Sie wird in Qiskit 3.0 entfernt. Verwenden Sie stattdessen die Klasse PiecewisePolynomialPauliRotationsGate.
Parameter
- num_state_qubits (int | None) – Die Anzahl der Qubits, die den Zustand darstellen.
- breakpoints (list[int] | None) – Die Kontrollpunkte zur Definition der stückweise linearen Funktion. Der Standardwert ist
[0]. - coeffs (list[list[float]] | None) – Die Koeffizienten der Polynome für die verschiedenen Abschnitte der stückweise linearen Funktion.
coeffs[j][i]ist der Koeffizient der i-ten Potenz von x für das j-te Polynom. Standardmäßig linear:[[1]]. - basis (str) – Die Art der Pauli-Drehung (
'X','Y','Z'). - name (str) – Der Name des Stromkreises.
Attribute
breakpoints
Die Haltepunkte der stückweisen Polynomfunktion.
Die Funktion ist polynomial in den Intervallen [point_i, point_{i+1}] , wobei der letzte Punkt implizit 2**(num_state_qubits + 1) ist.
Rückgabe
Die Liste der Haltepunkte.
coeffs
Die Koeffizienten der Polynome.
Rückgabe
Die Polynomkoeffizienten pro Intervall als verschachtelte Listen.
contains_zero_breakpoint
Ob 0 der erste Haltepunkt ist.
Rückgabe
True, wenn 0 der erste Haltepunkt ist, sonst False.
mapped_coeffs
Die Koeffizienten werden auf die interne Darstellung abgebildet, da wir nur x>=Bruchpunkt vergleichen.
Rückgabe
Die zugeordneten Koeffizienten.
name
Typ: str
Ein von Menschen lesbarer Name für den Stromkreis.
Beispiel
from qiskit import QuantumCircuit
qc = QuantumCircuit(2, 2, name="my_circuit")
print(qc.name)my_circuit