Description
Handle Continuous-Time Quantum Walks with R.
Description
Functions and tools for creating, visualizing, and investigating properties of continuous-time quantum walks, including efficient calculation of matrices such as the mixing matrix, average mixing matrix, and spectral decomposition of the Hamiltonian. E. Farhi (1997): <arXiv:quant-ph/9706062v2>; C. Godsil (2011) <arXiv:1103.2578v3>.
README.md
qwalkr
Overview
qwalkr is a numerical suite for investigating quantum walks, providing estimates of matrices of interests that help you obtain insight into the evolution of such systems:
Quantum Walks
ctqwalk()
creates a continuous-time quantum walk.
Investigate the Hamiltonian
get_eigspace()
obtains the eigenvectors associated with an eigenspace.get_eigproj()
obtains the orthogonal projector associated with an eigenspace.get_eigschur()
obtains the Schur product of orthogonal projectors.act_eigfun()
applies a function to the Hamiltonian.
Time Evolution
unitary_matrix()
returns the unitary time evolution operator at a given time.mixing_matrix()
returns the mixing matrix at a given time.
Average Evolution
avg_matrix()
returns the average mixing matrix.gavg_matrix()
returns the generalized average mixing matrix under a probability distribution.
Installation
You can install the stable version of qwalkr
from CRAN:
install.packages("qwalkr")
For the development version, you can install from Github like so:
# install.packages("devtools")
devtools::install_github("vitormarquesr/qwalkr")
Usage
library(qwalkr)
K3 <- rbind(c(0, 1, 1),
c(1, 0, 1),
c(1, 1, 0))
w <- ctqwalk(hamiltonian = K3)
w
#> Continuous-Time Quantum Walk
#>
#> [+]Order: 3
#>
#> [+]Spectrum of the Hamiltonian:
#>
#> Eigenvalue: 2 -1
#> Multiplicity: 1 2
get_eigproj(w, id=2)
#> [,1] [,2] [,3]
#> [1,] 0.6666667 -0.3333333 -0.3333333
#> [2,] -0.3333333 0.6666667 -0.3333333
#> [3,] -0.3333333 -0.3333333 0.6666667
unitary_matrix(w, t=pi/3)
#> [,1] [,2] [,3]
#> [1,] 0.1666667-0.2886751i -0.3333333+0.5773503i -0.3333333+0.5773503i
#> [2,] -0.3333333+0.5773503i 0.1666667-0.2886751i -0.3333333+0.5773503i
#> [3,] -0.3333333+0.5773503i -0.3333333+0.5773503i 0.1666667-0.2886751i
mixing_matrix(w, t=pi/3)
#> [,1] [,2] [,3]
#> [1,] 0.1111111 0.4444444 0.4444444
#> [2,] 0.4444444 0.1111111 0.4444444
#> [3,] 0.4444444 0.4444444 0.1111111
avg_matrix(w)
#> [,1] [,2] [,3]
#> [1,] 0.5555556 0.2222222 0.2222222
#> [2,] 0.2222222 0.5555556 0.2222222
#> [3,] 0.2222222 0.2222222 0.5555556
Getting Help
For further reference on the usability, check the vignette or the website of the package.
If you happen to encounter a bug, please file an issue on GitHub.