Skip to main content
IBM Quantum Platform

PiecewiseChebyshev

class qiskit.circuit.library.PiecewiseChebyshev(f_x, degree=None, breakpoints=None, num_state_qubits=None, name='pw_cheb')

GitHub

Bases: BlueprintCircuit

Aproximación Chebyshev a trozos a una función de entrada.

Para una función dada f(x)f(x) y un grado dd, esta clase implementa una aproximación polinómica Chebyshev a trozos en nn qubits a f(x)f(x) en los intervalos dados. Todos los polinomios de la aproximación son de grado dd.

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')
Diagrama del circuito generado por el código anterior.

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 x|x\rangle.

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
¿Le ha resultado útil esta página?
Informe de un error, de una errata o solicite contenido en GitHub.