Copyright (C) 2011 and later, Paul D. Nation & Robert J. Johansson
%pylab inline
from qutip import *
from qutip.distributions import *
N = 20
alpha = 2.0 + 2j
rho = (coherent(N, alpha) + coherent(N, -alpha)).unit()
w = WignerDistribution(rho, extent=[[-10, 10], [-10, 10]])
w.visualize();
q = QDistribution(rho, extent=[[-10, 10], [-10, 10]])
q.visualize(style="surface");
alpha = 1.0
psi = (tensor(coherent(N, alpha), basis(N, 0)) + tensor(basis(N, 0), coherent(N, -alpha))).unit() # superposition
rho = (ket2dm(tensor(coherent(N, alpha), basis(N, 0))) + ket2dm(tensor(basis(N, 0), coherent(N, -alpha)))).unit() # mixture
p = TwoModeQuadratureCorrelation(psi)
p.visualize();
p = TwoModeQuadratureCorrelation(rho)
p.visualize();
fig, axes = subplots(1, 2, figsize=(12, 5))
w0 = WignerDistribution(ptrace(rho, 0))
w1 = WignerDistribution(ptrace(rho, 1))
w0.visualize(fig=fig, ax=axes[0]);
w1.visualize(fig=fig, ax=axes[1]);
alpha = 2.0
rho = (coherent(N, alpha) + coherent(N, -alpha)).unit()
w = WignerDistribution(rho)
w.visualize();
wx = w.marginal(dim=0)
fig, ax = wx.visualize();
wy = w.marginal(dim=1)
fig, ax = wy.visualize();
wx = w.project(dim=1)
fig, ax = wx.visualize();
M=8
fig, ax = subplots(M, 1, figsize=(10, 12), sharex=True)
for n in range(M):
psi = fock(N, n)
wf = HarmonicOscillatorWaveFunction(psi, 1.0, extent=[-10, 10])
wf.visualize(fig=fig, ax=ax[M-n-1], show_ylabel=False, show_xlabel=(n == 0))
psi = coherent(50, 4.0)
wf = HarmonicOscillatorWaveFunction(psi, 1.0, extent=[-15, 15])
wf.visualize();
from qutip.ipynbtools import version_table
version_table()