====== Braket ======
###
//Braket(psi1, O, psi2)// calculates the expectation value or matrix element $\left\langle \psi_1 \mid O \mid \psi_2 \right\rangle$. In Quanty //Braket(psi1, O, psi2)// is the same as // psi1 * O * psi2//. The difference is that the function //Braket// can be faster. //Braket// can work on lists of functions and then returns a matrix or vector with all possible expectation values
###
===== Input =====
* psi1 or psiList1 : Wavefunction or list of Wavefunctions
* O : Operator
* psi2 or psiList2 : Wavefunction or list of Wavefunctions
===== Output =====
* real or complex number, or a list of these or a matrix of these
===== Example =====
###
The example calculates the expectation values of a few states
###
==== Input ====
NF=2
NB=0
IndexDn={0}
IndexUp={1}
psi0=NewWavefunction(NF,NB,{{"10",1}})
psi1=NewWavefunction(NF,NB,{{"01",1}})
OppSx = NewOperator("Sx" ,NF,IndexUp,IndexDn)
OppSy = NewOperator("Sy" ,NF,IndexUp,IndexDn)
OppSz = NewOperator("Sz" ,NF,IndexUp,IndexDn)
print("The expectation value of a single state")
print(Braket(psi0,OppSz,psi0))
print("The expectation value of two states with a single state")
print(Braket(psi0,OppSx,{psi0,psi1}))
-- note that I made one list of length 3, the other of length 2 so that the order is clear
print("The expectation value of a three states with two other states")
print(Braket({psi0,psi1},OppSy,{psi0,psi1,psi1}))
==== Result ====
The expectation value of a single state
-0.5
The expectation value of two states with a single state
{ 0 , 0.5 }
The expectation value of a three states with two other states
{ { 0 , (0 + 0.5 I) , (0 + 0.5 I) } ,
{ (0 - 0.5 I) , 0 , 0 } }
===== Table of contents =====
{{indexmenu>.#1}}