PiecewiseChebyshev
class qiskit.circuit.library.PiecewiseChebyshev(f_x, degree=None, breakpoints=None, num_state_qubits=None, name='pw_cheb')
Bases: BlueprintCircuit
Aproximación Chebyshev a trozos a una función de entrada.
Para una función dada y un grado , esta clase implementa una aproximación polinómica Chebyshev a trozos en qubits a en los intervalos dados. Todos los polinomios de la aproximación son de grado .
Los valores de los parámetros se calculan según [1] y véase [2] para una explicación más detallada de la construcción del circuito y cómo actúa sobre los qubits.
Ejemplos:
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')
Referencias:
[1] Haener, T., Roetteler, M., y Svore, K. M. (2018). Optimización de circuitos cuánticos para la aritmética. arXiv:1805.12445
[2] Carrera Vázquez, A., Hiptmair, H., & Woerner, S. (2022). Mejora del algoritmo de sistemas lineales cuánticos mediante la extrapolación de Richardson. ACM Transactions on Quantum Computing 3, 1, Artículo 2
Parámetros
- f_x (float | Callable[[int], float]) – la función a aproximar. Las funciones constantes deben especificarse como f_x = constante.
- degree (int | None) – el grado de los polinomios. El valor predeterminado es
1. - breakpoints (list[int] | None) – los puntos de ruptura para definir la función lineal a trozos. Por defecto es el intervalo completo.
- num_state_qubits (int | None) – número de qubits que representan el estado.
- name (str) – El nombre del objeto circuito.
Atributos
breakpoints
Los puntos de ruptura para la aproximación por partes.
Devuelve
Los puntos de ruptura para la aproximación por partes.
degree
El grado de los polinomios.
Devuelve
El grado de los polinomios.
f_x
La función a aproximar.
Devuelve
La función a aproximar.
num_state_qubits
El número de qubits de estado que representan el estado .
Devuelve
El número de qubits de estado.
polynomials
Los polinomios para la aproximación por partes.
Devuelve
Los polinomios para la aproximación por partes.
Eleva
TypeError - Si la función de entrada no está en el formato correcto.
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_circuit