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)
#S_x Calculation
psi_ket=1/2*z_plus_ket+1j*np.sqrt(3)/2*z_minus_ket
#print(psi_ket)
spin_up=x_plus_bra@psi_ket
#print(spin_up)
spin_down=x_minus_bra@psi_ket
#print(spin_down)
spin_up_prob=spin_up*np.conj(spin_up)
#print(spin_up_prob)
spin_down_prob=spin_down*np.conj(spin_down)
#print(spin_down_prob)
print("a) <S_x> =",spin_up_prob-spin_down_prob,"hbar/2.")
#S_y Calculation
psi_ket=1/2*z_plus_ket+1j*np.sqrt(3)/2*z_minus_ket
#print(psi_ket)
spin_up=y_plus_bra@psi_ket
#print(spin_up)
spin_down=y_minus_bra@psi_ket
#print(spin_down)
spin_up_prob=spin_up*np.conj(spin_up)
#print(spin_up_prob)
spin_down_prob=spin_down*np.conj(spin_down)
#print(spin_down_prob)
print("b) <S_y> =",spin_up_prob-spin_down_prob,"hbar/2.")
#S_z Calculation
psi_ket=1/2*z_plus_ket+1j*np.sqrt(3)/2*z_minus_ket
#print(psi_ket)
spin_up=z_plus_bra@psi_ket
#print(spin_up)
spin_down=z_minus_bra@psi_ket
#print(spin_down)
spin_up_prob=spin_up*np.conj(spin_up)
#print(spin_up_prob)
spin_down_prob=spin_down*np.conj(spin_down)
#print(spin_down_prob)
print("c) <S_z> =",spin_up_prob-spin_down_prob,"hbar/2.")
print("d) The state shows that The particles are aligned towards the -y and -z axes at sqrt(3)/2 for -y and .5 for -z.")
print("e) These results do match with my written hw, but with so much time saved from copying my code from <S_x>.")
a) <S_x> = [[0.+0.j]] hbar/2.
b) <S_y> = [[-0.8660254+0.j]] hbar/2.
c) <S_z> = [[-0.5+0.j]] hbar/2.
d) The state shows that The particles are aligned towards the -y and -z axes at sqrt(3)/2 for -y and .5 for -z.
e) These results do match with my written hw, but with so much time saved from copying my code from <S_x>.
psi_11_ket=-1j/2*z_plus_ket+np.sqrt(3)/2*z_minus_ket
psi_11_bra=np.conj(psi_11_ket.T)
psi_10_ket=1/2*z_plus_ket+1j*np.sqrt(3)/2*z_minus_ket
psi_amp=psi_11_bra@psi_10_ket
print("a) Amplitude =",psi_amp)
psi_prob=psi_amp*np.conj(psi_amp)
print("b) Probability =",psi_prob)
print("c) The probability shows that the different states are opposites of one another.")
a) Amplitude = [[0.+1.j]]
b) Probability = [[1.+0.j]]
c) The probability shows that the different states are opposites of one another.
psi_10_ket=1/2*z_plus_ket+1j*np.sqrt(3)/2*z_minus_ket
psi_perp_ket=2*z_plus_ket-1j/(np.sqrt(3)/2)*z_minus_ket
psi_perp_bra=np.conj(psi_perp_ket.T)
psi_11_ket=-1j/2*z_plus_ket+np.sqrt(3)/2*z_minus_ket
psi_10_amp=psi_perp_bra@psi_10_ket
print("a) psi_10 Amplitude =",psi_10_amp)
psi_11_amp=psi_perp_bra@psi_11_ket
print("b) psi_11 Amplitude =",psi_11_amp)
print("c) The state of the new vector is perpendicular to the state of the psi_11 vector.")
psi_perp_norm=psi_perp_bra@psi_perp_ket
print("d) psi_perp_norm Amplitude =",psi_perp_norm)
a) psi_10 Amplitude = [[0.+0.j]]
b) psi_11 Amplitude = [[0.+0.j]]
c) The state of the new vector is perpendicular to the state of the psi_11 vector.
d) psi_perp_norm Amplitude = [[5.33333333+0.j]]