LinearAmplitudeFunction
class qiskit.circuit.library.LinearAmplitudeFunction(num_state_qubits, slope, offset, domain, image, rescaling_factor=1, breakpoints=None, name='F')
Basi: QuantumCircuit
Un circuito che implementa una funzione lineare (piecewise) sulle ampiezze dei qubit.
Una funzione di ampiezza di una funzione è una mappatura
per una funzione , dove è uno stato di qubit .
Questo circuito implementa per funzioni lineari piecewise . In questo caso, la mappatura può essere implementata in modo approssimativo utilizzando un'espansione di Taylor e rotazioni di Pauli-Y controllate linearmente; per maggiori dettagli, si vedano i paragrafi [1, 2]. Questa approssimazione utilizza un rescaling_factor per determinare la precisione dell'espansione di Taylor.
In generale, la funzione di interesse è definita a partire da un intervallo , da domain a , da image, invece che da a . Utilizzando una trasformazione affine possiamo riscalare a :
con
Se è una funzione lineare continua su intervalli con pendenze e offset può essere scritta come
dove è una funzione indicatrice che assume il valore 1 se l'argomento appartiene all'intervallo e 0 in caso contrario. I punti di interruzione possono essere specificati tramite breakpoints l'argomento.
Riferimenti:
[1] Woerner, S., e Egger, D. J. (2018). Analisi dei rischi quantistici. arXiv:1806.06893
[2] Gacon, J., Zoufal, C., & Woerner, S. (2020). Ottimizzazione basata sulla simulazione potenziata dalla meccanica quantistica. arXiv:2005.10780
La classe qiskit.circuit.library.arithmetic.linear_amplitude_function.LinearAmplitudeFunction è deprecata a partire da Qiskit 2.2. Verrà rimosso in Qiskit 3.0. Utilizzare invece la classe qiskit.circuit.library.LinearAmplitudeFunctionGate.
Parametri
- num_state_qubits (int) – Il numero di qubit utilizzati per codificare la variabile .
- slope (float |list[float]) – La pendenza della funzione lineare. Può essere un elenco di pendenze se si tratta di una funzione lineare continua.
- offset (float |list[float]) – L'offset della funzione lineare. Può essere un elenco di offset se si tratta di una funzione lineare continua.
- domain (tuple[float, float]) – Il dominio della funzione come tupla .
- image (tuple[float, float]) – L'immagine della funzione come tupla .
- rescaling_factor (float) – Il fattore di ridimensionamento per regolare l'accuratezza dell'approssimazione di Taylor.
- breakpoints (list[float] | None) – I punti di interruzione se la funzione è lineare a tratti. Se Nessuno, la funzione non è omogenea.
- name (str) – Nome del circuito.
Attributi
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_circuitMetodi
post_processing
post_processing(scaled_value)
Mappare il valore della funzione approssimata su .
Parametri
scaled_value (float) – Un valore della funzione dall'espansione di Taylor di .
Risultati
Il dominio scaled_value viene mappato di nuovo nel dominio di , invertendo prima la trasformazione utilizzata per l'approssimazione di Taylor e poi mappando di nuovo da al dominio originale.
Tipo di restituzione