PiecewiseChebyshev
class qiskit.circuit.library.PiecewiseChebyshev(f_x, degree=None, breakpoints=None, num_state_qubits=None, name='pw_cheb')
Basi: BlueprintCircuit
Approssimazione di Chebyshev a pezzetti di una funzione di ingresso.
Per una data funzione e grado , questa classe implementa un'approssimazione polinomiale piecewise Chebyshev su qubit a sugli intervalli dati. Tutti i polinomi dell'approssimazione sono di grado .
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')
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 .
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