QuTiP example: Energy-levels of a quantum systems as a function of a single parameter

J.R. Johansson and P.D. Nation

For more information about QuTiP see http://qutip.org


In [1]:
%pylab inline


Populating the interactive namespace from numpy and matplotlib

In [2]:
from qutip import *

Energy spectrum of three coupled qubits


In [3]:
def compute(w1list, w2, w3, g12, g13):

    # Pre-compute operators for the hamiltonian
    sz1 = tensor(sigmaz(), qeye(2), qeye(2))
    sx1 = tensor(sigmax(), qeye(2), qeye(2))

    sz2 = tensor(qeye(2), sigmaz(), qeye(2))
    sx2 = tensor(qeye(2), sigmax(), qeye(2))

    sz3 = tensor(qeye(2), qeye(2), sigmaz())
    sx3 = tensor(qeye(2), qeye(2), sigmax())
  
    idx = 0
    evals_mat = zeros((len(w1list),2*2*2))
    for w1 in w1list:

        # evaluate the Hamiltonian
        H = w1 * sz1 + w2 * sz2 + w3 * sz3 + g12 * sx1 * sx2 + g13 * sx1 * sx3

        # find the energy eigenvalues of the composite system
        evals, ekets = H.eigenstates()

        evals_mat[idx,:] = real(evals)

        idx += 1

    return evals_mat

In [4]:
w1  = 1.0 * 2 * pi   # atom 1 frequency: sweep this one
w2  = 0.9 * 2 * pi   # atom 2 frequency
w3  = 1.1 * 2 * pi   # atom 3 frequency
g12 = 0.05 * 2 * pi   # atom1-atom2 coupling strength
g13 = 0.05 * 2 * pi   # atom1-atom3 coupling strength

w1list = linspace(0.75, 1.25, 50) * 2 * pi # atom 1 frequency range

In [5]:
evals_mat = compute(w1list, w2, w3, g12, g13)

In [6]:
figure(figsize=(12,6))

for n in [1,2,3]:
    plot(w1list / (2*pi), (evals_mat[:,n]-evals_mat[:,0]) / (2*pi), 'b')

xlabel('Energy splitting of atom 1')
ylabel('Eigenenergies')
title('Energy spectrum of three coupled qubits');


Versions


In [7]:
from qutip.ipynbtools import version_table

version_table()


Out[7]:
SoftwareVersion
Cython0.20.1post0
QuTiP3.0.0.dev-526f1d2
OSposix [linux]
IPython2.0.0
Numpy1.8.1
matplotlib1.3.1
Python3.4.1 (default, Jun 9 2014, 17:34:49) [GCC 4.8.3]
SciPy0.13.3
Wed Jun 25 14:28:49 2014 JST