Qutip之密度矩阵

        QuTiP的主要目的之一是探索开放量子系统的动力学,其中系统的最一般状态不再是一个状态向量,而是一个密度矩阵。由于密度矩阵的操作与向量的操作完全相同,我们将简要介绍创建和使用这些结构。

ket = basis(5, 2)      
ket * ket.dag()

Quantum object: dims = [[5], [5]], shape = (5, 5), type = oper, isherm = True   Qobj data =
[[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]
[0. 0. 1. 0. 0.]
[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]]

这种形式也可以通过qutip.states.fock_dm或qutip.states.ket2dm函数来完成:

fock_dm(5, 2)  
或者
ket2dm(ket)

如果我们想创建一个密度矩阵,使得在|2〉或|4〉数态中被发现的经典概率相等,我们可以采取以下步骤:

0.5 * ket2dm(basis(5, 4)) + 0.5 * ket2dm(basis(5, 2))
或者
0.5 * fock_dm(5, 2) + 0.5 * fock_dm(5, 4)

输出:
Quantum object: dims = [[5], [5]], shape = (5, 5), type = oper, isherm = True
Qobj data =
[[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]
[0. 0. 0.5 0. 0. ]
[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0.5]]

还有几个其他的内置函数用于创建预定义的密度矩阵,例如qutip.states.coherent_dm和qutip.states.thermal_dm,分别用于创建相干态和热态的密度矩阵(coherent_dm方法的具体用法见补充1,thermal_dm方法的具体用法见补充2):

coherent_dm(5, 1.25)

Quantum object: dims = [[5], [5]], shape = (5, 5), type = oper, isherm = True
Qobj data =
[[0.20980701 0.26141096 0.23509686 0.15572585 0.13390765]
[0.26141096 0.32570738 0.29292109 0.19402805 0.16684347]
[0.23509686 0.29292109 0.26343512 0.17449684 0.1500487 ]
[0.15572585 0.19402805 0.17449684 0.11558499 0.09939079]
[0.13390765 0.16684347 0.1500487 0.09939079 0.0854655 ]]



thermal_dm(5, 1.25)

Quantum object: dims = [[5], [5]], shape = (5, 5), type = oper, isherm = True
Qobj data =
[[0.46927974 0. 0. 0. 0. ]
[0. 0.26071096 0. 0. 0. ]
[0. 0. 0.14483942 0. 0. ]
[0. 0. 0. 0.08046635 0. ]
[0. 0. 0. 0. 0.04470353]]

        QuTiP还提供了一组距离度量方法,用于确定两个密度矩阵分布之间的接近程度。其中包括:

                迹距离:qutip.metrics.tracedist(补充4)

                保真度:qutip.metrics.fidelity(补充3)

                希尔伯特-施密特距离:qutip.metrics.hilbert_dist(补充5)

                布雷斯距离:qutip.metrics.bures_dist(补充6)

                布雷斯角度:qutip.metrics.bures_angle(补充7)

                quantum Hellinger 距离:qutip.metrics.hellinger_dist(补充8)

In [35]: x = coherent_dm(5, 1.25)
In [36]: y = coherent_dm(5, 1.25j) # <-- note the 'j'
In [37]: z = thermal_dm(5, 0.125)

In [38]: fidelity(x, x)
Out[38]: 1.0000000053282376

In [39]: tracedist(y, y)
Out[39]: 0.0

In [40]: hellinger_dist(y, y)
Out[40]: 0.0

我们也知道,对于两个纯态迹距离(T)和保真度(F)之间有关系: T = \sqrt{1-F^{2}},而两个纯态|𝜓〉和|𝜑〉之间的量子Hellinger距离(QHE)由下式给出:𝑄𝐻𝐸 = √︁ (2 − 2 |〈𝜓|𝜑〉|2)

In [41]: tracedist(y, x)
Out[41]: 0.977156579211186

In [42]: np.sqrt(1 - fidelity(y, x) ** 2)
Out[42]: 0.9771565700334389

对于纯态和混合态,有1-F^{2}\leqslant T,这也可以验证:        

In [43]: 1 - fidelity(x, z) ** 2
Out[43]: 0.778289048225615

In [44]: tracedist(x, z)
Out[44]: 0.855902832886259

 补充1:

coherent_dm(N, alpha, offset=0, method='operator')` 在QuTiP中是用于创建一个
表示具有给定粒子数N和给定复数alpha的相干态的密度矩阵的方法。 

方法参数说明:
- N(整数):系统中的最大粒子数或准粒子数。
- alpha(复数):Coherent state的参数,通常写为α= |α| exp(i φ),其中|α|是振幅,φ是相位。
- offset(整数):默认为0。如果在给定的基础上设置了偏移,则返回的矩阵表示带该偏移的相干态。
- method(字符串):默认为'operator'。对于超级算子形式的密度矩阵,可以设置为'super'。

例如,如果你想创建一个表示具有10个粒子和alpha=0.5的相干态的密度矩阵,你可以这样做:

from qutip import coherent_dm
rho = coherent_dm(10, 0.5)

然后此时的rho就是你需要的密度矩阵。

补充2:

在QuTiP中,thermal_dm()函数是用来创建描述热态的密度矩阵。热态是一个
被热运动主导的量子系统的平衡状态,通常出现在一个系统与热浴相互作用时。

其函数形式为thermal_dm(N, n, method='operator')。

函数参数说明:

- N(整数):系统中的最大粒子数或准粒子数。
- n(实数):平均粒子或准粒子数。
- method(字符串):默认为'operator'。对于超级算子形式的密度矩阵,可以设置为'super'。

例如,如果你想创建一个描述具有5个最大粒子数的系统,且平均粒子数为2的热态的密度矩阵,
你可以这样做:

from qutip import thermal_dm
rho = thermal_dm(5, 2)

此时,rho就是所创建的热态的密度矩阵,

补充3:

QuTiP中的fidelity()函数用于计算两个量子态之间的保真度。
在量子信息科学中,保真度是一种用于衡量两个量子态之间相似度的度量。
如果两个状态完全一样,保真度为1,如果完全不同,则为0。

其函数形式为fidelity(state1, state2)

函数参数说明:
- state1 和 state2 :量子对象,可以是量子状态向量(ket)、密度矩阵或者操作符。

理论上保真度的结果应当在0到1之间,其中1表示两个状态完全相同,0表示完全不同。

补充4:

QuTiP中的tracedist()函数用于计算两个量子态之间的距离,主要应用在量子信息度量上。
定义上,Trace Distance是两个密度矩阵之间最大的差的一半,它的范围通常在0与1之间。

其函数形式为tracedist(state1, state2)

参数说明:
- state1, state2 : 量子对象,可以是量子状态向量(ket)、密度矩阵或者操作符。

这种度量方式有个好处,就是它与量子态的表示基底无关,这样无论你选择怎样的基底去
表示这两个量子态,度量出的结果都是一样的。

补充5:

QuTiP中的hilbert_dist()函数是计算两个量子对象间的希尔伯特-施密特距离
(Hilbert-Schmidt distance)。
希尔伯特-施密特距离是一种衡量两个量子态或者操作的相似度的一种度量。 

其函数形式为hilbert_dist(A, B)。

参数说明:
- A, B :量子对象,可以是量子状态向量(ket)、密度矩阵或者操作符。

这种距离在一些量子信息处理的问题中非常有用,如量子系统的演化、量子设备性能的分析等。

补充6:

在QuTiP中,bures_dist()函数用于计算两个量子态之间的Bures距离。
Bures距离是量子信息和量子态估计中用于比较两个密度矩阵相似度的度量方式。

其函数形式为bures_dist(state1, state2)。

函数参数说明:
- state1 和 state2 : 量子对象,可以是量子状态或密度算子。

Bures距离有许多良好的性质,比如它是base不变的,也就是无论你选择什么样的基底
来表示这两个量子态,Bures距离都是相同的。这是一种非常有用的度量方式,
常常用于量子信息理论和量子计算中。

补充7:

在QuTiP中,bures_angle()函数用于计算两个量子态之间的Bures角度。
Bures角度是描述两个量子态相似性的另一种度量,起源于Bures距离。
Bures角度越小,两个量子态越相似。

函数形式为 bures_angle(state1, state2)

函数参数说明:
- state1 和 state2 : 量子对象,可以是量子态或密度算子。

这是描述两个量子态相似性的非常有用的度量方式。

补充8:

在QuTiP中,hellinger_dist()函数用于计算两个量子态之间的Hellinger距离。
Hellinger距离是两个概率分布相似性的度量,常用于统计学和信息理论中。

函数形式为 hellinger_dist(state1, state2)

函数参数说明:
- state1 和 state2 : 量子对象,可以是量子态或密度算子。

这是一种非常有用的度量方式,通常用于比较两个量子态的相似性。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值