Skip to content

Jupyter notebook mode

from qutip import *
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['figure.dpi'] = 150

Lecture 7.2: Wigner functions of mixed states


Interactive notebook

In this interactive notebook, we will explore the Wigner quasiprobability distributions of "mixed states" (or, more accurately, of mixed ensembles).


7.2.1. Example: Cat state vs. mixture of coherent states

First: a reminder of what the Wigner function of two coherent states at with opposite momentum look like:

N=30
rho1 = coherent_dm(N,3j)
rho2 = coherent_dm(N,-3j)

fig,ax = plt.subplots(1,2, figsize=(12,6))
plot_wigner(rho1, fig=fig, ax=ax[0])
ax[0].set_title(r"Coherent state $\alpha = 3i$")
plot_wigner(rho2, fig=fig, ax=ax[1])
ax[1].set_title(r"Coherent state $\alpha = -3i$")
plt.show()

svg

Now, let's compare a cat state and a mixed state.

Reminder:

a cat state is a superposition of the wave functions:

whereas a 50/50 "mixed" state is defined by the sum of the density matrices:

N=30
rho1 = coherent_dm(N,3j)
rho2 = coherent_dm(N,-3j)
mixed = rho1 + rho2

psi1 = coherent(N,3j)
psi2 = coherent(N,-3j)
cat = psi1 + psi2

fig,ax = plt.subplots(1,2, figsize=(12,6))
plot_wigner(cat, fig=fig, ax=ax[0])
ax[0].set_title("Wigner function of \n a cat state of $\\alpha$ and $-\\alpha$")
plot_wigner(mixed, fig=fig, ax=ax[1])
ax[1].set_title("Wigner function of \n a mixed state of $\\alpha$ and $-\\alpha$")
plt.show()

svg

What is the difference? The "fringes" are gone! Similar to the coherences in the off-diagonal entries of the density matrix, the fringes of the cat state above are an indication of the "coherence" of the quantum superposition.

Without this "coherence", the two "wave packets" do not interfere, as you can see if we plot :

# A hack to calculate the probability distribution
x = np.linspace(-7.5,7.5,500)
wigner_mixed = wigner(mixed,x,x)
wigner_cat = wigner(cat,x,x)

prob_mixed = np.sum(wigner_mixed,axis=0)
prob_cat = np.sum(wigner_cat,axis=0)

# Now the plot
fig,ax = plt.subplots(1,2, figsize=(12,4))
ax[0].plot(x,prob_cat)
ax[0].set_title("Cat state")
ax[1].plot(x,prob_mixed)
ax[1].set_title("Mixed state")
ax[0].set_yticks([])
ax[1].set_yticks([])
ax[0].axhline(0,ls=':', c='grey')
ax[1].axhline(0,ls=':', c='grey')
ax[0].set_xlabel("$x$")
ax[1].set_xlabel("$x$")
ax[0].set_ylabel(r"$|\psi(x)|^2$")
ax[1].set_ylabel(r"$|\psi(x)|^2$")
plt.show()

svg

Of course, the proper interpretation of the lack of interference is, of course, that in the experiment there are not two wave-packets, but instead just one, and then we repeat the experiment over and over again, each time with only one coherent state of either or .

7.2.2. Example: Superposition vs. mixture of 0 and 1 photons

N=30
rho1 = fock_dm(N,0)
rho2 = fock_dm(N,1)
mixed = rho1 + rho2

psi1 = fock(N,0)
psi2 = fock(N,1)
sup = psi1 + psi2

fig,ax = plt.subplots(1,2, figsize=(12,6))
plot_wigner(sup, fig=fig, ax=ax[0])
ax[0].set_title("Superposition of 0 and 1 photons")
plot_wigner(mixed, fig=fig, ax=ax[1])
ax[1].set_title("Mixed state of 0 and 1 photons")
plt.show()

svg

And now the "wave function" of the photon.

Reminder: What is the "wave function" of a photon?

A classical electromagnetic wave is a standing wave whose electric field oscillates in time: for example, for a given mode, we may have at a given fixed position in space an electric field with the following component in the z-direction: where is a unit vector in the direction. Note the similarity to the mass-on-a-spring, which oscillates in position: In the mass-spring harmonic oscillator, we have a momentum that oscillates out of phase with the position: In electromagnetism, there is also a magnetic field that also oscillates out of phase with the electric field :

(Note that if the above belongs to a wave propagating in the direction, then the magnetic field points in the direction...) The mapping from the mass-spring harmonic oscillator to the photon harmonic oscillator in this case is then: - position electric field - momentum magnetic field

Using this logic, for a photon, one can interpret the axes of the Wigner plots above as:

  • Real part of
  • Imaginary part of

The probability distributions of position and momentum are then replaced with probability distributions of and :

# A hack to calculate the probability distribution
x = np.linspace(-7.5,7.5,500)
wigner_mixed = wigner(mixed,x,x)
wigner_sup = wigner(sup,x,x)

prob_mixed = np.sum(wigner_mixed,axis=0)
prob_cat = np.sum(wigner_sup,axis=0)

# Now the plot
fig,ax = plt.subplots(1,2, figsize=(12,4))
ax[0].plot(x,prob_cat)
ax[0].set_ylabel(r"$|\psi(E_z)|^2$")
ax[0].set_title("Superposition of 0 and 1 photons")
ax[1].plot(x,prob_mixed)
ax[1].set_ylabel(r"Probability density of measuring $E_z$")
ax[1].set_title(r"Mixture of 0 and 1 photons")
ax[0].set_yticks([])
ax[1].set_yticks([])
ax[0].set_xlabel("$E_z$")
ax[1].set_xlabel("$E_z$")
ax[0].axhline(0,ls=':', c='grey')
ax[1].axhline(0,ls=':', c='grey')
plt.show()

svg