Skip to main content
IBM Quantum Platform

PiecewisePolynomialPauliRotations

class qiskit.circuit.library.PiecewisePolynomialPauliRotations(num_state_qubits=None, breakpoints=None, coeffs=None, basis='Y', name='pw_poly')

GitHub

Basi: FunctionalPauliRotations

Rotazioni di Pauli controllate in modo frammentario e polinomiale.

Questa classe implementa una funzione polinomiale piecewise (non necessariamente continua), f(x)f(x), sulle ampiezze dei qubit, definita attraverso punti di interruzione e coefficienti come segue. Supponiamo che i breakpoint (x0,...,xJ)(x_0, ..., x_J) siano un sottoinsieme di [0,2n1][0, 2^n-1], dove nn è il numero di qubit di stato. In seguito, denotiamo i coefficienti corrispondenti con [aj,1,...,aj,d][a_{j,1},...,a_{j,d}], dove dd è il grado più alto tra tutti i polinomi.

Allora f(x)f(x) è definito come:

f(x)={0,x<x0i=0i=daj,i/2xi,xjx<xj+1f(x) = \begin{cases} 0, x < x_0 \\ \sum_{i=0}^{i=d}a_{j,i}/2 x^i, x_j \leq x < x_{j+1} \end{cases}

dove se viene dato lo stesso numero di breakpoint dei polinomi, si assume implicitamente xJ+1=2nx_{J+1} = 2^n.

Nota

Si noti il fattore 1/21/2 nei coefficienti di f(x)f(x), che è coerente con le rotazioni di Pauli di Qiskit.

Esempi

>>> 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
          └──────────┘

Riferimenti:

[1] Haener, T., Roetteler, M., e Svore, K. M. (2018). Ottimizzazione dei circuiti quantistici per l'aritmetica. arXiv:1805.12445

[2] Carrera Vazquez, A., Hiptmair, R. e Woerner, S. (2022). Miglioramento dell'algoritmo dei sistemi lineari quantistici mediante l'estrapolazione di Richardson. ACM Transactions on Quantum Computing 3, 1, Articolo 2

Deprecato dalla versione 2.2

La classe qiskit.circuit.library.arithmetic.piecewise_polynomial_pauli_rotations.PiecewisePolynomialPauliRotations è deprecata a partire da Qiskit 2.2. Verrà rimosso in Qiskit 3.0. Utilizzare invece la classe PiecewisePolynomialPauliRotationsGate.

Parametri

  • num_state_qubits (int | None) – Il numero di qubit che rappresentano lo stato.
  • breakpoints (list[int] | None) – I punti di discontinuità per definire la funzione a tratti lineare. Il valore predefinito è [0].
  • coeffs (list[list[float]] | None) – I coefficienti dei polinomi relativi ai diversi segmenti della funzione a tratti lineare. coeffs[j][i] è il coefficiente della i-esima potenza di x per il j-esimo polinomio. L'impostazione predefinita è lineare: [[1]].
  • basis (str) – Il tipo di rotazione Pauli ('X', 'Y', 'Z').
  • name (str) – Il nome del circuito.

Attributi

breakpoints

I punti di discontinuità della funzione polinomiale a tratti.

La funzione è polinomiale negli intervalli [point_i, point_{i+1}] dove l'ultimo punto è implicitamente 2**(num_state_qubits + 1).

Risultati

L'elenco dei punti di interruzione.

coeffs

I coefficienti dei polinomi.

Risultati

I coefficienti polinomiali per intervallo come liste annidate.

contains_zero_breakpoint

Se 0 è il primo punto di interruzione.

Risultati

Vero, se 0 è il primo punto di interruzione, altrimenti Falso.

mapped_coeffs

I coefficienti mappati nella rappresentazione interna, poiché confrontiamo solo x>=breakpoint.

Risultati

I coefficienti mappati.

name

Tipo: str

Un nome leggibile per il circuito.

Esempio

from qiskit import QuantumCircuit

qc = QuantumCircuit(2, 2, name="my_circuit")
print(qc.name)
my_circuit

Metodi

evaluate

evaluate(x)

GitHub

Valutare in modo classico la rotazione polinomiale a tratti.

Parametri

x (float) – Valore da valutare.

Risultati

Valore di una funzione polinomiale a tratti su x.

Tipo di restituzione

mobile

Questa pagina è stata utile?
Segnala un bug, un errore di battitura o richiedi contenuti su GitHub.