PiecewiseChebyshev
class qiskit.circuit.library.PiecewiseChebyshev(f_x, degree=None, breakpoints=None, num_state_qubits=None, name='pw_cheb')
Bases: BlueprintCircuit
Aproximação de Chebyshev por partes para uma função de entrada.
Para uma determinada função e grau , essa classe implementa uma aproximação Chebyshev polinomial por partes em qubits para nos intervalos fornecidos. Todos os polinômios na aproximação são de grau .
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')
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 .
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