%autosave 0 from sglib import * from sympy.physics.quantum.qubit import matrix_to_qubit evec1 = (1,0); evec2 = (0,1) eval1 = 1; eval2 = -1 V = Matrix([evec1, evec2]).transpose() Vi = V.inv() D = Matrix([(eval1,0), (0,eval2)]) M = V*D*Vi Print('$%s %s %s = %s$' % ( myltx(V), myltx(D), myltx(Vi), myltx(M))) ir2 = 1/sqrt(2) evec1 = (ir2, ir2); evec2 = (ir2, -ir2) eval1 = 1; eval2 = -1 V = Matrix([evec1, evec2]).transpose() Vi = V.inv() D = Matrix([(eval1,0), (0,eval2)]) M = V*D*Vi Print('$%s %s %s = %s$' % ( myltx(V), myltx(D), myltx(Vi), myltx(M))) ir2 = 1/sqrt(2) evec1 = (ir2, i*ir2); evec2 = (ir2, -i*ir2) eval1 = 1; eval2 = -1 V = Matrix([evec1, evec2]).transpose() Vi = V.inv() D = Matrix([(eval1,0), (0,eval2)]) M = V*D*Vi Print('$%s %s %s = %s$' % ( myltx(V), myltx(D), myltx(Vi), myltx(M))) import sglib reload(sglib) from sglib import * # Test all different forms for sigma_z evecs = ( col(1,0), col(0,1) ) evecs = ( (1,0), (0,1) ) evecs = [ [1,0], [0,1] ] # sigma_x evecs = [col(1,1)/sqrt(2),col(1,-1)/sqrt(2)] # sigma_y evecs = [col(1,i)/sqrt(2),col(1,-i)/sqrt(2)] # evals = (1, -1) construct_measurement_operator(evals, evecs) # Classical 2 bit measurement evecs = [ (1,0,0,0), (0,1,0,0), (0,0,1,0), (0,0,0,1)] # evals = (0,1,2,3) construct_measurement_operator(evals, evecs)