使用qutip将门应用于量子位?

时间:2018-06-03 14:40:36

标签: python qutip

有了qutip,我想模拟纠错码,所以我想用特定的门来操纵量子比特。

以下是我的代码部分:

def physicalToLogical():
    U=qt.cnot(N=5,control=0,target=1)
    V=qt.cnot(N=5,control=1,target=2)
    return U*V

e0=qt.basis(2,0)
e1=qt.basis(2,1)

m=(1/np.sqrt(2))*(e0+e1)
U=physicalToLogical()
QubitLogical=U*m

我不确定如何正确使用门。

感谢您的关注,如果有人知道解决方案,请提供帮助。

[编辑]

实际上我只想用qutip来实现这种类型的电路: circuit schema

我试过了:

def physicalToLogical():
        U=qt.cnot(N=5,control=0,target=1)
        V=qt.cnot(N=5,control=1,target=2)
        return U*V

    def mesuresyndrom():
        U=qt.cnot(N=5,control=0,target=3)
        V=qt.cnot(N=5,control=1,target=3)
        W=qt.cnot(N=5,control=0,target=4)
        X=qt.cnot(N=5,control=2,target=4)
        return U*V*W*X

    def errorcorrection(sdm,qL):
        if sdm[0]==state(0,1):
            if sdm[1]==state(0,1):
               U=qt.rx(phi,N=5,target=3)enter image description here
        else:
            if sdm[1]==state(1,0):
                U=qt.rx(pi,N=5,target=2)
        else:
            U=qt.rx(pi,N=5,target=1)
        return U

    q=[0 for i in range(32)]
    q[0]=1/np.sqrt(2)
    q[1]=1/np.sqrt(2)

我也试过这个:

    def physicalToLogical(q):
    q1=[1,0]
    q2=[1,0]
    q1=np.dot(U,[q1,q])
    q2=np.dot(u,[q2,q])
    q2=q2[0][0]
    qL=[q,q1,q2]
    return q

def mesuresyndrom(qL):
    anc1= [1,0]
    anc2= [1,0]
    anc1=(qt.cnot())[q[0],anc1]
    print(q[0])
    anc1=np.dot(U,[q[1],anc1])
    anc2=np.dot(U,[q[0],anc1])
    anc2=np.dot(U,[q[2],anc1])
    return [anc1,anc2]

def errorcorrection(qL,sdm):
    if smd[0]==state(1,0):
        if smd[1]==state(0,1):
            qL[2]=sigmax(qL[2])
    else:
        if smd[1]==state(1,0):
            qL[1]=sigmax(qL[1])
        else:
            qL[0]=sigmax(qL[0])
    return qL

0 个答案:

没有答案