I am trying to find my kraus representation from my process matrix. Suppose that, I have these process matrix:
proces_matrix = [[ 1. 0. 0. 0. ]
[-0. 0.537 -0.004 -0.005]
[ 0.023 0.014 0.635 -0.03 ]
[ 0.011 -0.009 0.017 0.883]]]
To find the kraus representation, I tried 2 methods.
- I first tried to use
to_kraus
function in qutip. According to API documentation, to_kraus Converts a Qobj representing a quantum map to a list of quantum objects, each representing an operator in the Kraus decomposition of the given map. When I gave my process matrix to the function, as a result I got my process matrix back.
The code is pretty simple:
q_proces_matrix = qutip.Qobj(proces_matrix)
kraus_rep = qutip.to_kraus(q_proces_matrix)
- Then I thought, I am doing something wrong so I asked this question, and thanks to a the answer, I first find my Choi matrix with the function of
to_choi
in qutip and then I usedchoi_to_kraus
function in qutip. The definition of the function is enter link description here It takes choi matrices and turns kraus representations However I got my process matrices as output instead of Kraus representations.
The code is again pretty simple:
q_proces_matrix = qutip.Qobj(proces_matrix)
choi = qutip.to_choi(q_proces_matrix)
kraus_rep = qutip.choi_to_kraus(choi)
- AFter all, I just found the eigenvectors of my Choi matrices and It means the superket operation of my kraus representations. But I am quite confused what I did wrong with qutip function and I did not get my Kraus representations from the functions
Could someone explain me what I missed in qutip?