0

我想制作一个迭代执行的代码。

例如:在一个one-qubit系统中,我想theta = [ 0, ..., 2π]用如下电路在每个角度进行 100 次测量。

电路

我们可以制作如下的迭代代码吗?(这是完全错误的!)

theta = 0
for theta in np.arange(0, np.pi, np.pi/100):
    qreg q[1]
    creg c[1]
    ry(theta) q[0]
    measure q[0] -> c[0]

另外,我们可以制作一个参数为theta的函数如下吗?(这是完全错误的!)

function q_citcuit(theta)
    qreg q[1]
    creg c[1]
    ry(theta) q[0]
    measure q[0] -> c[0]
    return result

4

2 回答 2

0

除了为每次迭代指定门之外,您还需要定义一个电路和寄存器,每次都运行和测量。这是一个演示这些概念的 Jupyter 笔记本: https ://nbviewer.jupyter.org/github/Qiskit/qiskit-tutorials/blob/master/qiskit/basics/1_getting_started_with_qiskit.ipynb

于 2019-07-31T13:39:47.907 回答
0

一旦您完成了 James 发送给您的教程并掌握了基础知识,我认为以下信息将对您想要运行的特定实验有所帮助。您可以circuit在一次执行调用中执行 s 列表,并且可以迭代地创建这些电路。

theta_list = [...]  # Whatever angles you want to put in here
circuit_list = []  # This will be what is executed

# After instantiating the QuantumRegisters and ClassicalRegisters as qreg and creg
for index in range(len(theta_list)):
   qc = QuantumCircuit(qreg, creg)
   qc.ry(theta_list[index], qreg[0])
   qc.measure(qreg[0], creg[0])
   circuit_list.append(qc)

# After choosing a backend
job = execute(circuit_list, backend, shots=100)

这应该对您有用,但是,再次,我将首先查看 James 回答中的教程,以确保您掌握了核心概念并能够完全理解这段代码中发生的事情。

于 2019-07-31T15:09:32.090 回答