PiecewisePolynomialPauliRotations
class qiskit.circuit.library.PiecewisePolynomialPauliRotations(num_state_qubits=None, breakpoints=None, coeffs=None, basis='Y', name='pw_poly')
Bases : FunctionalPauliRotations
Rotations de Pauli contrôlées par la polynomie.
Cette classe met en œuvre une fonction polynomiale par morceaux (pas nécessairement continue), , sur les amplitudes des qubits, qui est définie par des points de rupture et des coefficients comme suit. Supposons que les points d'arrêt soient un sous-ensemble de , où est le nombre de qubits d'état. Plus loin, nous désignons les coefficients correspondants par , où est le degré le plus élevé de tous les polynômes.
Le site est alors défini comme suit :
où si l'on donne le même nombre de points d'arrêt que les polynômes, nous supposons implicitement .
Notez le facteur dans les coefficients de , ce qui est cohérent avec les rotations de Pauli de Qiskit.
Exemples
>>> 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 ├
└──────────┘Références :
[1] Haener, T., Roetteler, M., et Svore, K. M. (2018). Optimisation des circuits quantiques pour l'arithmétique. arXiv:1805.12445
[2] Carrera Vazquez, A., Hiptmair, R. et Woerner, S. (2022). Amélioration de l'algorithme des systèmes linéaires quantiques à l'aide de l'extrapolation de Richardson. ACM Transactions on Quantum Computing 3, 1, Article 2
La classe qiskit.circuit.library.arithmetic.piecewise_polynomial_pauli_rotations.PiecewisePolynomialPauliRotations est obsolète depuis Qiskit 2.2. Elle sera supprimée à Qiskit 3.0. Utilisez plutôt la classe PiecewisePolynomialPauliRotationsGate.
Paramètres
- num_state_qubits (int | None) – Le nombre de qubits représentant l'état.
- breakpoints (list[int] | None) – Les points de coupure permettant de définir la fonction linéaire par morceaux. Prend par défaut la valeur
[0]. - coeffs (list[list[float]] | None) – Les coefficients des polynômes correspondant aux différents segments de la fonction linéaire par morceaux.
coeffs[j][i]est le coefficient du i-ième pouvoir de x pour le j-ième polynôme. La valeur par défaut est « linéaire » :[[1]]. - basis (str) – Le type de rotation de Pauli (
'X','Y','Z'). - name (str) – Le nom du circuit.
Attributs
breakpoints
Les points de rupture de la fonction polynomiale par morceaux.
La fonction est polynomiale dans les intervalles [point_i, point_{i+1}] où le dernier point est implicitement 2**(num_state_qubits + 1).
Retours
La liste des points d'arrêt.
coeffs
Les coefficients des polynômes.
Retours
Les coefficients polynomiaux par intervalle sous forme de listes imbriquées.
contains_zero_breakpoint
Si 0 est le premier point d'arrêt.
Retours
Vrai, si 0 est le premier point d'arrêt, sinon Faux.
mapped_coeffs
Les coefficients correspondent à la représentation interne, puisque nous ne comparons que x>=point de rupture.
Retours
Les coefficients cartographiés.
name
Type : str
Un nom lisible par l'homme pour le circuit.
Exemple
from qiskit import QuantumCircuit
qc = QuantumCircuit(2, 2, name="my_circuit")
print(qc.name)my_circuit