LinearAmplitudeFunction
class qiskit.circuit.library.LinearAmplitudeFunction(num_state_qubits, slope, offset, domain, image, rescaling_factor=1, breakpoints=None, name='F')
Basen: QuantumCircuit
Eine Schaltung, die eine (stückweise) lineare Funktion auf Qubit-Amplituden implementiert.
Eine Amplitudenfunktion einer Funktion ist eine Abbildung
für eine Funktion , wobei ein Qubit-Zustand ist.
Diese Schaltung implementiert für stückweise lineare Funktionen . In diesem Fall kann die Abbildung näherungsweise durch eine Taylor-Erweiterung und linear gesteuerte Pauli-Y-Drehungen implementiert werden, siehe [1, 2] für weitere Einzelheiten. Bei dieser Annäherung wird eine rescaling_factor verwendet, um die Genauigkeit der Taylor-Erweiterung zu bestimmen.
Im Allgemeinen wird die interessierende Funktion von einem Intervall , dem domain bis , dem image, statt bis definiert. Mit einer affinen Transformation können wir bis umskalieren:
mit
Wenn eine stückweise lineare Funktion auf Intervallen mit Steigungen und Offsets ist, kann sie wie folgt geschrieben werden
wobei eine Indikatorfunktion ist, die den Wert 1 annimmt, wenn das Argument im Intervall liegt, und andernfalls den Wert 0. Die Haltepunkte können über das breakpoints Argument angegeben werden.
Quellenangaben:
[1] Woerner, S., & Egger, D. J. (2018). Quantenrisikobewertung. arXiv:1806.06893
[2] Gacon, J., Zoufal, C., & Woerner, S. (2020). Quantum-gestützte, simulationsbasierte Optimierung. arXiv:2005.10780
Die Klasse qiskit.circuit.library.arithmetic.linear_amplitude_function.LinearAmplitudeFunction ist ab Qiskit 2.2 veraltet. Sie wird in Qiskit 3.0 entfernt. Verwenden Sie stattdessen die Klasse qiskit.circuit.library.LinearAmplitudeFunctionGate.
Parameter
- num_state_qubits (int) – Die Anzahl der Qubits, die zur Kodierung der Variablen verwendet werden.
- slope (float |list[float]) – Die Steigung der linearen Funktion. Kann eine Liste von Steigungen sein, wenn es sich um eine stückweise lineare Funktion handelt.
- offset (float |list[float]) – Der Offset der linearen Funktion. Kann eine Liste von Offsets sein, wenn es sich um eine stückweise lineare Funktion handelt.
- domain (tuple[float, float]) – Der Bereich der Funktion als Tupel .
- image (tuple[float, float]) – Das Bild der Funktion als Tupel .
- rescaling_factor (float) – Der Skalierungsfaktor zur Anpassung der Genauigkeit bei der Taylor-Approximation.
- breakpoints (list[float] | None) – Die Haltepunkte, wenn die Funktion stückweise linear ist. Wenn Keine, ist die Funktion nicht stückweise.
- name (str) – Name der Schaltung.
Attribute
name
Typ: str
Ein von Menschen lesbarer Name für den Stromkreis.
Beispiel
from qiskit import QuantumCircuit
qc = QuantumCircuit(2, 2, name="my_circuit")
print(qc.name)my_circuitMethoden
post_processing
post_processing(scaled_value)
Ordnen Sie den Funktionswert der approximierten auf zu.
Parameter
scaled_value (float) – Ein Funktionswert aus der Taylor-Erweiterung von .
Rückgabe
Die Website scaled_value wird auf den Bereich von zurückgeführt, indem zunächst die für die Taylor-Approximation verwendete Transformation umgekehrt und dann von auf den ursprünglichen Bereich zurückgeführt wird.
Rückgabetyp