Test the use of e_ops parameter in dictionary form

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


In [1]:
%matplotlib inline

In [2]:
from scipy import *

In [3]:
from qutip import *

In [4]:
H = 0.5 * 2 * pi * sigmax()

In [5]:
psi0 = basis(2, 0)

In [6]:
tlist = linspace(0, 10, 1000)

In [7]:
e_ops = [sigmax(), sigmay(), sigmaz()]

In [8]:
e_ops_dict = {r'$\sigma_x$': sigmax(), r'$\sigma_y$': sigmay(), r'$\sigma_z$': sigmaz()}

Test mesolve


In [9]:
c_ops = [sqrt(0.1) * sigmaz()]

In [10]:
result = mesolve(H, psi0, tlist, c_ops, e_ops)

In [11]:
fig, ax = plt.subplots(1,1)

for n, e in enumerate(result.expect):
    ax.plot(tlist, e, label=["sx", "sy", "sz"][n])
    
ax.legend();



In [12]:
result = mesolve(H, psi0, tlist, c_ops, e_ops_dict)

In [13]:
fig, ax = plt.subplots(1,1)

for key, e in result.expect.items():
    ax.plot(tlist, e, label=key)
    
ax.legend();


Test sesolve


In [14]:
result = sesolve(H, psi0, tlist, e_ops)

In [15]:
fig, ax = plt.subplots(1,1)

for n, e in enumerate(result.expect):
    ax.plot(tlist, e, label=["sx", "sy", "sz"][n])
    
ax.legend();


/usr/local/lib/python3.3/dist-packages/numpy/core/numeric.py:460: ComplexWarning: Casting complex values to real discards the imaginary part
  return array(a, dtype, copy=False, order=order)

In [16]:
result = sesolve(H, psi0, tlist, e_ops_dict)

In [17]:
fig, ax = plt.subplots(1,1)

for key, e in result.expect.items():
    ax.plot(tlist, e, label=key)
    
ax.legend();


Test mcsolve


In [18]:
result = mcsolve(H, psi0, tlist, c_ops, e_ops, ntraj=15, options=Odeoptions(gui=False))

In [19]:
fig, ax = plt.subplots(1,1)

for n, e in enumerate(result.expect):
    ax.plot(tlist, e, label=["sx", "sy", "sz"][n])
    
ax.legend();



In [20]:
result = mcsolve(H, psi0, tlist, c_ops, e_ops_dict, ntraj=5, options=Odeoptions(gui=False))

In [21]:
fig, ax = plt.subplots(1,1)

for key, e in result.expect.items():
    ax.plot(tlist, e, label=key)
    
ax.legend();



In [ ]: