import numpy as np
z_plus_bra = np.array([[1,0]])
z_minus_bra = np.array([[0,1]])
z_plus_ket = z_plus_bra.T
z_minus_ket = z_minus_bra.T
x_plus_bra = 1/np.sqrt(2)*np.array([[1,1]])
x_minus_bra = 1/np.sqrt(2)*np.array([[1,-1]])
x_plus_ket = x_plus_bra.T
x_minus_ket = x_minus_bra.T
y_plus_bra = 1/np.sqrt(2)*np.array([[1, 1j]])
y_minus_bra = 1/np.sqrt(2)*np.array([[1, -1j]])
y_plus_ket = np.conj(y_plus_bra.T)
y_minus_ket = np.conj(y_minus_bra.T)
psi_ket = (1/2)*z_plus_ket + 1j*(np.sqrt(3)/2)*z_minus_ket
# a) Find <S_x>
print("Find <S_x>")
x_plus = x_plus_bra@psi_ket
x_plus_prob = np.conj(x_plus)*x_plus
print(x_plus_prob)
x_minus = x_minus_bra@psi_ket
x_minus_prob = np.conj(x_minus)*x_minus
print(x_minus_prob)
S_x = x_plus_prob - x_minus_prob
print(S_x)
# b) Find <S_y>
print("Find <S_y>")
y_plus = y_plus_bra@psi_ket
y_plus_prob = np.conj(y_plus)*y_plus
print(y_plus_prob)
y_minus = y_minus_bra@psi_ket
y_minus_prob = np.conj(y_minus)*y_minus
print(y_minus_prob)
S_y = y_plus_prob - y_minus_prob
print(S_y)
# Find <S_z>
print("Find <S_z>")
z_plus = z_plus_bra@psi_ket
z_plus_prob = np.conj(z_plus)*z_plus
print(z_plus_prob)
z_minus = z_minus_bra@psi_ket
z_minus_prob = np.conj(z_minus)*z_minus
print(z_minus_prob)
S_z = z_plus_prob - z_minus_prob
print(S_z)
Find <S_x>
[[0.5+0.j]]
[[0.5+0.j]]
[[0.+0.j]]
Find <S_y>
[[0.0669873+0.j]]
[[0.9330127+0.j]]
[[-0.8660254+0.j]]
Find <S_z>
[[0.25+0.j]]
[[0.75+0.j]]
[[-0.5+0.j]]
psi_1_ket = 1/2*z_plus_ket + 1j*np.sqrt(3)/2*z_minus_ket
psi_2_ket = -1j/2*z_plus_ket + np.sqrt(3)/2*z_minus_ket
# a) Calculate <psi_2|psi_1>
print("Calculate <psi_2|psi_1>")
psi_2_bra = np.conj(psi_2_ket.T)
print(psi_2_bra@psi_1_ket)
# b) Calculate |<psi_2|psi_1>|^2
print("Calculate |<psi_2|psi_1>|^2")
amplitude = psi_2_bra@psi_1_ket
prob = np.conj(amplitude)*amplitude
print(prob)
Calculate <psi_2|psi1>
[[0.+1.j]]
Calculate |<psi_2|psi1>|^2
[[1.+0.j]]
Todd
[[1.+0.j]]
Probability amplitude is [[0.+1.j]]
Probability is [[1.+0.j]]
psi_1_ket = 1/2*z_plus_ket + 1j*np.sqrt(3)/2*z_minus_ket
psi_1_ket_perp = 2*z_plus_ket - 1j*np.sqrt(3)/2*z_minus_ket
psi_1_bra_perp = np.conj(psi_1_ket_perp.T)
psi_10_ket = 1/2*z_plus_ket + 1j*np.sqrt(3)/2*z_minus_ket
psi_10_perp_ket = 1/(1/2)*z_plus_ket - 1j/(np.sqrt(3)/2)*z_minus_ket
psi_10_perp_bra = np.conj(psi_10_perp_ket.T)
psi_11_ket = -1j/2*z_plus_ket + np.sqrt(3)/2*z_minus_ket
norm_perp = psi_10_perp_bra@psi_10_perp_ket
print(norm_perp)
amp = psi_10_perp_bra@psi_10_ket
print(amp)
amp2 = psi_10_perp_bra@psi_11_ket
print(amp2)