PiecewiseChebyshev
class qiskit.circuit.library.PiecewiseChebyshev(f_x, degree=None, breakpoints=None, num_state_qubits=None, name='pw_cheb')
Bases : BlueprintCircuit
Approche de Chebyshev par morceaux d'une fonction d'entrée.
Pour une fonction donnée et un degré , cette classe met en œuvre une approximation de Chebyshev polynomiale par morceaux sur qubits à sur les intervalles donnés. Tous les polynômes de l'approximation sont de degré .
Les valeurs des paramètres sont calculées selon [1] et voir [2] pour une explication plus détaillée de la construction du circuit et de son action sur les qubits.
Exemples :
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')
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, H. 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
Paramètres
- f_x (float | Callable[[int], float]) – la fonction à approximer. Les fonctions constantes doivent être spécifiées sous la forme
f_x = constant. - degree (int | None) – le degré des polynômes. Prend par défaut la valeur
1. - breakpoints (list[int] | None) – les points d'arrêt pour définir la fonction linéaire par morceaux. La valeur par défaut est l'intervalle complet.
- num_state_qubits (int | None) – nombre de qubits représentant l'état.
- name (str) – Le nom de l'objet circuit.
Attributs
breakpoints
Les points d'arrêt de l'approximation par morceaux.
Retours
Les points d'arrêt de l'approximation par morceaux.
degree
Le degré des polynômes.
Retours
Le degré des polynômes.
f_x
La fonction à approximer.
Retours
La fonction à approximer.
num_state_qubits
Le nombre de qubits d'état représentant l'état .
Retours
Le nombre de qubits d'état.
polynomials
Les polynômes pour l'approximation par morceaux.
Retours
Les polynômes pour l'approximation par morceaux.
Augmentations
TypeError - Si la fonction d'entrée n'est pas dans le bon format.
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