learn-physics-0.6.2: Haskell code for learning physics

Copyright(c) Scott N. Walck 2016-2018
LicenseBSD3 (see LICENSE)
MaintainerScott N. Walck <walck@lvc.edu>
Stabilityexperimental
Safe HaskellSafe
LanguageHaskell98

Physics.Learn.Ket

Contents

Description

This module contains ket vectors, bra vectors, and operators for quantum mechanics.

Synopsis

Basic data types

type C = Complex Double #

i :: C #

data Ket #

A ket vector describes the state of a quantum system.

Instances
Num Ket # 
Instance details

Defined in Physics.Learn.Ket

Methods

(+) :: Ket -> Ket -> Ket #

(-) :: Ket -> Ket -> Ket #

(*) :: Ket -> Ket -> Ket #

negate :: Ket -> Ket #

abs :: Ket -> Ket #

signum :: Ket -> Ket #

fromInteger :: Integer -> Ket #

Show Ket # 
Instance details

Defined in Physics.Learn.Ket

Methods

showsPrec :: Int -> Ket -> ShowS #

show :: Ket -> String #

showList :: [Ket] -> ShowS #

Kron Ket # 
Instance details

Defined in Physics.Learn.Ket

Methods

kron :: Ket -> Ket -> Ket #

HasNorm Ket # 
Instance details

Defined in Physics.Learn.Ket

Methods

norm :: Ket -> Double #

normalize :: Ket -> Ket #

Dagger Bra Ket # 
Instance details

Defined in Physics.Learn.Ket

Methods

dagger :: Bra -> Ket #

Dagger Ket Bra # 
Instance details

Defined in Physics.Learn.Ket

Methods

dagger :: Ket -> Bra #

Mult C Ket Ket # 
Instance details

Defined in Physics.Learn.Ket

Methods

(<>) :: C -> Ket -> Ket #

Mult Bra Ket C # 
Instance details

Defined in Physics.Learn.Ket

Methods

(<>) :: Bra -> Ket -> C #

Mult Operator Ket Ket # 
Instance details

Defined in Physics.Learn.Ket

Methods

(<>) :: Operator -> Ket -> Ket #

Mult Ket C Ket # 
Instance details

Defined in Physics.Learn.Ket

Methods

(<>) :: Ket -> C -> Ket #

Mult Ket Bra Operator # 
Instance details

Defined in Physics.Learn.Ket

Methods

(<>) :: Ket -> Bra -> Operator #

Representable Ket (Vector C) # 
Instance details

Defined in Physics.Learn.Ket

Methods

rep :: OrthonormalBasis -> Ket -> Vector C #

dim :: Ket -> Int #

data Bra #

A bra vector describes the state of a quantum system.

Instances
Num Bra # 
Instance details

Defined in Physics.Learn.Ket

Methods

(+) :: Bra -> Bra -> Bra #

(-) :: Bra -> Bra -> Bra #

(*) :: Bra -> Bra -> Bra #

negate :: Bra -> Bra #

abs :: Bra -> Bra #

signum :: Bra -> Bra #

fromInteger :: Integer -> Bra #

Show Bra # 
Instance details

Defined in Physics.Learn.Ket

Methods

showsPrec :: Int -> Bra -> ShowS #

show :: Bra -> String #

showList :: [Bra] -> ShowS #

Kron Bra # 
Instance details

Defined in Physics.Learn.Ket

Methods

kron :: Bra -> Bra -> Bra #

HasNorm Bra # 
Instance details

Defined in Physics.Learn.Ket

Methods

norm :: Bra -> Double #

normalize :: Bra -> Bra #

Dagger Bra Ket # 
Instance details

Defined in Physics.Learn.Ket

Methods

dagger :: Bra -> Ket #

Dagger Ket Bra # 
Instance details

Defined in Physics.Learn.Ket

Methods

dagger :: Ket -> Bra #

Mult C Bra Bra # 
Instance details

Defined in Physics.Learn.Ket

Methods

(<>) :: C -> Bra -> Bra #

Mult Bra C Bra # 
Instance details

Defined in Physics.Learn.Ket

Methods

(<>) :: Bra -> C -> Bra #

Mult Bra Operator Bra # 
Instance details

Defined in Physics.Learn.Ket

Methods

(<>) :: Bra -> Operator -> Bra #

Mult Bra Ket C # 
Instance details

Defined in Physics.Learn.Ket

Methods

(<>) :: Bra -> Ket -> C #

Mult Ket Bra Operator # 
Instance details

Defined in Physics.Learn.Ket

Methods

(<>) :: Ket -> Bra -> Operator #

Representable Bra (Vector C) # 
Instance details

Defined in Physics.Learn.Ket

Methods

rep :: OrthonormalBasis -> Bra -> Vector C #

dim :: Bra -> Int #

data Operator #

An operator describes an observable (a Hermitian operator) or an action (a unitary operator).

Instances
Num Operator # 
Instance details

Defined in Physics.Learn.Ket

Show Operator # 
Instance details

Defined in Physics.Learn.Ket

Kron Operator # 
Instance details

Defined in Physics.Learn.Ket

Methods

kron :: Operator -> Operator -> Operator #

Dagger Operator Operator # 
Instance details

Defined in Physics.Learn.Ket

Methods

dagger :: Operator -> Operator #

Mult C Operator Operator # 
Instance details

Defined in Physics.Learn.Ket

Methods

(<>) :: C -> Operator -> Operator #

Mult Bra Operator Bra # 
Instance details

Defined in Physics.Learn.Ket

Methods

(<>) :: Bra -> Operator -> Bra #

Mult Operator C Operator # 
Instance details

Defined in Physics.Learn.Ket

Methods

(<>) :: Operator -> C -> Operator #

Mult Operator Operator Operator # 
Instance details

Defined in Physics.Learn.Ket

Methods

(<>) :: Operator -> Operator -> Operator #

Mult Operator Ket Ket # 
Instance details

Defined in Physics.Learn.Ket

Methods

(<>) :: Operator -> Ket -> Ket #

Mult Ket Bra Operator # 
Instance details

Defined in Physics.Learn.Ket

Methods

(<>) :: Ket -> Bra -> Operator #

Representable Operator (Matrix C) # 
Instance details

Defined in Physics.Learn.Ket

Kets for spin-1/2 particles

xp :: Ket #

State of a spin-1/2 particle if measurement in the x-direction would give angular momentum +hbar/2.

xm :: Ket #

State of a spin-1/2 particle if measurement in the x-direction would give angular momentum -hbar/2.

yp :: Ket #

State of a spin-1/2 particle if measurement in the y-direction would give angular momentum +hbar/2.

ym :: Ket #

State of a spin-1/2 particle if measurement in the y-direction would give angular momentum -hbar/2.

zp :: Ket #

State of a spin-1/2 particle if measurement in the z-direction would give angular momentum +hbar/2.

zm :: Ket #

State of a spin-1/2 particle if measurement in the z-direction would give angular momentum -hbar/2.

np :: Double -> Double -> Ket #

State of a spin-1/2 particle if measurement in the n-direction, described by spherical polar angle theta and azimuthal angle phi, would give angular momentum +hbar/2.

nm :: Double -> Double -> Ket #

State of a spin-1/2 particle if measurement in the n-direction, described by spherical polar angle theta and azimuthal angle phi, would give angular momentum -hbar/2.

Operators for spin-1/2 particles

sx :: Operator #

The Pauli X operator.

sy :: Operator #

The Pauli Y operator.

sz :: Operator #

The Pauli Z operator.

sn :: Double -> Double -> Operator #

Pauli operator for an arbitrary direction given by spherical coordinates theta and phi.

sn' :: Double -> Double -> Operator #

Alternative definition of Pauli operator for an arbitrary direction.

Quantum Dynamics

timeEvOp :: Double -> Operator -> Operator #

Given a time step and a Hamiltonian operator, produce a unitary time evolution operator. Unless you really need the time evolution operator, it is better to use timeEv, which gives the same numerical results without doing an explicit matrix inversion. The function assumes hbar = 1.

timeEv :: Double -> Operator -> Ket -> Ket #

Given a time step and a Hamiltonian operator, advance the state ket using the Schrodinger equation. This method should be faster than using timeEvOp since it solves a linear system rather than calculating an inverse matrix. The function assumes hbar = 1.

Composition

class Kron a where #

Minimal complete definition

kron

Methods

kron :: a -> a -> a #

Instances
Kron Bra # 
Instance details

Defined in Physics.Learn.Ket

Methods

kron :: Bra -> Bra -> Bra #

Kron Operator # 
Instance details

Defined in Physics.Learn.Ket

Methods

kron :: Operator -> Operator -> Operator #

Kron Ket # 
Instance details

Defined in Physics.Learn.Ket

Methods

kron :: Ket -> Ket -> Ket #

Measurement

possibleOutcomes :: Operator -> [Double] #

The possible outcomes of a measurement of an observable. These are the eigenvalues of the operator of the observable.

outcomesProjectors :: Operator -> [(Double, Operator)] #

Given an obervable, return a list of pairs of possible outcomes and projectors for each outcome.

outcomesProbabilities :: Operator -> Ket -> [(Double, Double)] #

Given an observable and a state ket, return a list of pairs of possible outcomes and probabilites for each outcome.

Generic multiplication

class Mult a b c | a b -> c where #

Generic multiplication including inner product, outer product, operator product, and whatever else makes sense. No conjugation takes place in this operation.

Minimal complete definition

(<>)

Methods

(<>) :: a -> b -> c infixl 7 #

Instances
Mult C C C # 
Instance details

Defined in Physics.Learn.Ket

Methods

(<>) :: C -> C -> C #

Mult C Bra Bra # 
Instance details

Defined in Physics.Learn.Ket

Methods

(<>) :: C -> Bra -> Bra #

Mult C Operator Operator # 
Instance details

Defined in Physics.Learn.Ket

Methods

(<>) :: C -> Operator -> Operator #

Mult C Ket Ket # 
Instance details

Defined in Physics.Learn.Ket

Methods

(<>) :: C -> Ket -> Ket #

Mult Bra C Bra # 
Instance details

Defined in Physics.Learn.Ket

Methods

(<>) :: Bra -> C -> Bra #

Mult Bra Operator Bra # 
Instance details

Defined in Physics.Learn.Ket

Methods

(<>) :: Bra -> Operator -> Bra #

Mult Bra Ket C # 
Instance details

Defined in Physics.Learn.Ket

Methods

(<>) :: Bra -> Ket -> C #

Mult Operator C Operator # 
Instance details

Defined in Physics.Learn.Ket

Methods

(<>) :: Operator -> C -> Operator #

Mult Operator Operator Operator # 
Instance details

Defined in Physics.Learn.Ket

Methods

(<>) :: Operator -> Operator -> Operator #

Mult Operator Ket Ket # 
Instance details

Defined in Physics.Learn.Ket

Methods

(<>) :: Operator -> Ket -> Ket #

Mult Ket C Ket # 
Instance details

Defined in Physics.Learn.Ket

Methods

(<>) :: Ket -> C -> Ket #

Mult Ket Bra Operator # 
Instance details

Defined in Physics.Learn.Ket

Methods

(<>) :: Ket -> Bra -> Operator #

Adjoint operation

class Dagger a b | a -> b where #

The adjoint operation on complex numbers, kets, bras, and operators.

Minimal complete definition

dagger

Methods

dagger :: a -> b #

Instances
Dagger C C # 
Instance details

Defined in Physics.Learn.Ket

Methods

dagger :: C -> C #

Dagger Bra Ket # 
Instance details

Defined in Physics.Learn.Ket

Methods

dagger :: Bra -> Ket #

Dagger Operator Operator # 
Instance details

Defined in Physics.Learn.Ket

Methods

dagger :: Operator -> Operator #

Dagger Ket Bra # 
Instance details

Defined in Physics.Learn.Ket

Methods

dagger :: Ket -> Bra #

Normalization

class HasNorm a where #

Minimal complete definition

norm, normalize

Methods

norm :: a -> Double #

normalize :: a -> a #

Instances
HasNorm Bra # 
Instance details

Defined in Physics.Learn.Ket

Methods

norm :: Bra -> Double #

normalize :: Bra -> Bra #

HasNorm Ket # 
Instance details

Defined in Physics.Learn.Ket

Methods

norm :: Ket -> Double #

normalize :: Ket -> Ket #

Representation

class Representable a b | a -> b where #

Minimal complete definition

rep, dim

Methods

rep :: OrthonormalBasis -> a -> b #

dim :: a -> Int #

Instances
Representable Bra (Vector C) # 
Instance details

Defined in Physics.Learn.Ket

Methods

rep :: OrthonormalBasis -> Bra -> Vector C #

dim :: Bra -> Int #

Representable Operator (Matrix C) # 
Instance details

Defined in Physics.Learn.Ket

Representable Ket (Vector C) # 
Instance details

Defined in Physics.Learn.Ket

Methods

rep :: OrthonormalBasis -> Ket -> Vector C #

dim :: Ket -> Int #

Orthonormal bases

data OrthonormalBasis #

An orthonormal basis of kets.

makeOB :: [Ket] -> OrthonormalBasis #

Make an orthonormal basis from a list of linearly independent kets.

Orthonormal bases for spin-1/2 particles

xBasis :: OrthonormalBasis #

The orthonormal basis composed of xp and xm.

yBasis :: OrthonormalBasis #

The orthonormal basis composed of yp and ym.

zBasis :: OrthonormalBasis #

The orthonormal basis composed of zp and zm.

nBasis :: Double -> Double -> OrthonormalBasis #

Given spherical polar angle theta and azimuthal angle phi, the orthonormal basis composed of np theta phi and nm theta phi.