LinearAmplitudeFunction
class qiskit.circuit.library.LinearAmplitudeFunction(num_state_qubits, slope, offset, domain, image, rescaling_factor=1, breakpoints=None, name='F')
Bases: QuantumCircuit
Un circuito que implementa una función lineal (a trozos) sobre las amplitudes de los qubits.
Una función de amplitud de una función es un mapeo
para una función , donde es un estado qubit .
Este circuito implementa para funciones lineales a trozos . En este caso, el mapeo puede implementarse aproximadamente usando una expansión Taylor y rotaciones Pauli-Y linealmente controladas, ver [1, 2] para más detalles. Esta aproximación utiliza un rescaling_factor para determinar la precisión de la expansión de Taylor.
En general, la función de interés se define a partir de algún intervalo , el domain a , el image, en lugar de a . Utilizando una transformación afín podemos reescalar a :
con
Si es una función lineal a trozos en intervalos con pendientes y desplazamientos puede escribirse como
donde es una función indicadora que toma el valor 1 si el argumento se encuentra en el intervalo y 0 en cualquier otro caso. Los puntos de interrupción se pueden especificar mediante el breakpoints argumento.
Referencias:
[1] Woerner, S., y Egger, D. J. (2018). Análisis de riesgos cuánticos. arXiv:1806.06893
[2] Gacon, J., Zoufal, C., y Woerner, S. (2020). Optimización basada en simulación potenciada por la cuántica. arXiv:2005.10780
La clase qiskit.circuit.library.arithmetic.linear_amplitude_function.LinearAmplitudeFunction está obsoleta a partir de Qiskit 2.2. Se eliminará en Qiskit 3.0. En su lugar, utilice la clase qiskit.circuit.library.LinearAmplitudeFunctionGate.
Parámetros
- num_state_qubits (int) – El número de qubits utilizados para codificar la variable .
- slope (float |list[float]) – La pendiente de la función lineal. Puede ser una lista de pendientes si es una función lineal a trozos.
- offset (float |list[float]) – El desplazamiento de la función lineal. Puede ser una lista de desplazamientos si es una función lineal a trozos.
- domain (tuple[float, float]) – El dominio de la función como tupla .
- image (tuple[float, float]) – La imagen de la función como tupla .
- rescaling_factor (float) – El factor de reescalado para ajustar la precisión en la aproximación de Taylor.
- breakpoints (list[float] | None) – Los puntos de ruptura si la función es lineal a trozos. Si es Ninguno, la función no es a trozos.
- name (str) – Nombre del circuito.
Atributos
name
Tipo: str
Un nombre legible para el circuito.
Ejemplo
from qiskit import QuantumCircuit
qc = QuantumCircuit(2, 2, name="my_circuit")
print(qc.name)my_circuitMétodos
post_processing
post_processing(scaled_value)
Asigne el valor de la función de la aproximada a .
Parámetros
scaled_value (float) – Un valor de función de la expansión de Taylor de .
Devuelve
El scaled_value mapeado de nuevo al dominio de , invirtiendo primero la transformación utilizada para la aproximación Taylor y luego mapeando de nuevo desde al dominio original.
Tipo de retorno