I know that the one of the property of the Kraus Operator is:

enter image description here

So in qiskit, I first converted my array to super operator and then I found my kraus operators. However the sum of kraus operator is not equal to identity. And I do not know if I found my kraus operator correctly or not. Here is my process matrix:

array([[ 1.   ,  0.   ,  0.   ,  0.   ],
       [ 0.001,  0.986,  0.02 ,  0.04 ],
       [ 0.014,  0.01 ,  0.019, -0.957],
       [-0.028, -0.031,  0.949,  0.008]])

Here is my code:


From kraus_, I put kraus operators into kraus_list Here is how I found the sum of kraus operators:

kraus_list = np.array([[[-0.833+0.j,  0.14 +0.j],
         [-0.14 +0.j, -0.821+0.j]],

        [[ 0.134+0.j,  0.812+0.j],
         [-0.806+0.j,  0.139+0.j]],

        [[ 0.14 +0.j, -0.06 +0.j],
         [-0.061+0.j, -0.142+0.j]],

        [[-0.012+0.j, -0.029+0.j],
         [-0.029+0.j,  0.012+0.j]],

       [[-1.168-0.j, -0.026-0.j],
         [ 0.014+0.j, -0.205-0.j]],

        [[ 0.201+0.j, -0.008-0.j],
         [ 0.021+0.j, -1.142-0.j]],

        [[ 0.004+0.j, -0.147-0.j],
         [ 0.16 +0.j,  0.005+0.j]],

        [[ 0.   +0.j, -0.032-0.j],
         [-0.03 -0.j, -0.   -0.j]]])
    sum_of_kraus= np.matmul(kraus_list[0].conj().T,kraus_list[0])+np.matmul(kraus_list[1].conj().T,kraus_list[1])+np.matmul(kraus_list[2].conj().T,kraus_list[2])+np.matmul(kraus_list[3].conj().T,kraus_list[3])+np.matmul(kraus_list[4].conj().T,kraus_list[4])+np.matmul(kraus_list[5].conj().T,kraus_list[5])+np.matmul(kraus_list[6].conj().T,kraus_list[6])+np.matmul(kraus_list[7].conj().T,kraus_list[7])

Here is the result:

array([[2.843+0.j, 0.009+0.j],
       [0.009+0.j, 2.761+0.j]])

As it can be seen, it is not equal to identity. Could someone explain to me why I am finding 2.843 instead of 1. Am I doing something wrong in the code?

  • 2
    $\begingroup$ I haven't gone through all the details, but I suspect that it's supposed to be np.matmul(kraus_list[0].conj().T, kraus_list[0]) (see that formula that you pasted) $\endgroup$ Feb 14, 2022 at 14:30
  • $\begingroup$ thanks for the comment, you are right but id did not affect my result. I first tried what you suggested and then I inverse the equation just to see if something changes and then I pasted here the last version, As a result even if I write: np.matmul(kraus_list[0].conj().T, kraus_list[0]) nothing changes. BUt I guess I found the problem $\endgroup$
    – quest
    Feb 14, 2022 at 23:10
  • $\begingroup$ @quest do you mind sharing the solution or close the question? $\endgroup$
    – luciano
    Feb 15, 2022 at 9:56
  • $\begingroup$ @luciano I am not so sure for my solution. That is why I need to wait 2 more days and if noone answers, I will add a comment regarding what I found and then I will close the topic $\endgroup$
    – quest
    Feb 15, 2022 at 11:44


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.