LinearAmplitudeFunction
class qiskit.circuit.library.LinearAmplitudeFunction(num_state_qubits, slope, offset, domain, image, rescaling_factor=1, breakpoints=None, name='F')
Bases : QuantumCircuit
Un circuit mettant en œuvre une fonction linéaire (par morceaux) sur les amplitudes des qubits.
Une fonction d'amplitude d'une fonction est une correspondance
pour une fonction , où est un état de qubit .
Ce circuit met en œuvre pour les fonctions linéaires par morceaux . Dans ce cas, la correspondance peut être approximativement mise en œuvre à l'aide d'une expansion de Taylor et de rotations de Pauli-Y contrôlées linéairement, voir [1, 2] pour plus de détails. Cette approximation utilise un site rescaling_factor pour déterminer la précision de l'expansion de Taylor.
En général, la fonction d'intérêt est définie à partir d'un certain intervalle , de domain à , de image, au lieu de à . En utilisant une transformation affine, nous pouvons redéfinir l'échelle de à :
par
Si est une fonction linéaire par morceaux sur les intervalles avec des pentes et des décalages , elle peut être écrite comme suit
où est une fonction indicatrice qui prend la valeur 1 si l'argument appartient à l'intervalle et 0 dans le cas contraire. Les points d'arrêt peuvent être spécifiés à l'aide de breakpoints l'argument.
Références :
[1] Woerner, S., et Egger, D. J. (2018). Analyse des risques quantiques. arXiv:1806.06893
[2] Gacon, J., Zoufal, C., & Woerner, S. (2020). Optimisation basée sur la simulation et améliorée par la physique quantique. arXiv:2005.10780
La classe qiskit.circuit.library.arithmetic.linear_amplitude_function.LinearAmplitudeFunction est obsolète depuis Qiskit 2.2. Elle sera supprimée à Qiskit 3.0. Utilisez plutôt la classe qiskit.circuit.library.LinearAmplitudeFunctionGate.
Paramètres
- num_state_qubits (int) – Le nombre de qubits utilisés pour coder la variable .
- slope (float |list[float]) – La pente de la fonction linéaire. Peut être une liste de pentes s'il s'agit d'une fonction linéaire par morceaux.
- offset (float |list[float]) – Le décalage de la fonction linéaire. Peut être une liste de décalages s'il s'agit d'une fonction linéaire par morceaux.
- domain (tuple[float, float]) – Le domaine de la fonction en tant que tuple .
- image (tuple[float, float]) – L'image de la fonction en tant que tuple .
- rescaling_factor (float) – Le facteur de remise à l'échelle pour ajuster la précision de l'approximation de Taylor.
- breakpoints (list[float] | None) – Les points de rupture si la fonction est linéaire par morceaux. Si None, la fonction n'est pas parcellaire.
- name (str) – Nom du circuit.
Attributs
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_circuitMéthodes
post_processing
post_processing(scaled_value)
Cartographier la valeur de la fonction de l'approximation sur .
Paramètres
scaled_value (float) – Valeur d'une fonction issue de l'expansion de Taylor de .
Retours
Le site scaled_value a été remis dans le domaine de , en inversant d'abord la transformation utilisée pour l'approximation de Taylor, puis en remettant en correspondance le site avec le domaine d'origine.
Type de retour