Functions operating on Qobj
QuantumToolbox
also provide functions (methods) that operates on QuantumObject
.
You can click the function links and see the corresponding docstring for more information.
Linear algebra and attributes
Here is a table that summarizes all the supported linear algebra functions and attribute functions operating on a given QuantumObject
Q
:
Description | Function call | Synonyms |
---|---|---|
zero-like array | zero(Q) | - |
identity-like matrix | one(Q) | - |
conjugate | conj(Q) | - |
transpose | transpose(Q) | trans(Q) |
conjugate transposition | adjoint(Q) | Q' , dag(Q) |
partial transpose | partial_transpose(Q, mask) | - |
dot product | dot(Q1, Q2) | - |
generalized dot product | dot(Q1, Q2, Q3) | matrix_element(Q1, Q2, Q3) |
trace | tr(Q) | - |
partial trace | ptrace(Q, sel) | - |
singular values | svdvals(Q) | - |
standard vector p -norm or Schatten p -norm | norm(Q, p) | - |
normalization | normalize(Q, p) | unit(Q, p) |
normalization (in-place) | normalize!(Q, p) | - |
matrix inverse | inv(Q) | - |
matrix square root | sqrt(Q) | √(Q) , sqrtm(Q) |
matrix logarithm | log(Q) | logm(Q) |
matrix exponential | exp(Q) | expm(Q) |
matrix sine | sin(Q) | sinm(Q) |
matrix cosine | cos(Q) | cosm(Q) |
diagonal elements | diag(Q) | - |
projector | proj(Q) | - |
purity | purity(Q) | - |
permute | permute(Q, order) | - |
remove small elements | tidyup(Q, tol) | - |
remove small elements (in-place) | tidyup!(Q, tol) | - |
get data | get_data(Q) | - |
get coherence | get_coherence(Q) | - |
Eigenvalue decomposition
eigenenergies
: return eigenenergies (eigenvalues)eigenstates
: returnEigsolveResult
(contains eigenvalues and eigenvectors)eigvals
: return eigenvalueseigen
: using dense eigen solver and returnEigsolveResult
(contains eigenvalues and eigenvectors)eigsolve
: using sparse eigen solver and returnEigsolveResult
(contains eigenvalues and eigenvectors)eigsolve_al
: using the Arnoldi-Lindblad eigen solver and returnEigsolveResult
(contains eigenvalues and eigenvectors)
Examples
ψ = normalize(basis(4, 1) + basis(4, 2))
Quantum Object: type=Ket dims=[4] size=(4,)
4-element Vector{ComplexF64}:
0.0 + 0.0im
0.7071067811865475 + 0.0im
0.7071067811865475 + 0.0im
0.0 + 0.0im
ψ'
Quantum Object: type=Bra dims=[4] size=(1, 4)
1×4 adjoint(::Vector{ComplexF64}) with eltype ComplexF64:
0.0-0.0im 0.707107-0.0im 0.707107-0.0im 0.0-0.0im
ρ = coherent_dm(5, 1)
Quantum Object: type=Operator dims=[5] size=(5, 5) ishermitian=true
5×5 Matrix{ComplexF64}:
0.367911+0.0im 0.367744+0.0im … 0.146207+0.0im 0.088267+0.0im
0.367744+0.0im 0.367577+0.0im 0.14614+0.0im 0.0882269+0.0im
0.261054+0.0im 0.260936+0.0im 0.103742+0.0im 0.0626306+0.0im
0.146207+0.0im 0.14614+0.0im 0.058102+0.0im 0.035077+0.0im
0.088267+0.0im 0.0882269+0.0im 0.035077+0.0im 0.0211765+0.0im
diag(ρ)
5-element Vector{ComplexF64}:
0.3679111729923387 + 0.0im
0.3675770456232403 + 0.0im
0.18523331233838003 + 0.0im
0.05810197190350208 + 0.0im
0.021176497142538265 + 0.0im
get_data(ρ)
5×5 Matrix{ComplexF64}:
0.367911+0.0im 0.367744+0.0im … 0.146207+0.0im 0.088267+0.0im
0.367744+0.0im 0.367577+0.0im 0.14614+0.0im 0.0882269+0.0im
0.261054+0.0im 0.260936+0.0im 0.103742+0.0im 0.0626306+0.0im
0.146207+0.0im 0.14614+0.0im 0.058102+0.0im 0.035077+0.0im
0.088267+0.0im 0.0882269+0.0im 0.035077+0.0im 0.0211765+0.0im
norm(ρ)
0.9999999999999996
sqrtm(ρ)
Quantum Object: type=Operator dims=[5] size=(5, 5) ishermitian=true
5×5 Matrix{ComplexF64}:
0.367911+0.0im 0.367744+0.0im … 0.146207+0.0im 0.088267+0.0im
0.367744-0.0im 0.367577+0.0im 0.14614+0.0im 0.0882269+0.0im
0.261054-0.0im 0.260936-0.0im 0.103742+0.0im 0.0626306+0.0im
0.146207-0.0im 0.14614-0.0im 0.058102+0.0im 0.035077+0.0im
0.088267-0.0im 0.0882269-0.0im 0.035077-0.0im 0.0211765+0.0im
tr(ρ)
0.9999999999999993 + 0.0im
eigenenergies(ρ)
5-element Vector{Float64}:
-3.188562758433179e-17
-7.70881124130806e-18
2.0684351320241445e-17
1.0235138990670176e-16
0.9999999999999996
result = eigenstates(ρ)
EigsolveResult: type=Operator dims=[5]
values:
5-element Vector{ComplexF64}:
-2.8177392874225097e-17 + 0.0im
3.416070845000482e-17 + 0.0im
7.728341127110703e-17 + 0.0im
8.881784197001252e-16 + 0.0im
0.9999999999999994 + 0.0im
vectors:
5×5 Matrix{ComplexF64}:
0.349081+0.0im 0.699533+0.0im … -0.0892167+0.0im -0.606557+0.0im
-0.698381+0.0im -0.132457+0.0im -0.0891762+0.0im -0.606281+0.0im
0.596321+0.0im -0.648729+0.0im -0.0633045+0.0im -0.430387+0.0im
-0.186568+0.0im -0.268811+0.0im -0.0354544+0.0im -0.241044+0.0im
0.0+0.0im 0.0+0.0im 0.989355+0.0im -0.145521-0.0im
λ, ψ = result
λ # eigenvalues
5-element Vector{ComplexF64}:
-2.8177392874225097e-17 + 0.0im
3.416070845000482e-17 + 0.0im
7.728341127110703e-17 + 0.0im
8.881784197001252e-16 + 0.0im
0.9999999999999994 + 0.0im
ψ # eigenvectors
5-element Vector{QuantumObject{KetQuantumObject, Dimensions{1, Tuple{Space}}, Vector{ComplexF64}}}:
Quantum Object: type=Ket dims=[5] size=(5,)
5-element Vector{ComplexF64}:
0.34908090726365426 + 0.0im
-0.6983812275352181 + 0.0im
0.5963209517322131 + 0.0im
-0.18656769210014237 + 0.0im
0.0 + 0.0im
Quantum Object: type=Ket dims=[5] size=(5,)
5-element Vector{ComplexF64}:
0.6995328227558701 + 0.0im
-0.1324572834510804 + 0.0im
-0.6487290623177562 + 0.0im
-0.2688112751584079 + 0.0im
0.0 + 0.0im
Quantum Object: type=Ket dims=[5] size=(5,)
5-element Vector{ComplexF64}:
0.11369058957774669 + 0.0im
-0.34523801249281383 + 0.0im
-0.18523271117272722 + 0.0im
0.9130027422100534 + 0.0im
0.0 + 0.0im
Quantum Object: type=Ket dims=[5] size=(5,)
5-element Vector{ComplexF64}:
-0.08921674125585327 + 0.0im
-0.0891762198903574 + 0.0im
-0.06330447537681073 + 0.0im
-0.035454413343867425 + 0.0im
0.9893550944213416 + 0.0im
Quantum Object: type=Ket dims=[5] size=(5,)
5-element Vector{ComplexF64}:
-0.6065568176126116 + 0.0im
-0.606281325477901 + 0.0im
-0.43038739797812414 + 0.0im
-0.24104350624628368 + 0.0im
-0.14552146626026788 - 0.0im
λ, ψ, T = result
T # transformation matrix
5×5 Matrix{ComplexF64}:
0.349081+0.0im 0.699533+0.0im … -0.0892167+0.0im -0.606557+0.0im
-0.698381+0.0im -0.132457+0.0im -0.0891762+0.0im -0.606281+0.0im
0.596321+0.0im -0.648729+0.0im -0.0633045+0.0im -0.430387+0.0im
-0.186568+0.0im -0.268811+0.0im -0.0354544+0.0im -0.241044+0.0im
0.0+0.0im 0.0+0.0im 0.989355+0.0im -0.145521-0.0im