Upload
others
View
6
Download
0
Embed Size (px)
Citation preview
Data
Type
Hermitian?
Dimensions
Shape
self.dims
If other is Qobj:ManipulatinAddition
SubtractionMultiplication
DivisionDaggerDiagonal
ExponentiationFull
NormSqrtTraceUnit
QuTiP
blo
ch_
red
field
brm
eso
lve
blo
ch_
red
field
_so
lve
blo
ch_
red
field
_te
nso
re
seri
es
ese
rie
se
sva
le
ssp
ec
est
idy
stoc
hast
icss
eso
lve
smes
olve
sses
olve
_gen
eric
smes
olve
_gen
eric
d1_p
si_h
omod
yne
d2_p
si_h
omod
yne
d1_p
si_h
eter
odyn
e
d2_p
si_h
eter
odyn
e
d1_c
urre
nt
d2_c
urre
nt
d1_r
ho_h
omod
yne
d2_r
ho_h
omod
yne
corre
latio
n
corre
latio
n_2o
p_1t
corre
latio
n_2o
p_2t
corre
latio
n_4o
p_1t
corre
latio
n_4o
p_2t
cohe
renc
e_fu
nctio
n_g1
cohe
renc
e_fu
nctio
n_g2
corre
latio
n_ss
corre
latio
n
spectr
um_corre
lation_fft
spectr
um_ss
mesolve
mesolve
odesolve
essolve
essolve
ode2es
floquet
floquet_modes
floquet_modes_t
floquet_modes_table
floquet_modes_t_lookup
floquet_states
floquet_states_t
floquet_wavefunction
floquet_wavefunction_t
floquet_state_decomposition
fsesolvefloquet_master_equation_rates
floquet_collapse_operators
floquet_master_equation_tensor
floquet_master_equation_steadystate
floquet_basis_transform
floquet_markov_mesolve
fmmesolvemcsolve mcsolvesteady steadystatesteadyrhs_generate
rhs_clearrhs_generate
propagator
propagatorpropagator_steadystate
odecheckssettings
resetload_rc_file
odeconfig
Odeconfig
odedata
Odedata
odeoptions
Odeoptions
sphereplot
sphereplot
wigner
wignerqfunc
orbital
orbital
visualization
hinton
matrix_histogram
matrix_histogram
_complex
energy_level_diagram
wigner_cm
ap
fock_distribution
wigner_fock_distribution
bloch3d
Bloch3d
bloch
Arrow
3D
Bloch
tomography
qpt_plot
qpt_plot_combined
qpt
sup
ero
pe
rato
r
liouvillian
liouvillian_fast
ma
t2ve
c
vec2
ma
t
vec2
ma
t_in
de
x
ma
t2ve
c_in
de
x
spo
stsp
re
op
era
tors
jma
tjp
lus
jz
sig
ma
psi
gm
am
sig
ma
xsi
gm
ay
sig
ma
zd
est
roy
cre
ate
qe
yeq
ide
ntit
y
po
sitio
n
mo
me
ntu
mnu
m
sque
ez
sque
ezin
g
disp
lace
qutri
t_op
s
qdia
gsra
ndom
_obj
ects
rand
_her
m
rand
_uni
tary
rand
_ket
rand
_dm
thre
e_le
vel_
atom
thre
e_le
vel_
basi
s
thre
e_le
vel_
ops
states
basi
s
qutri
t_ba
sis
cohe
rent
cohe
rent
_dm
fock
_dmfock
thermal_dm
ket2dm
projection
qstate
state_number_enumerate
state_number_index
state_index_number
state_number_qobj
continuous_variables
correlation_matrix
covariance_matrix
correlation_matrix_field
correlation_matrix_quadrature
wigner_covariance_matrix
logarithmic_negativity
gates
cnotfredkintoffoliswapiswapsqrtiswapsnotphasegate
entropyentropy_vn
entropy_linearconcurrence
entropy_mutual
entropy_conditional metrics
fidelitytracedist expect
expect
single_expect
varianceptrace
qobj
Qobj
qobj_list_evaluatedag
ptracedims
shape
qobj_save
qobj_loadisket
isbra
isoper
issuper
isequal
ischeck
isherm
partial_transpose
partial_transpose
tensor
tensor
simdiag
simdiag
degen
testing
run
ipynbtools
version_table
demos
demos
parfor
parfor
sparse
sp_eigs
fileio
file_data_storefile_data_read
qsa
veq
loa
d
cleb
sch
cleb
sch
utilitie
s
n_
the
rma
llin
spa
ce_
with
ab
ou
ta
bo
ut
QuTiPv2.2
The Quantum Toolbox in Python J.R. Johansson (RIKEN), P.D. Nation (Korea University), F. Nori (RIKEN, U. Michigan)
QuTiP is an open-source software framework for simulating the dynamics of closed and open quantum systems. The QuTiP library depends on the excellent Numpy and Scipy numerical packages. In addition, graphical output is provided by Matplotlib. QuTiP aims to provide user-friendly and efficient numerical simulations of a wide variety of quantum mechanical problems, including those with Hamiltonians and/or collapse operators with arbitrary time-dependence, commonly found in a wide range of physics applications, such as quantum optics, trapped ions, superconducting circuits, semiconducting quantum dots, and quantum nanomechanical resonators. QuTiP is freely available for use and/or modification on all Unix-based platforms and on Windows.
About QuTiP
1. J. R. Johansson, P. D. Nation, and F. Nori, QuTiP 2: A Python framework for the dynamics of open quantum systems. Comp. Phys. Comm. 184, 1234 (2013) 2. J. R. Johansson, P. D. Nation, and F. Nori, QuTiP: An open-source Python framework for the dynamics of open quantum systems. Comp. Phys. Comm. 183, 1760–1772 (2012)
More information and download at: http://www.qutip.org
v. Publications
i - Quantum Objects iii - Time evolution of quantum systems
iv. Visualization
ii. States, operators, gates
A core feature in QuTiP, the Qobj class, provides an representation of quantum objects, such as operators, density matrices, state vectors (bras and kets). In addition, a large number of operations that one commonly need to perform on quantum objects are implemented as methods in the Qobj class. For example:
- artihmetic operations - conjugate and transpose - groundstate, eigenstates and energies - basis transformations - matrix elements - partial trace and partial transpose - extract and eliminate states - matrix exponentiation - norm and normalization
Time evolution of quantum systems is one of the main application areas of QuTiP, which includes solvers for:
- Schrödinger equation: sesolve - Lindblad ME: mesolve - Monte Carlo: mcsolve - Bloch-Redfield ME: brmesolve - Floquet formalism: fsesolve, fmmesolve - Stochastic: ssesolve, smesolve - Steady state: steady, steadystate - Correlation functions: correlation
Dacaying Rabi vacuum oscillations
from qutip import *
N = 10a = tensor(destroy(N), qeye(2))sz = tensor(qeye(N), sigmaz())s = tensor(qeye(N), destroy(2))wc = wq = 1.0 * 2 * pig = 0.5 * 2 * pikappa = 0.25
H = wc * a.dag() * a - 0.5 * wq * sz + 0.5 * g * (a * s.dag() + a.dag() * s)psi0 = tensor(basis(N,1), basis(2,0))result = mesolve(H, psi0, linspace(0, 10, 100), [sqrt(kappa) * a], [a.dag() * a])
Driven qubit, time-dependent Hamiltonian
from qutip import *
epsilon = delta = 1.0psi0 = basis(2,0) # Initial state: ground stateH0 = - delta * sigmaz() - epsilon * sigmax() H1 = - sigmaz()h_t = [H0, [H1, 'A * cos(w*t)']] # Hamiltonianargs = {'A': 10.017, 'w': 0.025*2*pi} e_ops = [sigmax(), sigmay(), sigmaz()] # Expectation values
output = sesolve(h_t, psi0, linspace(0, 160, 500), e_ops, args)
Dissipative evolution, two-qubit iSWAP gate
from qutip import *
g = 1.0 * 2 * pig1, g2, n_th = 0.75, 0.25, 1.5 # dissipation parametersc_ops = []H = g * (tensor(sigmax(), sigmax()) + tensor(sigmay(), sigmay()))
sm1 = tensor(sigmam(), qeye(2)) # qubit 1 collapse operatorssz1 = tensor(sigmaz(), qeye(2))c_ops.append(sqrt(g1 * (1+n_th)) * sm1)c_ops.append(sqrt(g1 * n_th) * sm1.dag())c_ops.append(sqrt(g2) * sz1)
sm2 = tensor(qeye(2), sigmam()) # qubit 2 collapse operatorssz2 = tensor(qeye(2), sigmaz())c_ops.append(sqrt(g1 * (1+n_th)) * sm2)c_ops.append(sqrt(g1 * n_th) * sm2.dag())c_ops.append(sqrt(g2) * sz2)
U = propagator(H, pi/(4*g), c_ops)
Stochastic decay of a single Fock state
from qutip import *
N = 4 # number of basis stateskappa = 1.0/0.129 # coupling to heat bathnth = 0.063 # temperature with <n>=0.063
a = destroy(N) # cavity annihilation operatorH = a.dag() * a # harmonic oscillator Hamiltonianpsi0 = basis(N,1) # initial state
c_op_list = []c_op_list.append(sqrt(kappa * (1 + nth)) * a)c_op_list.append(sqrt(kappa * nth) * a.dag())
ntraj = [1, 5, 15, 904]tlist = linspace(0,0.6,100)
mc = mcsolve(H, psi0, tlist, c_op_list, [a.dag()*a], ntraj)me = mesolve(H, psi0, tlist, c_op_list, [a.dag()*a])
# calculate steady statefinal_state = steadystate(H, c_op_list) fexpt = expect(a.dag()*a, final_state)
# plot results ...
Visualization of quantum states and processes is an important part of QuTiP, which includes a large number of classes and functions for visualization techniques commonly used in quantum mechanics. For example:
Bloch sphere
from qutip import *
b = Bloch()b.add_points([x_vec, y_vec, z_vec])...
Wigner functions
from qutip import *
psi = sum([basis(10, n) for n in [0, 3, 6]]).unit()
w = WignerDistribition(psi)w.visualize()
Process tomography
from qutip import *
op_basis = [[qeye(2), sigmax(), sigmay(), sigmaz()] for i in range(2)]op_labels = [["i", "x", "y", "z"] for i in range(2)]
chi = qpt(U, op_basis)qpt_plot_combined(chi, op_labels)
Quantum objects
>>> psi = Qobj([1, 0]) # create a bra state vector Quantum object: dims = [[1], [2]], shape = [1, 2], type = ket Qobj data = [[ 1. 0.]]
>>> psi.dag() Quantum object: dims = [[2], [1]], shape = [2, 1], type = ket Qobj data = [[ 1.] [ 0.]]
Composite systems
>>> H = tensor(sigmax(), sigmax()) Quantum object: dims = [[2, 2], [2, 2]], shape = [4, 4], type = oper, isherm = True Qobj data = [[ 0. 0. 0. 1.] [ 0. 0. 1. 0.] [ 0. 1. 0. 0.] [ 1. 0. 0. 0.]]
>>> psi = tensor([fock(2, 1), fock(2, 0)])>>> ptrace(psi, 0) Quantum object: dims = [[2], [2]], shape = [2, 2], type = oper, isherm = True Qobj data = [[ 0. 0.] [ 0. 1.]]
QuTiP includes a large library of functions thatcreats Qobj representations of commonquantum states, operators and superoperators:
States: - Coherent states: coherent(N, alpha) - Fock states: fock(N, n) - Thermal states: thermal_dm(N, n_th)
Operators: - Idenity: identity(N) - Annihilation: destroy(N) - Creation: create(N) - Number: num(N) - Displacement: displace(N, alpha) - Pauli operators: sigmax(), sigmay() sigmaz(), sigmam(), sigmap()
- Spin operators: jmat(k, s)
Steady states
H = ... # Hamiltonianc_ops = ... # collapse operatorsrho_ss = steadystate(H, c_ops)
Superoperators: - Liouvillian: liouvillian(H, c_ops) - Pre- and post: spre(op), spost(op)
Floquet energies
from qutip import *
H0 = delta/2.0 * sigmaz() - eps0/2.0 * sigmax()H1 = A/2.0 * sigmax()for idx, A in enumerate(A_vec): H = [H0, [H1, lambda t, w: sin(w*t)]] f_modes, f_energies = \ floquet_modes(H, T, args=omega, True) q_energies[idx,:] = f_energies
http://www.qutip.org
Gates: - Not: cnot(), snot() - Swap: iswap(), swap(), sqrtiswap()
- Phase: phasegate(theta) - 3-qubit gates: fredkin(), toffoli()