|
@@ -0,0 +1,44 @@ |
|
|
|
|
|
from numpy import * |
|
|
|
|
|
|
|
|
|
|
|
px = matrix([[0, 1], [1, 0]], dtype=complex) |
|
|
|
|
|
py = matrix([[0, -1j], [1j, 0]], dtype=complex) |
|
|
|
|
|
pz = matrix([[1, 0], [0, -1]], dtype=complex) |
|
|
|
|
|
i = matrix(eye(2, dtype=complex)) |
|
|
|
|
|
h = matrix([[1, 1], [1, -1]], dtype=complex) / sqrt(2) |
|
|
|
|
|
p = matrix([[1, 0], [0, 1j]], dtype=complex) |
|
|
|
|
|
|
|
|
|
|
|
s_set = [i, p, p*p, p*p*p] |
|
|
|
|
|
c_set = [i, h, h*p, h*p*p, h*p*p*p, h*p*p*h] |
|
|
|
|
|
|
|
|
|
|
|
def identify_pauli(m): |
|
|
|
|
|
for sign in [+1, -1]: |
|
|
|
|
|
for label, pauli in zip("XYZ", (px, py, pz)): |
|
|
|
|
|
if allclose(sign*pauli, m): |
|
|
|
|
|
return "{}{}".format("+" if sign>0 else "-", label) |
|
|
|
|
|
|
|
|
|
|
|
for p in px, py, pz: |
|
|
|
|
|
for sign in [+1, -1]: |
|
|
|
|
|
print identify_pauli(sign*p) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
print py |
|
|
|
|
|
print h*px*h.H |
|
|
|
|
|
print h*py*h.H |
|
|
|
|
|
print h*pz*h.H |
|
|
|
|
|
|
|
|
|
|
|
#names = [] |
|
|
|
|
|
#matrices = [] |
|
|
|
|
|
#for s, s_name in zip(s_set, s_names): |
|
|
|
|
|
#for c, c_name in zip(c_set, c_names): |
|
|
|
|
|
#names.append(s_name+c_name) |
|
|
|
|
|
#matrices.append(s*c) |
|
|
|
|
|
|
|
|
|
|
|
#print " ".join(names) |
|
|
|
|
|
#print len(names) |
|
|
|
|
|
|
|
|
|
|
|
#for m in matrices: |
|
|
|
|
|
# print (m/abs(amax(m))).round(0).reshape(4) |
|
|
|
|
|
#print average(abs(array((m/abs(amax(m))).round(0).reshape(4).tolist()[0]))) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|