量子程序设计基础 | 量子态的可视化
01、单量子比特布洛赫球表示可视化
根据量子比特布洛赫矢量的坐标绘制布洛赫球几何图像的函数为
plot_bloch_vector(bloch, title=' ', ax=None,figsize=None,\\
coord_type='cartesian')
当coord_type ='cartesian'时,布洛赫矢量采用量子态直角坐标(x,y,z);当coord_type ='spherical'时,布洛赫矢量采用量子态球极坐标(r,θ,ϕ)。coord_type默认采用直角坐标系。参数title为字符串类型,若非空,则在显示图片的上方显示该标题。
【例1】编程实例: 请绘制|+〉对应的布洛赫球表示。
解:
|+〉的直角坐标为(1,0,0),代码实现如下。
#CH6- 6.ipynb: 绘制/+)对应的布洛赫球
from qiskit.visualization import plot bloch vector
from numpy import pi
plot bloch vector([1,pi/2,0],title='My First Bloch Sphere',coord type='spherical')
#plot bloch vector([1,0,0],title='My First Bloch Sphere')
输出结果如图1所示。
■ 图1 绘制布洛赫球
02、多量子比特布洛赫球表示可视化
根据状态向量或密度矩阵绘制对应的布洛赫球几何图像的函数为
plot_bloch_multivector(state,title='',figsize=None,,\\
rho=None,reverse_bits=False)
该函数根据量子比特的状态向量绘制布洛赫球几何图像,也适用于单量子比特。state代表量子态,可以用状态向量或密度矩阵表示;reverse_bits为布尔变量,为True时序号大的量子比特先输出,为False时序号小的量子比特先输出(默认为False)。
【例2】编程实例: 考察图2所示的量子线路,算符U0对应图中两条barrier虚线之间的部分,q1和q0的初态为|00〉,分别给出算符U0初态和末态的状态向量及其布洛赫球表示,并分析推断其功能和意义。
■ 图2 量子线路
解:
代码如下。
# CH6- 7.ipynb:算符 UO 的功能演示
#输入库函数from qiskit import QuantumCircuit,execute,Aerfrom qiskit.visualization import plot bloch multivector#创建量子线路及初始化
qc = QuantumCircuit(2)
qc.h([0,1])
#输出初态的状态向量和布洛赫球表示
sim = Aer.get backend('aer simulator')qc init = qc.copy()
qc init.save statevector()
statevector=sim.run(qc init).result() .get statevector
(decimals=3)
print(statevector)
plot bloch multivector(statevector)#UO 的量子线路qc.barrier([0,1])qc.z([0,11)qc.cz(0,1)qc.barrier([0,1])
qc.draw()
#输出末态的状态向量和和布洛赫球表示backend = Aer.get backend('statevector simulator')output=execute(qc,backend) .result() .get statevector
(decimals=3)
print(output)
plot bloch multivector(output)
U0初态的状态向量为[0.5+0.j 0.5+0.j 0.5+0.j 0.5+0.j],输出的布洛赫球表示如图3所示。
■ 图3 U0初态
U0末态的状态向量为[0.5+0.j -0.5+0.j -0.5+0.j -0.5+0.j],输出的布洛赫球表示如图6.10所示,表明其无法用两个独立的量子态的张量积表示,这是因为该态为纠缠态。
■ 图4 U0末态
U0实现的功能为
- 点赞
- 收藏
- 关注作者
评论(0)