codexquantum-relative-phase-interference.py
quantum-relative-phase-interference.py
"""Plot phase-sensitive X probabilities against the corresponding mixture.
Tested with Python 3.14.4, NumPy 2.3.5, Matplotlib 3.10.7.
Build with: make _media/quantum-relative-phase-interference.png
Writes an opaque white PNG with this script's basename to the working directory.
"""
from pathlib import Path
import matplotlib.pyplot as plt
import numpy as np
def main():
plt.rcParams.update({
"font.size": 11,
"figure.facecolor": "white",
"axes.facecolor": "white",
"savefig.facecolor": "white",
"axes.spines.top": False,
"axes.spines.right": False,
})
phase = np.linspace(0, 2 * np.pi, 1001)
amplitude_zero = np.sqrt(3) / 2
amplitude_one = np.exp(1j * phase) / 2
plus = np.abs((amplitude_zero + amplitude_one) / np.sqrt(2))**2
minus = np.abs((amplitude_zero - amplitude_one) / np.sqrt(2))**2
fig, ax = plt.subplots(figsize=(8.8, 4.8))
fig.subplots_adjust(left=0.10, right=0.97, bottom=0.16, top=0.73)
fig.suptitle("Coherent amplitudes interfere; classical mixing removes the cross term",
fontsize=13, y=0.97)
fig.text(0.5, 0.865,
r"$|\psi_\phi\rangle=(\sqrt{3}/2)|0\rangle+(e^{i\phi}/2)|1\rangle$"
r" $p_\pm=1/2\pm(\sqrt{3}/4)\cos\phi$",
ha="center", fontsize=12)
ax.set_axisbelow(True)
ax.grid(color="#e4e4e4", linewidth=0.8)
ax.plot(phase, plus, color="#226f9c", lw=2.5, label=r"Superposition: $p_+$")
ax.plot(phase, minus, color="#b45a13", lw=2.5, label=r"Superposition: $p_-$")
ax.axhline(0.5, color="#454545", ls="--", lw=1.7,
label=r"Mixture: $p_+=p_-=1/2$")
for selected in (0, np.pi / 2, np.pi):
p_plus = np.abs((amplitude_zero + np.exp(1j * selected) / 2) / np.sqrt(2))**2
ax.scatter([selected, selected], [p_plus, 1 - p_plus], s=34,
c=["#226f9c", "#b45a13"], zorder=4, clip_on=False)
ax.set_xlim(0, 2 * np.pi)
ax.set_ylim(0, 1)
ax.set_xticks(np.linspace(0, 2 * np.pi, 5),
[r"$0$", r"$\pi/2$", r"$\pi$", r"$3\pi/2$", r"$2\pi$"])
ax.set_yticks(np.linspace(0, 1, 5))
ax.set_xlabel(r"Relative phase $\phi$ (radians)")
ax.set_ylabel("X-basis outcome probability")
ax.legend(loc="lower center", bbox_to_anchor=(0.5, 1.005),
frameon=False, fontsize=10, ncol=3)
fig.savefig(Path(__file__).with_suffix(".png").name,
dpi=100, facecolor="white", transparent=False)
plt.close(fig)
if __name__ == "__main__":
main()