LinearAmplitudeFunction
class qiskit.circuit.library.LinearAmplitudeFunction(num_state_qubits, slope, offset, domain, image, rescaling_factor=1, breakpoints=None, name='F')
Bases: QuantumCircuit
Um circuito que implementa uma função linear (por partes) em amplitudes de qubit.
Uma função de amplitude de uma função é um mapeamento
para uma função , em que é um estado de qubit .
Esse circuito implementa o para funções lineares por partes . Nesse caso, o mapeamento pode ser implementado aproximadamente usando uma expansão de Taylor e rotações Pauli-Y linearmente controladas; consulte [1, 2] para obter mais detalhes. Essa aproximação usa o site rescaling_factor para determinar a precisão da expansão de Taylor.
Em geral, a função de interesse é definida a partir de algum intervalo , o domain para , o image, em vez de para . Usando uma transformação afim, podemos redimensionar para :
com o
Se for uma função linear por partes em intervalos com inclinações e deslocamentos , ela poderá ser escrita como
onde é uma função indicadora que assume o valor 1 se o argumento estiver no intervalo e, caso contrário, 0. Os pontos de interrupção podem ser especificados pelo breakpoints argumento.
Referências
[1] Woerner, S., e Egger, D. J. (2018). Análise de risco quântico. arXiv:1806.06893
[2] Gacon, J., Zoufal, C., & Woerner, S. (2020). Otimização baseada em simulação com aprimoramento quântico. arXiv:2005.10780
A classe qiskit.circuit.library.arithmetic.linear_amplitude_function.LinearAmplitudeFunction está obsoleta desde o Qiskit 2.2. Ele será removido no Qiskit 3.0. Em vez disso, use a classe qiskit.circuit.library.LinearAmplitudeFunctionGate.
Parâmetros
- num_state_qubits (int) – O número de qubits usados para codificar a variável .
- slope (float |list[float]) – A inclinação da função linear. Pode ser uma lista de inclinações se for uma função linear por partes.
- offset (float |list[float]) – O deslocamento da função linear. Pode ser uma lista de deslocamentos se for uma função linear por partes.
- domain (tuple[float, float]) – O domínio da função como uma tupla .
- image (tuple[float, float]) – A imagem da função como uma tupla .
- rescaling_factor (float) – O fator de redimensionamento para ajustar a precisão na aproximação de Taylor.
- breakpoints (list[float] | None) – Os pontos de interrupção se a função for linear por partes. Se for None, a função não é por partes.
- name (str) – Nome do circuito.
Atributos
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_circuitMétodos
post_processing
post_processing(scaled_value)
Mapeie o valor da função do aproximado para .
Parâmetros
scaled_value (float) – Um valor de função da expansão de Taylor de .
Retorna
O scaled_value foi mapeado de volta para o domínio do , primeiro invertendo a transformação usada para a aproximação de Taylor e, em seguida, mapeando de volta do para o domínio original.
Tipo de retorno