In the previous chapters, we explored several complementary ways to describe the state and dynamics of a two-level quantum system. In the chapter on Two-Level Systems, pure states were written as vectors in \(\mathbb{C}^2\), whose components represent the complex probability amplitudes of the ground and excited states. Later, the Density Matrix Formalism was introduced, allowing us to treat not only coherent superpositions but also statistical mixtures and dissipative processes. Building on these tools, we derived the Optical Bloch Equations (OBEs) and applied them to laser cooling mechanisms such as optical molasses and magneto-optical traps.
In this chapter we introduce a third representation that is especially intuitive for visualizing two-level dynamics: the Bloch vector. This representation associates every pure or mixed state with a unique vector in real three-dimensional space, \(\mathbb{R}^3\). Pure states correspond to vectors of unit length on the surface of the Bloch sphere, while mixed states lie inside it. Bloch vectors are widely used in quantum optics, magnetic resonance, and quantum information processing, because they turn the abstract evolution of density matrices into the motion of a 3D vector obeying geometrically intuitive equations of motion.
The following sections will
define Bloch vectors and introduce their geometric interpretation,
relate Bloch vectors to the density matrix representation,
derive the Optical Bloch Equations in Bloch-vector form, and
use this framework to describe phenomena such as Rabi oscillations, relaxation, and dephasing in terms of simple rotations and contractions of a vector in \(\mathbb{R}^3\).
1. Definition of Bloch Vectors
Before deriving the Bloch equations in their vector form, we first introduce the Bloch vector itself. The goal is to rewrite the quantum state of a two-level system—whether pure or mixed—in terms of three real numbers that capture its coherence and population imbalance. This geometric representation will allow us to interpret quantum dynamics as trajectories on (or inside) a sphere, providing intuition that is often hidden in the complex amplitudes or density matrix elements.
We begin by considering the case of a pure state, where the Bloch vector has unit length and lies on the surface of the Bloch sphere.
1.1 Bloch vectors for pure states
Consider a coherent superposition of the excited and ground states, \[
\left\lvert \psi \right\rangle= C_e \left\lvert e \right\rangle+ C_g \left\lvert g \right\rangle,
\] with normalization \(|C_e|^2 + |C_g|^2 = 1\).
Any pure state of a two-level system can be parameterized using two angles \(\vartheta\) and \(\varphi\) as \[
\left\lvert \psi \right\rangle=
\begin{pmatrix}
C_e \\ C_g
\end{pmatrix}
=
\begin{pmatrix}
\cos\!\left(\frac{\vartheta}{2}\right) \\
e^{i\varphi}\sin\!\left(\frac{\vartheta}{2}\right)
\end{pmatrix},
\qquad
0 \le \vartheta \le \pi,\quad 0 \le \varphi < 2\pi,
\] where the amplitude \(C_e\) has been chosen real without loss of generality. Thus, every pure state corresponds uniquely to a point on the unit sphere parameterized by polar angle \(\vartheta\) and azimuthal angle \(\varphi\).
These angles define the Bloch vector\[
\vec{b} =
\begin{pmatrix}
u \\ v \\ w
\end{pmatrix}
=
\begin{pmatrix}
\cos\varphi \sin\vartheta \\
\sin\varphi \sin\vartheta \\
\cos\vartheta
\end{pmatrix},
\tag{1}\] a vector of unit length whose direction encodes the state of the system. The north pole (\(w = +1\)) corresponds to the excited state, the south pole (\(w = -1\)) to the ground state, and points on the equator correspond to equal-weight superpositions. The longitudinal component \(w = \cos\vartheta\) equals the inversion of the system, while the azimuthal angle \(\varphi\) represents the relative phase between \(C_e\) and \(C_g\).
Code
import numpy as npimport matplotlib.pyplot as pltfrom qutip import Blochfrom mpl_toolkits.mplot3d import Axes3D# --- Set up plot styling ---plt.rcParams['text.usetex'] =Trueplt.rcParams['font.family'] ='serif'plt.rcParams['font.size'] =14# IMPORTANT: QuTiP's Bloch sphere has a 90-degree rotation in the xy-plane# compared to standard physics convention!# # Standard physics: phi=0 points along +x axis# QuTiP Bloch: phi=0 points along +y axis (rotated 90° counterclockwise)## To add vectors to QuTiP Bloch: use phi_qutip = phi_standard + pi/2# To plot on matplotlib axes: use phi_standard# Create figure with three subplotsfig = plt.figure(figsize=(8, 3))# ===== Left Sphere: Vector pointing up =====ax1 = fig.add_subplot(131, projection='3d')b1 = Bloch(axes=ax1)b1.add_vectors([0, 0, 1]) # Vector pointing up (|0⟩ state)b1.vector_color = ['red']b1.vector_width =3b1.xlabel = [r'$u$', ''] # Positive and negative x-axis labelsb1.ylabel = [r'$v$', ''] b1.zlabel = [r'$w$', ''] # Using 'w' to match your imageb1.render()# ===== Middle Sphere: Vector pointing down =====ax2 = fig.add_subplot(132, projection='3d')b2 = Bloch(axes=ax2)b2.add_vectors([0, 0, -1]) # Vector pointing down (|1⟩ state)b2.vector_color = ['red']b2.vector_width =3b2.xlabel = [r'$u$', ''] # Positive and negative x-axis labelsb2.ylabel = [r'$v$', ''] b2.zlabel = [r'$w$', ''] # Using 'w' to match your imageb2.render()# ===== Right Sphere: Vector with angles θ and φ =====ax3 = fig.add_subplot(133, projection='3d')b3 = Bloch(axes=ax3)# Define angles in STANDARD spherical coordinatestheta = np.pi /4# 45 degrees from z-axisphi = np.pi /6# 30 degrees from x-axis (standard convention)# Calculate Cartesian coordinates for MATPLOTLIB (standard convention)x_mpl = np.sin(theta) * np.cos(phi)y_mpl = np.sin(theta) * np.sin(phi)z_mpl = np.cos(theta)# Calculate Cartesian coordinates for QUTIP (rotated by 90°)phi_qutip = phi + np.pi/2x_qutip = np.sin(theta) * np.cos(phi_qutip)y_qutip = np.sin(theta) * np.sin(phi_qutip)z_qutip = np.cos(theta)# Add the main vector to Bloch sphere (using QuTiP's rotated coordinates)b3.add_vectors([x_qutip, y_qutip, z_qutip])b3.vector_color = ['red']b3.vector_width =3b3.xlabel = [r'$u$', ''] # Positive and negative x-axis labelsb3.ylabel = [r'$v$', ''] b3.zlabel = [r'$w$', ''] # Using 'w' to match your imageb3.render()# Add angle annotations using matplotlib (standard coordinates)# Phi arc (azimuthal angle in xy-plane, from x-axis)phi_angles = np.linspace(-np.pi/2, phi, 30)arc_radius =0.3phi_arc_x = arc_radius * np.cos(phi_angles)phi_arc_y = arc_radius * np.sin(phi_angles)phi_arc_z = np.zeros_like(phi_angles)ax3.plot(phi_arc_x, phi_arc_y, phi_arc_z, 'b-', linewidth=2)ax3.plot([0, 0], [0, - arc_radius], [0, 0], 'b--', linewidth=1, alpha=0.5)# Theta arc (polar angle from z-axis)theta_angles = np.linspace(0, theta, 30)arc_radius_theta =0.4theta_arc_x = arc_radius_theta * np.sin(theta_angles) * np.cos(phi)theta_arc_y = arc_radius_theta * np.sin(theta_angles) * np.sin(phi)theta_arc_z = arc_radius_theta * np.cos(theta_angles)ax3.plot(theta_arc_x, theta_arc_y, theta_arc_z, 'g-', linewidth=2)# Projection lines (using matplotlib coordinates)ax3.plot([0, x_mpl], [0, y_mpl], [0, 0], 'k--', linewidth=1, alpha=0.5)ax3.plot([x_mpl, x_mpl], [y_mpl, y_mpl], [0, z_mpl], 'k--', linewidth=1, alpha=0.5)# Labelsax3.text(0.15, 0.08, 0, r'$\varphi$', fontsize=14, color='blue')ax3.text(0.15, 0.1, 0.4, r'$\vartheta$', fontsize=14, color='green')plt.tight_layout()plt.show()
Figure 1: Bloch-sphere representation of three pure states: (left) the excited state with Bloch vector along \(+w\); (middle) the ground state with Bloch vector along \(-w\); (right) a general superposition state with polar angle \(\vartheta\) and azimuthal angle \(\varphi\). The angles \(\vartheta\) and \(\varphi\) determine the population inversion and the relative phase between the state amplitudes.
The phase \(\varphi\) has a direct physical meaning: it determines the instantaneous phase of the atomic dipole oscillation relative to the external driving field. A Bloch vector pointing along \(+u\) corresponds to a dipole oscillating in phase with the field, whereas a vector along \(+v\) indicates a phase shift of \(\pi/2\). Thus, the geometry of the Bloch sphere mirrors the interference and coherence properties of the two-level system.
NoteWhy the angle \(\varphi\) represents the phase shift
To see why the azimuthal Bloch-sphere angle \(\varphi\) corresponds to the momentary phase difference between the atomic dipole oscillation and the external driving field, consider the expectation value of the dipole operator for the superposition state \[
\left\lvert \psi \right\rangle=
\cos\!\left(\frac{\vartheta}{2}\right)\left\lvert e \right\rangle+
e^{i\varphi}\sin\!\left(\frac{\vartheta}{2}\right)\left\lvert g \right\rangle.
\]
Dipole operator in the rotating frame
In the laboratory frame, the dipole operator connecting ground and excited states has the matrix form \[
\hat{\vec d} =
\begin{pmatrix}
0 & \vec d_{eg} \\
\vec d_{ge} & 0
\end{pmatrix}.
\] Transforming into the frame rotating at the laser frequency \(\omega_L\) yields \[
\hat{\vec D}
=
\hat U^\dagger \hat{\vec d}\,\hat U
=
\begin{pmatrix}
0 & \vec d_{eg} e^{i\omega_L t} \\
\vec d_{ge} e^{-i\omega_L t} & 0
\end{pmatrix},
\] where \[
\hat U = \mathrm{diag}(e^{-i\omega_L t/2},\, e^{i\omega_L t/2}).
\]
Assuming real dipole moments (\(\vec d_{eg} \in \mathbb{R}^3\)), the dipole oscillation becomes \[
\langle \hat{\vec D} \rangle
= 2 |C_e||C_g| \,\vec d_{eg}
\cos(\omega_L t + \varphi).
\]
Thus, the atomic dipole oscillates as a cosine with phase offset \(\varphi\).
Comparison to the driving field
The external electric field is \[
\vec E(t) = \vec E_0 \cos(\omega_L t).
\]
Comparing the two expressions shows that \(\varphi\) is precisely the relative phase between the atomic dipole oscillation and the driving field. A Bloch vector pointing along the \(+u\) direction (\(\varphi = 0\)) describes an in-phase oscillation, while the \(+v\) direction corresponds to a phase lead of \(\pi/2\).
1.2 General definition from the density matrix
The Bloch-vector representation naturally extends from pure states to all quantum states—pure or mixed—through its relation to the density matrix. Any \(2\times 2\) density operator can be expanded in the basis of the identity matrix and the Pauli matrices (cf. Two-Level Systems): \[
\hat{\rho}
= \frac{1}{2}\!\left(\mathbb{1} + \vec b\cdot\hat{\vec \sigma}\right)
= \frac{1}{2}\!\left(\mathbb{1} + u\,\hat\sigma_x + v\,\hat\sigma_y + w\,\hat\sigma_z\right).
\]
Writing this expression out explicitly shows how the components \(u\), \(v\), and \(w\) appear in matrix form: \[
\hat{\rho}
= \frac{1}{2}
\left[
\begin{pmatrix}1 & 0 \\[4pt] 0 & 1\end{pmatrix}
+ u\begin{pmatrix}0 & 1 \\[4pt] 1 & 0\end{pmatrix}
+ v\begin{pmatrix}0 & -i \\[4pt] i & 0\end{pmatrix}
+ w\begin{pmatrix}1 & 0 \\[4pt] 0 & -1\end{pmatrix}
\right],
\] which simplifies to \[
\hat{\rho}
= \frac{1}{2}
\begin{pmatrix}
1 + w & u - iv \\
u + iv & 1 - w
\end{pmatrix}.
\]
From this expression, the Bloch-vector components can be read off directly in terms of the density matrix elements:
\[
u = \rho_{eg} + \rho_{ge} = 2\,\Re(\rho_{eg}),
\tag{2}\]
\[
v = i(\rho_{eg} - \rho_{ge}) = 2\,\Im(\rho_{ge}),
\tag{3}\]
\[
w = \rho_{ee} - \rho_{gg}.
\tag{4}\]
For pure states, these formulas reduce exactly to the angular definitions given earlier (Equation 1).
Length of the Bloch vector and mixed states
For pure states, the Bloch vector always has unit length, \[
|\vec b| = 1,
\] because a pure state occupies a single point on the surface of the Bloch sphere.
Mixed states behave differently. The key feature of a mixed state is the reduction of coherence, meaning that the off-diagonal density-matrix elements become smaller in magnitude. Recall that positivity of the density operator requires \[
\rho_{ee}\rho_{gg} \,\ge\, |\rho_{eg}|^2,
\] with equality holding only for pure states.
Using Equation 2 – Equation 4, note that the transverse length of the Bloch vector satisfies \[
u^2 + v^2 = 4|\rho_{eg}|^2.
\] Thus any reduction in the coherence \(|\rho_{eg}|\) directly shrinks the vector’s projection onto the \(uv\)-plane.
Meanwhile, the population difference \(w = \rho_{ee} - \rho_{gg}\) obeys \[
-1 \le w \le 1,
\] but even if \(w\) remains large, a decrease in coherence (and therefore in \(u\) and \(v\)) pushes the Bloch vector inward.
Pure states:
Full coherence, \(|\rho_{eg}| = \sqrt{\rho_{ee}\rho_{gg}}\), giving \(|\vec b| = 1\).
The corresponding Bloch vector lies on the sphere.
Partially mixed states:
Reduced coherence shrinks the transverse components \(u\) and \(v\), pulling the vector inside the sphere.
Completely mixed state: \(\rho = \tfrac12\mathbb{1}\), so \(u=v=w=0\).
The Bloch vector is the zero vector, sitting at the center of the sphere.
This geometric behavior neatly reflects the underlying physics: loss of phase information (decoherence) literally collapses the state vector toward the origin.
ImportantConventions for inversion and Bloch coordinates
In this lecture script we have defined the population inversion as \[
w = \rho_{ee} - \rho_{gg},
\]
so that \(w=+1\) corresponds to the excited state and \(w=-1\) to the ground state.
This is the standard sign convention in atomic and optical Bloch–equation treatments.
However, many Bloch-sphere presentations—especially in quantum information— use the opposite sign for the vertical coordinate, placing the ground state at the north pole. In that convention the Bloch vector of the density matrix \[
\rho=\tfrac12(\mathbb 1 + x\sigma_x + y\sigma_y + z\sigma_z)
\] is given by \[
x = 2\Re(\rho_{ge}), \qquad
y = -2\Im(\rho_{ge}), \qquad
z = \rho_{gg} - \rho_{ee}.
\]
Consequently, \[
z = -\, w
\]
If a Bloch-sphere representation with \(z=+1\) for the ground state is desired, simply use \(z=-w\) when plotting or interpreting the inversion. All dynamical results remain unchanged—this is purely a matter of sign convention—but consistency is crucial when drawing Bloch spheres or labeling the poles.
2. The Optical Bloch Equations for Bloch Vectors
To describe how a two-level atom evolves in time under the influence of a laser field, we use the Optical Bloch Equations (OBEs). These equations govern the motion of the Bloch vector \[
\vec b = (u,\, v,\, w)^\mathsf{T},
\] and therefore give us a geometric picture of the atom’s dynamics.
Throughout this section, we assume that the Rabi frequency \(\Omega_0\) is real, which is the case for electric-dipole coupling to a classical light field.
2.1 Component form of the OBEs
Starting from the equations of motion for the density-matrix elements (Eqs. 9 and 10 in the section on OBEs) and the definitions of the Bloch-vector components (Equation 2–Equation 4), one obtains the following differential equations: \[
\begin{align}
\frac{d}{dt}u &= \delta\, v - \frac{\gamma}{2}\,u,\\
\frac{d}{dt}v &= -\delta\, u + \Omega_0 - \frac{\gamma}{2}\, v,\\
\frac{d}{dt}w &= -\,\Omega_0\, v - \gamma\,(w + 1).
\end{align}
\]
These three equations have clear physical interpretations:
The coherences\(u\) and \(v\) (the transverse components) rotate into each other at the detuning rate \(\delta\) and decay at rate \(\gamma/2\).
The inversion\(w\) is driven downward by spontaneous emission (term \(-\gamma(w+1)\)) and is also coupled to the \(v\)-component through the Rabi frequency \(\Omega_0\).
Thus the light field tries to drive the Bloch vector around, while damping processes continually pull it downward toward the ground state.
2.2 Compact vector form and the Rabi vector
It is convenient to collect the driving terms into a single vector called the Rabi vector: \[
\vec{\Omega}
=
\begin{pmatrix}
\Omega_0 \\
0 \\
\delta
\end{pmatrix}.
\tag{2.1}
\label{eq:rabivector}
\]
Using this definition, the three OBEs combine neatly into a single vector equation, \[
\frac{d\vec b}{dt}
= -\,\vec{\Omega}\times\vec b
\;-\;
\frac{\gamma}{2}
\begin{pmatrix}
u\\
v\\
2w+2
\end{pmatrix}.
\tag{5}\]
This form has two major advantages for developing intuition:
Light–atom interaction as precession
The term \[
-\,\vec{\Omega}\times\vec b
\] shows that the Bloch vector precesses around the Rabi vector, much like a magnetic moment precesses around a magnetic field.
Resonant driving (\(\delta = 0\)): precession mainly around the \(u\)-direction.
Large detuning: precession mainly around the \(w\)-direction.
Damping and relaxation
The second term \[
-\frac{\gamma}{2}(u,\, v,\, 2w+2)
\] pulls the Bloch vector inward and downward:
\(u\) and \(v\) decay at rate \(\gamma/2\) (loss of coherence).
\(w\) decays toward \(w=-1\), i.e., the atom eventually ends in the ground state.
Overall, Equation 5 describes a competition between coherent rotation (laser-driven) and incoherent relaxation (spontaneous emission), which together shape the motion of the Bloch vector inside the sphere.
3. Dynamics of Bloch Vectors without Damping
When damping is absent (i.e., \(\gamma = 0\)), the Optical Bloch Equations for the Bloch vector simplify considerably. Starting from Equation 5, we obtain
This equation has a very intuitive geometric meaning: the Bloch vector \(\vec{b}\) undergoes precession around the Rabi vector \(\vec{\Omega}\), analogous to how a spinning gyroscope precesses in a gravitational field. At every moment, the change in \(\vec{b}\) points along \(-\vec{\Omega} \times \vec{b}\)—a direction perpendicular to both vectors.
The magnitude of the precession (the generalized Rabi frequency) is
Figure 2: Resonant Bloch-vector precession for a system initially in the ground state.
When the laser is on resonance (\(\delta = 0\)), the Rabi vector points entirely along the \(u\)-axis: \[
\vec{\Omega} = (\Omega_0,\;0,\;0).
\]
If the atom starts in the ground state (\(w=-1\)), the Bloch vector begins at the south pole of the sphere and precesses around the horizontal \(u\)-axis. The resulting trajectory passes through both poles, and the corresponding excited-state population performs full-contrast Rabi oscillations.
This is precisely the resonant case discussed in the section on resonant Rabi oscillations.
Example 2: Off-resonant driving (\(\delta \neq 0\))
Figure 3: Bloch-vector motion for a detuned laser (\(\delta = \Omega_0\)) showing a tilted precession circle on the lower back side of the sphere.
For a finite detuning, e.g. \(\delta = \Omega_0\), the Rabi vector tilts away from the \(u\)-axis:
\[
\vec{\Omega} = (\Omega_0,\;0,\;\delta).
\]
The Bloch vector again starts at the south pole but now precesses around a tilted axis. The trajectory becomes a smaller circle on the Bloch sphere, reflecting the reduced oscillation amplitude of the excited-state population seen earlier in the section on off-resonant Rabi oscillations.
General case
In the most general situation—with arbitrary detuning and initial state—the Bloch vector always moves along a circular path on the surface of the Bloch sphere, centered on the direction of \(\vec{\Omega}\). The radius and orientation of this circle depend on the angle between the initial Bloch vector and the Rabi vector.
Regardless of these details, the motion is always a uniform precession at angular frequency \(\Omega_{\mathrm{eff}} = \sqrt{\delta^2 + \Omega_0^2}\).
Key Takeaways
Bloch vectors provide a geometric picture: Every pure or mixed state of a two-level system can be represented by a vector in \(\mathbb{R}^3\). Pure states lie on the surface of the Bloch sphere, while mixed states lie inside it.
Relation to the density matrix: The components of the Bloch vector are directly linked to the density-matrix elements: \[
u = 2\,\mathrm{Re}(\rho_{eg}), \quad
v = 2\,\mathrm{Im}(\rho_{ge}), \quad
w = \rho_{ee} - \rho_{gg}.
\] This allows a unified description of coherent superpositions and statistical mixtures.
Physical meaning of the components:
\(w\) corresponds to the population inversion.
\(u\) and \(v\) encode the coherence and the relative phase of the state.
The azimuthal angle \(\varphi\) of the Bloch vector represents the instantaneous phase difference between the atomic dipole and the driving field.
Optical Bloch Equations in Bloch-vector form: The evolution of \(\vec{b}\) is compactly written as \[
\frac{d\vec{b}}{dt} = -\vec{\Omega} \times \vec{b} - \frac{\gamma}{2}
\begin{pmatrix} u \\ v \\ 2w+2 \end{pmatrix},
\] where \(\vec{\Omega}\) is the Rabi vector. This form makes the geometric interpretation of precession and relaxation transparent.
Dynamics without damping: In the absence of relaxation (\(\gamma = 0\)), the Bloch vector precesses uniformly around the Rabi vector at the generalized Rabi frequency \(\Omega_{\mathrm{eff}} = \sqrt{\delta^2 + \Omega_0^2}\).
Detuned driving (\(\delta \neq 0\)) leads to reduced oscillation amplitude and tilted precession circles.
Intuitive visualization: The Bloch-sphere representation turns abstract density-matrix dynamics into a simple, visual 3D motion of a vector, making concepts such as Rabi oscillations, detuning, and decoherence easier to grasp.