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

Aproximação de Chebyshev por partes para uma função de entrada.

Para uma determinada função f(x)f(x) e grau dd, essa classe implementa uma aproximação Chebyshev polinomial por partes em nn qubits para f(x)f(x) nos intervalos fornecidos. Todos os polinômios na aproximação são de grau dd.

Os valores dos parâmetros são calculados de acordo com [1] e veja [2] para obter uma explicação mais detalhada da construção do circuito e como ele atua nos qubits.

Exemplos:

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 de circuito gerado pelo código anterior.

Referências

[1] Haener, T., Roetteler, M., e Svore, K. M. (2018). Otimização de circuitos quânticos para operações aritméticas. arXiv:1805.12445

[2] Carrera Vazquez, A., Hiptmair, H., & Woerner, S. (2022). Aprimoramento do algoritmo de sistemas lineares quânticos usando a extrapolação de Richardson. ACM Transactions on Quantum Computing 3, 1, Artigo 2

Parâmetros

  • f_x (float | Callable[[int], float]) – a função a ser aproximada. As funções constantes devem ser especificadas como f_x = constante.
  • degree (int | None) – o grau dos polinômios. Padroniza para 1.
  • breakpoints (list[int] | None) – os pontos de interrupção para definir a função linear por partes. O padrão é o intervalo completo.
  • num_state_qubits (int | None) – número de qubits que representam o estado.
  • name (str) – O nome do objeto de circuito.

Atributos

breakpoints

Os pontos de interrupção para a aproximação por partes.

Retorna

Os pontos de interrupção para a aproximação por partes.

degree

O grau dos polinômios.

Retorna

O grau dos polinômios.

f_x

A função a ser aproximada.

Retorna

A função a ser aproximada.

num_state_qubits

O número de qubits de estado que representam o estado x|x\rangle.

Retorna

O número de qubits de estado.

polynomials

Os polinômios para a aproximação por partes.

Retorna

Os polinômios para a aproximação por partes.

Aumentos

TypeError - Se a função de entrada não estiver no formato correto.

name

Tipo: str

Um nome legível por humanos para o circuito.

Exemplo

from qiskit import QuantumCircuit

qc = QuantumCircuit(2, 2, name="my_circuit")
print(qc.name)
my_circuit
Esta página foi útil?
Relate um bug, erro de digitação ou solicite conteúdo no GitHub.