import numpy as np
# Put cursor in this cell and hit SHIFT+ENTER
A = np.array([[1, 2]])
B = np.array([[3], [5]])
print(A)
print(B)
print(A @ B) #inner product
[[1 2]]
[[3]
[5]]
[[13]]
# Solution
print(A.T, B.T)
print(B.T@A.T) #innerproduct
print(A.T@B.T) #outerproduct
[[1]
[2]] [[3 5]]
[[13]]
[[ 3 5]
[ 6 10]]
# Solution
print(1j*1j)
print((1+3j)*(3-7j))
C = 3 + 4j
print(C*np.conj(C))
(-1+0j)
(24+2j)
(25+0j)
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)
# z-axis
print("z_plus normalized " , z_plus_bra@z_plus_ket)
print(z_minus_bra@z_minus_ket)
print("z_plus and z_minues orthogonal?", z_plus_bra@z_minus_ket)
print(z_minus_bra@z_plus_ket)
# x-axis
print(x_plus_bra@x_plus_ket)
print(x_minus_bra@x_minus_ket)
print("x_plus and x_minus orthogonal", x_plus_bra@x_minus_ket)
print(x_minus_bra@x_plus_ket)
# y-axis
print(y_plus_bra@y_plus_ket)
print(y_minus_bra@y_minus_ket)
print("y_plus and y_minus orthogonal", y_plus_bra@y_minus_ket)
print(y_minus_bra@y_plus_ket)
z_plus normalized [[1]]
[[1]]
z_plus and z_minues orthogonal? [[0]]
[[0]]
[[1.]]
[[1.]]
x_plus and x_minus orthogonal [[-2.23711432e-17]]
[[-2.23711432e-17]]
[[1.+0.j]]
[[1.+0.j]]
[[0.+0.j]]
[[0.+0.j]]
A = x_plus_bra@z_plus_ket
print(A)
probA= A*np.conj(A)
print("Probability of measuring spin-up alonf x-axis for +z state", probA)
B = x_plus_bra@y_plus_ket
print(B)
print(B*np.conj(B))
[[0.70710678]]
Probability of measuring spin-up alonf x-axis for +z state [[0.5]]
[[0.5-0.5j]]
[[0.5+0.j]]
psi_ket = 1j/np.sqrt(3)*z_plus_ket + np.sqrt(2/3)*z_minus_ket
print(psi_ket)
print(z_minus_bra @ psi_ket)
A = z_plus_bra @ psi_ket
B = z_minus_bra@psi_ket
print(A[0],B[0])
Sz_minus_prob = np.conj(A)*A
Sz_plus_prob = np.conj(B)*B
print(Sz_plus_prob, Sz_minus_prob)
Sz_expect = Sz_plus_prob - Sz_minus_prob
print("<S_z> = ", Sz_expect, "hbar/2")
Sz_sq_expect = Sz_plus_prob + Sz_minus_prob
print("<S_z^2> =", Sz_sq_expect, "hbar^2/4")
Delta_Sz = np.sqrt(Sz_sq_expect - Sz_expect**2)
print("Delta S_z = ", Delta_Sz, "hbar/2")
print(Delta_Sz - 2*np.sqrt(2)/3)
[[0. +0.57735027j]
[0.81649658+0.j ]]
[[0.81649658+0.j]]
[0.+0.57735027j] [0.81649658+0.j]
[[0.66666667+0.j]] [[0.33333333+0.j]]
<S_z> = [[0.33333333+0.j]] hbar/2
<S_z^2> = [[1.+0.j]] hbar^2/4
Delta S_z = [[0.94280904+0.j]] hbar/2
[[-1.11022302e-16+0.j]]