Two-qubit entanglement by measurement

Ondrej Cernotik

23 February 2015

Using a cavity mode dispersively coupled to two qubits and measuring the output field, it is possible to entangle the two qubits. The stochastic master equation for the qubits, in the presence of thermal noise for the cavity field, takes the form $$ \mathrm{d}\rho = \frac{2\chi^2}{\kappa}(2\bar{n}+1)\mathcal{D}[\sigma_z^1+\sigma_z^2]\rho\mathrm{d}t+\sqrt{\frac{2\chi^2}{\kappa(2\bar{n}+1)}}\mathcal{H}[\sigma_z^1+\sigma_z^2]\rho\mathrm{d}W, $$ where we assume that both qubits have the same coupling to the cavity. Moreover, the measurement current evolves according to the equation $$ \mathrm{d}I = \sqrt{\frac{8\chi^2}{\kappa(2\bar{n}+1)}}(\langle\sigma_z^1\rangle+\langle\sigma_z^2\rangle)\mathrm{d}t+\mathrm{d}W. $$ See the file Dispersive qubit readout.ipynb and Ref. [1] for details.

Following Ref. [2], the entanglement is generated by letting the system evolve from the state $|\psi_0\rangle = \frac{1}{2}(|0\rangle+|1\rangle)\otimes(|0\rangle+|1\rangle)$ for a time $T_m$ and looking at the integrated current $J(T_m) = \int_0^{T_m}\mathrm{d}t\,I(t)$; if the magnitude of the integrated current is smaller than a threshold value $\nu$, $|J|\le\nu$, the resulting state is the Bell state $|\Psi_+\rangle=\frac{1}{\sqrt{2}}(|01\rangle+|10\rangle)$; otherwise, it is one of the separable states $|00\rangle$, $|11\rangle$. Below, we investigate how the presence of thermal noise affects the resulting entanglement, as quantified by the logarithmic negativity [3], and the success probability of the postselection procedure, extending the results of Ref. [2].

[1] O. Cernotik, D. Vasilyev, and K. Hammerer, arXiv:1503.07484.

[2] C. L. Hutchison, J. Gambetta, A. Blais, and F. K. Wilhelm, Canadian Journal of Physics 87, 225 (2009).

[3] G. Vidal and R. F. Werner, Physical Review A 65, 032314 (2002).


In [1]:
%matplotlib inline


Vendor:  Continuum Analytics, Inc.
Package: mkl
Message: trial mode expires in 29 days

In [2]:
from qutip import qeye, sigmaz, tensor, ket2dm, basis, smesolve, Options, partial_transpose
from matplotlib.pyplot import subplots, plot
from numpy import linspace, cumsum, log2, sqrt, zeros, real

In [3]:
def logneg(rho):
    #***** function logneg(rho) *****
    #Calculates the logarithmic negativity of a given state.
    #Input parameters:
    #      rho: quantum state.
    #Returns:
    #      EN: logarithmic negativity.
    rhoPT = partial_transpose(rho, [0,1])
    EN = log2((rhoPT*rhoPT.dag()).sqrtm().tr())
    return EN

In [4]:
def entanglement(chi, kappa, nbar, Ntraj, Nsteps, Nsub, tmax):
    #***** function entanglement() *****
    #Used to calculate the logarithmic negativity, corresponding
    #success probability and histograms of integrated currents
    #for given system parameters.
    #Input parameters:
    #      chi: qubit-cavity coupling,
    #      kappa: cavity measurement and decay rate,
    #      nbar: number of thermal excitations,
    #      Ntraj: number of generated quantum trajectories,
    #      Nsteps: number of time steps in the time evolution,
    #      Nsub: number of substeps,
    #      tmax: measurement time.
    #Returns:
    #      E: logarithmic negativity after postselection.
    #         E[i] gives the logarithmic negativity of the state
    #         obtained by using the threshold value i.
    #      Psucc: success probability of the postselection,
    #             Psucc[i] gives probability with threshold i.
    #      M: data for plotting histogram of the integrated current.
    
    #***** System operators *****
    tlist = linspace(0, tmax, Nsteps)
    dt = tmax/float(Nsteps)
    Id2 = qeye(2)
    sz1 = tensor(sigmaz(), Id2)
    sz2 = tensor(Id2, sigmaz())
    
    H = 0*tensor(Id2, Id2)
    c_op = [sqrt(8*chi*chi*nbar*(nbar+1)/(kappa*(2*nbar+1)))*(sz1+sz2)]
    sc_op = [sqrt(2*chi*chi/(kappa*(2*nbar+1)))*(sz1+sz2)]
    e_op = [sz1+sz2]
    
    ket_plus = (basis(2,0)+basis(2,1)).unit()
    rho_plus = ket2dm(ket_plus)
    rho0 = tensor(rho_plus, rho_plus)
    
    #***** Quantum trajectories *****
    opts = Options(store_states = True)
    
    E = zeros(100)
    Psucc = zeros(100)
    M = zeros(Ntraj)
    t = zeros(20)
    for i in xrange(0, 20):
        t[i] = (i+1)*5
        
    for i in xrange(0, Ntraj):
        print i
        sol = smesolve(H, rho0, tlist, c_op, sc_op, e_op, nsubsteps=Nsub, method='homodyne', solver='fast-milstein',
                       store_measurement=True, options=opts)
        meas = dt*real(cumsum(sol.measurement[0][:,0]))
        
        M[i] = meas[Nsteps-1]
        En = logneg(sol.states[0][Nsteps-1])
        for j in xrange(0,100):
            if (abs(M[i])<=float(j)):
                E[j] += En
                Psucc[j] += 1
                
    for i in xrange(1,100):
        E[i] /= Psucc[i]
    Psucc /= float(Ntraj)
    E[0] = E[1]
    
    return E, Psucc, M

In [5]:
chi = 0.1
kappa = 1.
nbar = 1.
Ntraj = 200
Nsteps = 1000
Nsub = 250
tmax = 50

E, P, M = entanglement(chi, kappa, nbar, Ntraj, Nsteps, Nsub, tmax)


0
Total run time:  11.23s
1
Total run time:  11.20s
2
Total run time:  10.90s
3
Total run time:  10.80s
4
Total run time:  10.69s
5
Total run time:  11.63s
6
Total run time:  10.87s
7
Total run time:  12.35s
8
Total run time:  11.55s
9
Total run time:  10.71s
10
Total run time:  11.01s
11
Total run time:  11.08s
12
Total run time:  11.30s
13
Total run time:  11.17s
14
Total run time:  11.39s
15
Total run time:  13.05s
16
Total run time:  12.15s
17
Total run time:  10.87s
18
Total run time:  10.66s
19
Total run time:  10.59s
20
Total run time:  12.47s
21
Total run time:  10.94s
22
Total run time:  13.23s
23
Total run time:  10.75s
24
Total run time:  10.57s
25
Total run time:  10.53s
26
Total run time:  10.54s
27
Total run time:  10.55s
28
Total run time:  10.52s
29
Total run time:  10.49s
30
Total run time:  10.76s
31
Total run time:  10.56s
32
Total run time:  11.07s
33
Total run time:  10.57s
34
Total run time:  10.57s
35
Total run time:  10.56s
36
Total run time:  10.59s
37
Total run time:  10.58s
38
Total run time:  10.63s
39
Total run time:  10.68s
40
Total run time:  10.59s
41
Total run time:  10.73s
42
Total run time:  11.19s
43
Total run time:  11.26s
44
Total run time:  10.78s
45
Total run time:  10.65s
46
Total run time:  10.85s
47
Total run time:  10.57s
48
Total run time:  10.57s
49
Total run time:  10.63s
50
Total run time:  10.99s
51
Total run time:  10.71s
52
Total run time:  10.62s
53
Total run time:  10.64s
54
Total run time:  10.62s
55
Total run time:  10.78s
56
Total run time:  10.89s
57
Total run time:  11.36s
58
Total run time:  10.55s
59
Total run time:  11.25s
60
Total run time:  11.61s
61
Total run time:  11.55s
62
Total run time:  11.11s
63
Total run time:  11.41s
64
Total run time:  11.07s
65
Total run time:  10.98s
66
Total run time:  10.83s
67
Total run time:  10.74s
68
Total run time:  11.02s
69
Total run time:  10.96s
70
Total run time:  11.56s
71
Total run time:  10.69s
72
Total run time:  11.72s
73
Total run time:  11.17s
74
Total run time:  11.23s
75
Total run time:  11.32s
76
Total run time:  11.45s
77
Total run time:  10.80s
78
Total run time:  10.68s
79
Total run time:  11.07s
80
Total run time:  11.10s
81
Total run time:  10.91s
82
Total run time:  10.64s
83
Total run time:  11.67s
84
Total run time:  11.25s
85
Total run time:  10.68s
86
Total run time:  10.70s
87
Total run time:  10.66s
88
Total run time:  10.61s
89
Total run time:  12.12s
90
Total run time:  10.66s
91
Total run time:  10.51s
92
Total run time:  10.62s
93
Total run time:  11.15s
94
Total run time:  11.64s
95
Total run time:  11.00s
96
Total run time:  11.05s
97
Total run time:  11.14s
98
Total run time:  11.08s
99
Total run time:  11.00s
100
Total run time:  10.77s
101
Total run time:  10.78s
102
Total run time:  10.80s
103
Total run time:  10.79s
104
Total run time:  10.79s
105
Total run time:  10.80s
106
Total run time:  10.79s
107
Total run time:  10.91s
108
Total run time:  12.04s
109
Total run time:  11.08s
110
Total run time:  13.18s
111
Total run time:  13.91s
112
Total run time:  12.64s
113
Total run time:  12.26s
114
Total run time:  10.93s
115
Total run time:  10.91s
116
Total run time:  11.17s
117
Total run time:  11.00s
118
Total run time:  10.90s
119
Total run time:  10.64s
120
Total run time:  10.68s
121
Total run time:  10.84s
122
Total run time:  10.70s
123
Total run time:  10.70s
124
Total run time:  10.74s
125
Total run time:  10.82s
126
Total run time:  10.82s
127
Total run time:  10.85s
128
Total run time:  10.79s
129
Total run time:  10.84s
130
Total run time:  11.00s
131
Total run time:  10.78s
132
Total run time:  10.75s
133
Total run time:  11.00s
134
Total run time:  11.76s
135
Total run time:  11.52s
136
Total run time:  13.59s
137
Total run time:  10.93s
138
Total run time:  11.07s
139
Total run time:  10.57s
140
Total run time:  10.63s
141
Total run time:  11.40s
142
Total run time:  11.48s
143
Total run time:  11.00s
144
Total run time:  10.96s
145
Total run time:  11.14s
146
Total run time:  11.10s
147
Total run time:  11.52s
148
Total run time:  10.58s
149
Total run time:  10.94s
150
Total run time:  12.06s
151
Total run time:  12.51s
152
Total run time:  10.63s
153
Total run time:  11.70s
154
Total run time:  11.04s
155
Total run time:  11.66s
156
Total run time:  11.18s
157
Total run time:  10.96s
158
Total run time:  10.84s
159
Total run time:  10.83s
160
Total run time:  11.38s
161
Total run time:  11.45s
162
Total run time:  11.30s
163
Total run time:  11.49s
164
Total run time:  12.12s
165
Total run time:  10.89s
166
Total run time:  11.24s
167
Total run time:  11.15s
168
Total run time:  11.36s
169
Total run time:  10.85s
170
Total run time:  11.01s
171
Total run time:  11.57s
172
Total run time:  10.80s
173
Total run time:  10.83s
174
Total run time:  10.93s
175
Total run time:  10.97s
176
Total run time:  12.11s
177
Total run time:  12.86s
178
Total run time:  13.31s
179
Total run time:  11.85s
180
Total run time:  12.54s
181
Total run time:  10.96s
182
Total run time:  10.86s
183
Total run time:  10.76s
184
Total run time:  10.73s
185
Total run time:  11.21s
186
Total run time:  10.67s
187
Total run time:  10.63s
188
Total run time:  10.64s
189
Total run time:  10.54s
190
Total run time:  10.62s
191
Total run time:  10.66s
192
Total run time:  10.61s
193
Total run time:  10.69s
194
Total run time:  10.63s
195
Total run time:  10.60s
196
Total run time:  10.53s
197
Total run time:  10.56s
198
Total run time:  10.68s
199
Total run time:  10.61s

In [7]:
th = linspace(1, 100, 100)

fig, axes = subplots(nrows=1, ncols=2, figsize=(12,5))
axes[0].plot(th, E, label='Logarithmic negativity')
axes[0].plot(th, P, label='Success probability')
axes[0].set_xlabel('Threshold')
axes[0].set_ylabel('Log. negativity/Succ. probability')
axes[0].legend(loc=0)
axes[1].hist(M, bins=51)
axes[1].set_xlim((-max(abs(M)), max(abs(M))))
axes[1].set_xlabel('Integrated current')
axes[1].set_ylabel('Counts')


Out[7]:
<matplotlib.text.Text at 0x10cde7990>