Copyright | (c) Scott N. Walck 2016 |
---|---|
License | BSD3 (see LICENSE) |
Maintainer | Scott N. Walck <walck@lvc.edu> |
Stability | experimental |
Safe Haskell | Trustworthy |
Language | Haskell98 |
This module contains state vectors and matrices for quantum mechanics.
- type C = Complex Double
- xp :: Vector C
- xm :: Vector C
- yp :: Vector C
- ym :: Vector C
- zp :: Vector C
- zm :: Vector C
- np :: Double -> Double -> Vector C
- nm :: Double -> Double -> Vector C
- dim :: Vector C -> Int
- scaleV :: C -> Vector C -> Vector C
- inner :: Vector C -> Vector C -> C
- norm :: Vector C -> Double
- normalize :: Vector C -> Vector C
- probVector :: Vector C -> Vector Double
- gramSchmidt :: [Vector C] -> [Vector C]
- conjV :: Vector C -> Vector C
- fromList :: [C] -> Vector C
- toList :: Vector C -> [C]
- sx :: Matrix C
- sy :: Matrix C
- sz :: Matrix C
- scaleM :: C -> Matrix C -> Matrix C
- (<>) :: Matrix C -> Matrix C -> Matrix C
- (#>) :: Matrix C -> Vector C -> Vector C
- (<#) :: Vector C -> Matrix C -> Vector C
- conjugateTranspose :: Matrix C -> Matrix C
- fromLists :: [[C]] -> Matrix C
- toLists :: Matrix C -> [[C]]
- size :: Matrix C -> (Int, Int)
- couter :: Vector C -> Vector C -> Matrix C
- dm :: Vector C -> Matrix C
- trace :: Matrix C -> C
- normalizeDM :: Matrix C -> Matrix C
- oneQubitMixed :: Matrix C
- timeEv :: Double -> Matrix C -> Vector C -> Vector C
- timeEvMat :: Double -> Matrix C -> Matrix C
- possibleOutcomes :: Matrix C -> [Double]
- data Vector a :: * -> *
- data Matrix t :: * -> *
Complex numbers
State Vectors
The state resulting from a measurement of spin angular momentum in the x direction on a spin-1/2 particle when the result of the measurement is hbar/2.
The state resulting from a measurement of spin angular momentum in the x direction on a spin-1/2 particle when the result of the measurement is -hbar/2.
The state resulting from a measurement of spin angular momentum in the y direction on a spin-1/2 particle when the result of the measurement is hbar/2.
The state resulting from a measurement of spin angular momentum in the y direction on a spin-1/2 particle when the result of the measurement is -hbar/2.
The state resulting from a measurement of spin angular momentum in the z direction on a spin-1/2 particle when the result of the measurement is hbar/2.
The state resulting from a measurement of spin angular momentum in the z direction on a spin-1/2 particle when the result of the measurement is -hbar/2.
np :: Double -> Double -> Vector C Source
The state resulting from a measurement of spin angular momentum in the direction specified by spherical angles theta (polar angle) and phi (azimuthal angle) on a spin-1/2 particle when the result of the measurement is hbar/2.
nm :: Double -> Double -> Vector C Source
The state resulting from a measurement of spin angular momentum in the direction specified by spherical angles theta (polar angle) and phi (azimuthal angle) on a spin-1/2 particle when the result of the measurement is -hbar/2.
Return a vector of probabilities for a given state vector.
gramSchmidt :: [Vector C] -> [Vector C] Source
Form an orthonormal list of complex vectors from a linearly independent list of complex vectors.
Matrices (operators)
Density matrices
oneQubitMixed :: Matrix C Source
The one-qubit totally mixed state.
Quantum Dynamics
timeEv :: Double -> Matrix C -> Vector C -> Vector C Source
Given a time step and a Hamiltonian matrix,
advance the state vector using the Schrodinger equation.
This method should be faster than using timeEvMat
since it solves a linear system rather than calculating
an inverse matrix. The function assumes hbar = 1.
timeEvMat :: Double -> Matrix C -> Matrix C Source
Given a time step and a Hamiltonian matrix,
produce a unitary time evolution matrix.
Unless you really need the time evolution matrix,
it is better to use timeEv
, which gives the
same numerical results with doing an explicit
matrix inversion. The function assumes hbar = 1.
Measurement
possibleOutcomes :: Matrix C -> [Double] Source
The possible outcomes of a measurement of an observable. These are the eigenvalues of the matrix of the observable.
Vector and Matrix
data Vector a :: * -> *
Storable
-based vectors
data Matrix t :: * -> *
Matrix representation suitable for BLAS/LAPACK computations.
LSDiv Matrix | |
Normed Matrix Double | |
Normed Matrix Float | |
(Num a, Element a, Container Vector a) => Container Matrix a | |
Container Matrix t => Linear t Matrix | |
Mul Matrix Matrix Matrix | |
Mul Matrix Vector Vector | |
Mul Vector Matrix Vector | |
Normed Matrix (Complex Double) | |
Normed Matrix (Complex Float) | |
Representable Operator (Matrix C) Source | |
(Num e, Container Vector e) => Konst e (Int, Int) Matrix | |
(Storable t, NFData t) => NFData (Matrix t) | |
Normed (Matrix R) | |
Normed (Matrix C) | |
Container Matrix t => Additive (Matrix t) | |
KnownNat m => Testable (Matrix (Mod m I)) | |
Storable t => TransArray (Matrix t) | |
Element t => Indexable (Matrix t) (Vector t) | |
(CTrans t, Container Vector t) => Transposable (Matrix t) (Matrix t) | |
Container Matrix e => Build (Int, Int) (e -> e -> e) Matrix e | |
type IndexOf Matrix = (Int, Int) | |
type ArgOf Matrix a = a -> a -> a | |
type ElementOf (Matrix a) = a | |
type TransRaw (Matrix t) b = CInt -> CInt -> Ptr t -> b | |
type Trans (Matrix t) b = CInt -> CInt -> CInt -> CInt -> Ptr t -> b |