Como adicionar vários parâmetros no circuito qiskit?
Sep 02 2020
Eu quero construir um circuito ansatz no Qiskit, então preciso de alguns parâmetros para atuar nas portas (por exemplo, RX(a), RY(b)). Nos tutoriais do Qiskit encontro uma forma de implementar um parâmetro:
import numpy as np
theta_range = np.linspace(0, 2 * np.pi, 128)
circuits = [qc.bind_parameters({theta: theta_val})
for theta_val in theta_range]
circuits[-1].draw()
Existe apenas um parâmetro, theta. Eu quero mais parâmetros em algum intervalo. Como posso conseguir isso?
Respostas
2 Cryoris Sep 02 2020 at 16:03
Você pode criar um número arbitrário de parâmetros em seu circuito usando a qiskit.circuit.Parameterclasse. Aqui está um breve exemplo
from qiskit.circuit import Parameter, QuantumCircuit
# define your parameters
a, b, c = Parameter('a'), Parameter('b'), Parameter('c')
circuit = QuantumCircuit(2)
circuit.rx(a, 0) # RX(a) on qubit 0
circuit.ry(b, 0) # RY(b) on qubit 1
circuit.crz(c, 0, 1) # CRZ(c) controlled on qubit 0, acting on qubit 1
# bind the values
bound_circuit = circuit.bind_parameters({a: 0, b: 1, c: 2})
# or if you have a list of values
a_vals = [0, 1, 2, 3]
b_vals = [1, 2, 3, 4]
c_vals = [2, 3, 4, 5]
bound_circuits = [circuit.bind_parameters(
{a: a_val, b: b_val, c: c_val})
for (a_val, b_val, c_val) in zip(a_vals, b_vals, c_vals)]
Por conveniência, há também a ParameterVectorclasse para construir vários parâmetros de uma só vez. O exemplo acima também pode se parecer com
from qiskit.circuit import ParameterVector, QuantumCircuit
# define your parameters
p = ParameterVector('p', 3)
circuit = QuantumCircuit(2)
circuit.rx(p[0], 0) # RX(p[0]) on qubit 0
circuit.ry(p[1], 0) # RY(p[1]) on qubit 1
circuit.crz(p[2], 0, 1) # CRZ(p[2]) controlled on qubit 0, acting on qubit 1
# bind the values
bound_circuit = circuit.bind_parameters({p: [0, 1, 2]})
# or for a list of values
values = [ [0, 1, 2], [1, 2, 3], [2, 3, 4] ]
bounds_circuits = [circuit.bind_parameters({p: val} for val in values})
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?
George Harrison ficou chateado por suas letras de 'Hurdy Gurdy Man' de Donovan não terem sido usadas