0

我需要编写一个半定程序,在 tr_A(R)^{Tb} >>0 的约束下最小化运算符的踪迹,比如 R。这意味着 R 代表一个 3 qubit 量子系统,并且第一个系统上的迹线为您提供了一个表示剩余 2 qubit 系统的运算符。对其中一个量子位进行部分转置,得到受限 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 ,它变得更加混乱,因为这个函数将实例放在字典中并且只给你一个键。

4

2 回答 2

1

您需要能够输出 numpy 数组或稀疏矩阵以转换为 Qobj。我在讨论此选项的 picos 文档中找不到任何内容。

于 2016-02-02T17:24:34.957 回答
0

我很晚才看到这篇文章,但也许​​我可以帮忙......我不确定 Qobj() 函数在做什么,请你告诉我更多关于它的信息。

否则,PICOS(今天发布的版本)中现在有一个新的 partial_transpose() 函数,它有望满足您的需求。

最好的,纪尧姆。

于 2016-07-04T14:54:25.310 回答