%autosave 0
from sglib import *
from sympy.physics.quantum.qubit import matrix_to_qubit
Autosave disabled
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)