1
Data Type Hermitian? Dimensions Shape self.dims If other is Qobj: Manipulatin Addition Subtraction Multiplication Division Dagger Diagonal Exponentiation Full Norm Sqrt Trace Unit QuTiP bloch_redfield brmesolve bloch_redfield_solve bloch_redfield_tensor eseries eseries esval esspec estidy stochastic ssesolve smesolve ssesolve_generic smesolve_generic d1_psi_homodyne d2_psi_homodyne d1_psi_heterodyne d2_psi_heterodyne d1_current d2_current d1_rho_homodyne d2_rho_homodyne correlation correlation_2op_1t correlation_2op_2t correlation_4op_1t correlation_4op_2t coherence_function_g1 coherence_function_g2 correlation_ss correlation spectrum_correlation_fft spectrum_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 fsesolve floquet_master_equation_rates floquet_collapse_operators floquet_master_equation_tensor floquet_master_equation_steadystate floquet_basis_transform floquet_markov_mesolve fmmesolve mcsolve mcsolve steady steadystate steady rhs_generate rhs_clear rhs_generate propagator propagator propagator_steadystate odechecks settings reset load_rc_file odeconfig Odeconfig odedata Odedata odeoptions Odeoptions sphereplot sphereplot wigner wigner qfunc orbital orbital visualization hinton matrix_histogram matrix_histogram_complex energy_level_diagram wigner_cmap fock_distribution wigner_fock_distribution bloch3d Bloch3d bloch Arrow3D Bloch tomography qpt_plot qpt_plot_combined qpt superoperator liouvillian liouvillian_fast mat2vec vec2mat vec2mat_index mat2vec_index spost spre operators jmat jplus jz sigmap sigmam sigmax sigmay sigmaz destroy create qeye qidentity position momentum num squeez squeezing displace qutrit_ops qdiags random_objects rand_herm rand_unitary rand_ket rand_dm three_level_atom three_level_basis three_level_ops states basis qutrit_basis coherent coherent_dm fock_dm fock 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 cnot fredkin toffoli swap iswap sqrtiswap snot phasegate entropy entropy_vn entropy_linear concurrence entropy_mutual entropy_conditional metrics fidelity tracedist expect expect single_expect variance ptrace qobj Qobj qobj_list_evaluate dag ptrace dims shape qobj_save qobj_load isket 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_store file_data_read qsave qload clebsch clebsch utilities n_thermal linspace_with about about QuTiP v2.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 = 10 a = tensor(destroy(N), qeye(2)) sz = tensor(qeye(N), sigmaz()) s = tensor(qeye(N), destroy(2)) wc = wq = 1.0 * 2 * pi g = 0.5 * 2 * pi kappa = 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.0 psi0 = basis(2,0) # Initial state: ground state H0 = - delta * sigmaz() - epsilon * sigmax() H1 = - sigmaz() h_t = [H0, [H1, 'A * cos(w*t)']] # Hamiltonian args = {'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 * pi g1, g2, n_th = 0.75, 0.25, 1.5 # dissipation parameters c_ops = [] H = g * (tensor(sigmax(), sigmax()) + tensor(sigmay(), sigmay())) sm1 = tensor(sigmam(), qeye(2)) # qubit 1 collapse operators sz1 = 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 operators sz2 = 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 states kappa = 1.0/0.129 # coupling to heat bath nth = 0.063 # temperature with <n>=0.063 a = destroy(N) # cavity annihilation operator H = a.dag() * a # harmonic oscillator Hamiltonian psi0 = 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 state final_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 that creats Qobj representations of common quantum 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 = ... # Hamiltonian c_ops = ... # collapse operators rho_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()

QuTiPv2s3-ap-northeast-1.amazonaws.com/jrjohansson/web/posters/... · 2015-01-27 · 1 2 ss n t ss ve ve ve ve ve s t s te p s tn t n ve s rs r e rm ve ve ve ve y e e y r e r e cks

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: QuTiPv2s3-ap-northeast-1.amazonaws.com/jrjohansson/web/posters/... · 2015-01-27 · 1 2 ss n t ss ve ve ve ve ve s t s te p s tn t n ve s rs r e rm ve ve ve ve y e e y r e r e cks

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()