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

Bases : BlueprintCircuit

Approche de Chebyshev par morceaux d'une fonction d'entrée.

Pour une fonction donnée f(x)f(x) et un degré dd, cette classe met en œuvre une approximation de Chebyshev polynomiale par morceaux sur nn qubits à f(x)f(x) sur les intervalles donnés. Tous les polynômes de l'approximation sont de degré dd.

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')
Schéma de circuit produit par le code précédent.

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 x|x\rangle.

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
Cette page a-t-elle été utile ?
Signaler un bogue, une coquille ou proposer du contenu sur GitHub.