我需要编写一个半定程序,以最小化操作符的轨迹,例如R,受tr_A(R)^{Tb} >>0的约束。这意味着R代表一个3个量子比特的量子系统,而第一个系统上的轨迹给出了一个表示其余2个量子比特系统的运算符。对其中一个量子比特进行部分转置,就可以得到受限2量子比特系统的部分转置量子态。正是这种状态,我想让它成为半正定的。我使用PICOS (编写SDP)和qutip (执行操作)。
P = pic.Problem()
Rho = P.add_variable('Rho',(n,n),'hermitian')
P.add_constraint(pic.trace(Rho)==1)
P.add_constraint(Rho>>0)
RhoQOBJ = Qobj(Rho)
RhoABtr = ptrace(RhoQOBJ, [0,1])
RhoABqbj = partial_transpose(RhoABtr, [0], method='dense')
RhoAB = RhoABqbj.full() 问题:我需要使Rho成为一个Qobj,以便qutip能够理解它,但上面的Rho只是Variable类的一个实例。有人知道该怎么做吗?
我在这里也看到了,http://picos.zib.de/tuto.html#variables,它变得更加令人困惑,因为这个函数将实例放在字典中,只给你返回一个键。
发布于 2016-02-03 01:24:35
您需要能够输出numpy数组或稀疏矩阵才能转换为Qobj。我在picos文档中找不到任何讨论此选项的内容。
发布于 2016-07-04 22:54:25
我很晚才看到这篇文章,但也许我能帮上忙。我不确定Qobj()函数在做什么,你能告诉我更多关于它的信息吗?
另外,PICOS (今天发布的版本)中现在有一个新的partial_transpose()函数,希望它能满足您的需要。
最好的,纪劳姆。
https://stackoverflow.com/questions/31247768
复制相似问题