In [6]:
import numpy as np
import matplotlib as mpl
import matplotlib.pylab as plt
import seaborn as sns
%matplotlib inline
sns.set()
sns.set_context('poster')
sns.set_style('ticks')

In [7]:
def free_probs(N):
    return np.power(np.cos(np.arange(N+1)*.5*np.pi/N),2)
def power_cos_free(n,N):
    if n > N:
        raise ValueError("n = {n} cannot be greater than N = {N}".format(n=n,N=N))
    return np.cos(n*.5*np.pi/N)**(2)
def power_cos(n,N):
    if n > N:
        raise ValueError("n = {n} cannot be greater than N = {N}".format(n=n,N=N))
    return np.cos(.5*np.pi/N)**(2*n)
def gauss_state(x,x0,sigma):
    return np.power((2*np.pi*sigma**2),-1/4)*np.exp(-1*np.power(x-x0,2)/(4*sigma**2))
def zeno_probs(N):
    return np.power(np.cos(.5*np.pi/N)**2,np.arange(N+1))
def dot_data(ndots,sigma,N,xspace,yspace,y0,probf):
    ztot = 0
    for n in range(ndots):
        zeno_amp = probf(n,N)
        xvals = zeno_amp*np.power(gauss_state(xspace,10*n*sigma,sigma),2)
        yvals = np.power(gauss_state(yspace,y0,sigma),2)
        ztot += np.outer(yvals,xvals)
    return ztot

Free Evolution


In [8]:
f,axarr =  plt.subplots(nrows=2,ncols=2,figsize=(12,8))
for (p,arr) in zip(range(1,5),axarr.ravel()):
    probs = free_probs(10**p)
    #arr.plot(probs)
    arr.plot(probs,'o',markersize=5)
    arr.set_title(r"N = {0}".format(10**p))
    arr.set_xlabel(r"$Circulations$")
    arr.set_ylabel(r"$P_n(V)$")
f.tight_layout()
f.suptitle("No Postselection",y=1.04)
f.savefig("q_free_zeno_effect.png",dpi=f.dpi)



In [9]:
f = plt.figure()
sigma = 4
total_dots = 11
total_steps = 1
X = np.arange(-5*sigma, total_dots*(10)*sigma-5*sigma, 0.25)
Y = np.arange(-5*sigma, total_steps*10*sigma-5*sigma, 0.25)
Z = 0
n = 0
for N in np.power(10,np.array([1,5])):
    Z += dot_data(total_dots,sigma,N,X,Y,10*n*sigma,power_cos_free)
    n += 1
# Plot the surface.
plt.imshow(Z, cmap=mpl.cm.afmhot,origin='lower',extent=[-5*sigma,total_dots*10*sigma-5*sigma,-5*sigma,total_steps*10*sigma-5*sigma],vmin=0.6*np.max(Z),vmax = .9*np.max(Z))
xlabels_p = 10*np.arange(0,total_dots)*sigma
xlabels_s = range(total_dots)
ylabels_p = 10*np.arange(0,total_steps)*sigma
ylabels_s = np.power(10,np.array([1,5]))
plt.xticks(xlabels_p,xlabels_s)
plt.yticks(ylabels_p,ylabels_s)
plt.xlabel(r"$circulations\ (n)$")
plt.ylabel(r"$N$")
plt.title(r"No Postselection - $P_n(V)$",y=1.09)
f.savefig("q_free_zeno_effect_dots.png",dpi=f.dpi,bbox_inches='tight')


Quantum Zeno Effect


In [10]:
f,axarr =  plt.subplots(nrows=2,ncols=2,figsize=(12,8))
for (p,arr) in zip(range(1,5),axarr.ravel()):
    probs = zeno_probs(10**p)
    #arr.plot(probs)
    arr.plot(probs,'o',markersize=5)
    if p == 1:
        arr.set_ylim(0.65,1.05)
    else:
        arr.set_ylim(0.9,1.05)
    arr.set_title(r"N = {0}".format(10**p))
    arr.set_xlabel(r"$Circulations$")
    arr.set_ylabel(r"$P_n(V)$")
f.tight_layout()
f.suptitle("Quantum Zeno Effect",y=1.04)
f.savefig("q_zeno_effect.png",dpi=2*f.dpi)



In [11]:
f = plt.figure()
sigma = 4
total_dots = 11
total_steps = 2
X = np.arange(-5*sigma, total_dots*10*sigma-5*sigma, 0.25)
Y = np.arange(-5*sigma, total_steps*10*sigma-5*sigma, 0.25)
Z = 0
n = 0
for N in np.power(10,np.array([1,5])):
    Z += dot_data(total_dots,sigma,N,X,Y,10*n*sigma,power_cos)
    n += 1
# Plot the surface.
plt.imshow(Z, cmap=mpl.cm.afmhot,origin='lower',extent=[-5*sigma,total_dots*10*sigma-5*sigma,-5*sigma,total_steps*10*sigma-5*sigma],vmin=0.6*np.max(Z),vmax = .9*np.max(Z))
xlabels_p = 10*np.arange(0,total_dots)*sigma
xlabels_s = range(total_dots)
ylabels_p = 10*np.arange(0,total_steps)*sigma
ylabels_s = np.power(10,np.array([1,5]))
plt.xticks(xlabels_p,xlabels_s)
plt.yticks(ylabels_p,ylabels_s)
plt.xlabel(r"$circulations$")
plt.ylabel(r"$N$")
plt.title(r"Quantum Zeno Effect - $P_n(V)$",y=1.09)
f.savefig("q_zeno_effect_dots.png",dpi=f.dpi,bbox_inches='tight')



In [ ]:


In [ ]: