QuTiP development notebook for testing distribution modules

Copyright (C) 2011 and later, Paul D. Nation & Robert J. Johansson

In [1]:
%pylab inline
In [2]:
from qutip import *
In [3]:
from qutip.distributions import *
In [4]:
N = 20
alpha = 2.0 + 2j
rho = (coherent(N, alpha) + coherent(N, -alpha)).unit()

Wigner distribution

In [5]:
w = WignerDistribution(rho, extent=[[-10, 10], [-10, 10]])
In [6]:
w.visualize();

Husimi Q function

In [7]:
q = QDistribution(rho, extent=[[-10, 10], [-10, 10]])
In [8]:
q.visualize(style="surface");

Two-mode quadrature correlations

In [9]:
alpha = 1.0
In [10]:
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
In [11]:
p = TwoModeQuadratureCorrelation(psi)
In [12]:
p.visualize();
In [13]:
p = TwoModeQuadratureCorrelation(rho)
In [14]:
p.visualize();
/usr/local/lib/python2.7/dist-packages/numpy/ma/core.py:2641: ComplexWarning: Casting complex values to real discards the imaginary part
  _data = np.array(data, dtype=dtype, copy=copy, subok=True, ndmin=ndmin)
In [15]:
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]);

Marginal distribution

In [16]:
alpha = 2.0
rho = (coherent(N, alpha) + coherent(N, -alpha)).unit()
In [17]:
w = WignerDistribution(rho)
In [18]:
w.visualize();
In [19]:
wx = w.marginal(dim=0)
In [20]:
fig, ax = wx.visualize();
In [21]:
wy = w.marginal(dim=1)
In [22]:
fig, ax = wy.visualize();
In [23]:
wx = w.project(dim=1)
In [24]:
fig, ax = wx.visualize();

Harmonic oscillator wave function

In [25]:
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))  
/usr/local/lib/python2.7/dist-packages/numpy/core/numeric.py:331: ComplexWarning: Casting complex values to real discards the imaginary part
  return array(a, dtype, copy=False, order=order)
In [26]:
psi = coherent(50, 4.0)
wf = HarmonicOscillatorWaveFunction(psi, 1.0, extent=[-15, 15])
wf.visualize();

Software versions

In [27]:
from qutip.ipynbtools import version_table
version_table()
Out[27]:
SoftwareVersion
Cython0.19-dev
SciPy0.13.0.dev-38ad5d2
QuTiP2.3.0.dev-2d32599
Python2.7.3 (default, Sep 26 2012, 21:51:14) [GCC 4.7.2]
IPython0.13
OSposix [linux2]
Numpy1.8.0.dev-bd7104c
matplotlib1.3.x
Wed Apr 24 16:22:56 2013 JST
In [27]: