Skip to main content
IBM Quantum Platform

PiecewiseChebyshev

class qiskit.circuit.library.PiecewiseChebyshev(f_x, degree=None, breakpoints=None, num_state_qubits=None, name='pw_cheb')

GitHub

Basi: BlueprintCircuit

Approssimazione di Chebyshev a pezzetti di una funzione di ingresso.

Per una data funzione f(x)f(x) e grado dd, questa classe implementa un'approssimazione polinomiale piecewise Chebyshev su nn qubit a f(x)f(x) sugli intervalli dati. Tutti i polinomi dell'approssimazione sono di grado dd.

I valori dei parametri sono calcolati in base a [1] e si veda [2] per una spiegazione più dettagliata della costruzione del circuito e di come agisce sui qubit.

Esempi:

import numpy as np
from qiskit import QuantumCircuit
from qiskit.circuit.library.arithmetic.piecewise_chebyshev import PiecewiseChebyshev
f_x, degree, breakpoints, num_state_qubits = lambda x: np.arcsin(1 / x), 2, [2, 4], 2
pw_approximation = PiecewiseChebyshev(f_x, degree, breakpoints, num_state_qubits)
pw_approximation._build()
qc = QuantumCircuit(pw_approximation.num_qubits)
qc.h(list(range(num_state_qubits)))
qc.append(pw_approximation.to_instruction(), qc.qubits)
qc.draw(output='mpl')
Schema del circuito prodotto dal codice precedente.

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, H. 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

Parametri

  • f_x (float | Callable[[int], float]) – la funzione da approssimare. Le funzioni costanti devono essere specificate come f_x = constant.
  • degree (int | None) – il grado dei polinomi. L'impostazione predefinita è 1.
  • breakpoints (list[int] | None) – i punti di interruzione per definire la funzione lineare a pezzi. L'impostazione predefinita è l'intervallo completo.
  • num_state_qubits (int | None) – numero di qubit che rappresentano lo stato.
  • name (str) – Il nome dell'oggetto circuito.

Attributi

breakpoints

I punti di interruzione per l'approssimazione a pezzetti.

Risultati

I punti di interruzione per l'approssimazione a pezzetti.

degree

Il grado dei polinomi.

Risultati

Il grado dei polinomi.

f_x

La funzione da approssimare.

Risultati

La funzione da approssimare.

num_state_qubits

Il numero di qubit di stato che rappresentano lo stato x|x\rangle.

Risultati

Il numero di qubit di stato.

polynomials

I polinomi per l'approssimazione a tratti.

Risultati

I polinomi per l'approssimazione a tratti.

Aumenti

TypeError - Se la funzione di input non è nel formato corretto.

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
Questa pagina è stata utile?
Segnala un bug, un errore di battitura o richiedi contenuti su GitHub.