Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download

Draft Forbes Group Website (Build by Nikola). The official site is hosted at:

https://labs.wsu.edu/forbes

5902 views
License: GPL3
ubuntu2004
Kernel: Python [conda env:_gpe]

Path Integrals

Based on a discussion with Fred Gittes, we compute the propagator for small systems using a path integral.

import mmf_setup;mmf_setup.nbinit(quiet=True)
<IPython.core.display.Javascript object>

One of Feynman great insights was that the propagator for quantum systems can be constructed through a path integral. He expressed this by saying that the probability for a particle starting at point and time (xi,ti)(x_i, t_i) to be later at a point and time (xf,tf)(x_f, t_f) could be obtained by averaging the phases ParseError: KaTeX parse error: Undefined control sequence: \I at position 4: e^{\̲I̲ ̲S[x]} over all possible trajectories x(t)x(t) that the particle might take from x(ti)=xix(t_i) = x_i to x(tf)=xfx(t_f) = x_f where S[x]S[x] is the classical action:

ParseError: KaTeX parse error: Undefined control sequence: \d at position 42: …x, \dot{x}, t) \̲d̲{t}, \qquad L…

Formally, this can be expressed in terms of a new type of integral:

ParseError: KaTeX parse error: Undefined control sequence: \op at position 79: … = \braket{x_f|\̲o̲p̲{U}(t_f,t_i|x_i…

where ParseError: KaTeX parse error: Undefined control sequence: \op at position 1: \̲o̲p̲{U}(t_f, t_i) is the quantum mechanical propagator:

ParseError: KaTeX parse error: Undefined control sequence: \op at position 19: …t{\psi(t_f)} = \̲o̲p̲{U}(t_f, t_i)\k…

In the expression for ParseError: KaTeX parse error: Undefined control sequence: \op at position 1: \̲o̲p̲{U}(t_f, t_i), the integral must be time-ordered as signified by the operator T\mathcal{T} which means that in every term, operators must appear in descending time order. Formally this can be understood by Taylor expanding the exponential and then manually rearranging all terms so that they are in the correct order.

For example, expanding only to quadratic order, we would have:

ParseError: KaTeX parse error: Undefined control sequence: \op at position 1: \̲o̲p̲{U}(t_f, t_i) =…

Of course, if the Hamiltonian commutes at different times ParseError: KaTeX parse error: Undefined control sequence: \op at position 2: [\̲o̲p̲{H}(t_1), \op{H… – for example, if ParseError: KaTeX parse error: Undefined control sequence: \op at position 3: V(\̲o̲p̲{X}, t) = (\op{… is time independent – then there is no need to worry about the time-ordering and one can simply ignore this complication.

Consider the path integral representation of the propagator corresponding to a time-independent Hamiltonian:

ParseError: KaTeX parse error: Undefined control sequence: \I at position 75: …= \int \D{x}e^{\̲I̲ ̲S/\hbar}, \qqua…

Discretizing in time we have

ParseError: KaTeX parse error: Undefined control sequence: \d at position 24: …um_{i=0}^{N-1} \̲d̲{t}\;\left[ …

The matrices ParseError: KaTeX parse error: Undefined control sequence: \mat at position 2: A\̲m̲a̲t̲{M} are unitary ParseError: KaTeX parse error: Undefined control sequence: \abs at position 1: \̲a̲b̲s̲{A}^2\mat{M}^\d… if properly normalized:

ParseError: KaTeX parse error: Undefined control sequence: \mat at position 2: [\̲m̲a̲t̲{M}^\dagger\cdo…

Hence (the factor of ParseError: KaTeX parse error: Undefined control sequence: \I at position 1: \̲I̲ included in AA will help later):

ParseError: KaTeX parse error: Undefined control sequence: \I at position 25: …{\frac{m}{2\pi \̲I̲\hbar\d{t}}}, \…

Free Particle

If we neglect the potential V=0V=0, then we can explicitly perform the matrix multiplication, completing the square in zz and absorbing the integrating factor into AA:

ParseError: KaTeX parse error: Undefined control sequence: \mat at position 4: [(A\̲m̲a̲t̲{M})^2]_{xy} = …

Note: the integral over zz is a little dubious since the factor of ParseError: KaTeX parse error: Undefined control sequence: \I at position 1: \̲I̲ makes it non-convergent.

Likewise:

ParseError: KaTeX parse error: Undefined control sequence: \mat at position 4: [(A\̲m̲a̲t̲{M})^N]_{xy} …

Hence (including the normalization factor),

ParseError: KaTeX parse error: Undefined control sequence: \I at position 41: …{m}{2\pi \hbar \̲I̲ ̲T}}\exp\left\{\…

Discretization

To make the path integral concrete (and well defined) we can express it in terms of a discrete lattice in space and time. A useful approach is to use periodic functions on a lattice of NxN_x points in a box of length LL. With this discretization both the positions x=xnx=x_n and wave-numbers k=p/=knk = p/\hbar = k_n become discrete with nn running over a finite range n{0,1,2N1}n \in \{0, 1, 2\cdots N-1\}.

ParseError: KaTeX parse error: Undefined control sequence: \d at position 8: x_n = n\̲d̲{x} = n\frac{L}…

Two sets of normalizations are useful and follow from the following lattice relationship

ParseError: KaTeX parse error: Undefined control sequence: \I at position 12: \sum_{l}e^{\̲I̲ ̲k_l(x_m - x_n)}…

Physical:

ParseError: KaTeX parse error: Undefined control sequence: \I at position 23: …{x_m|k_n} = e^{\̲I̲ ̲k_n x_m}, \qqua…

In this normalization, continuum equations can be directly translated by replacing integrals as follows:

ParseError: KaTeX parse error: Undefined control sequence: \d at position 6: \int \̲d̲{x} \rightarrow…

Numerical:

The Numerical normalization is obtained from the Physical normalization by rescaling:

ParseError: KaTeX parse error: Undefined control sequence: \d at position 46: …et{x_n}}{\sqrt{\̲d̲{x}}}, \qquad …

In this normalization xmkn\braket{x_m|k_n} is unitary.

Discrete Unitarity

Fred Gittes points out that in discrete form, there is a special relationship between ParseError: KaTeX parse error: Undefined control sequence: \d at position 1: \̲d̲{t} and ParseError: KaTeX parse error: Undefined control sequence: \d at position 1: \̲d̲{x} such that ParseError: KaTeX parse error: Undefined control sequence: \mat at position 1: \̲m̲a̲t̲{M}^\dagger\cdo… is unitary:

ParseError: KaTeX parse error: Undefined control sequence: \mat at position 4: [(A\̲m̲a̲t̲{M})^\dagger \c…

where the last relationship is true for the lattice iff:

ParseError: KaTeX parse error: Undefined control sequence: \d at position 15: \frac{m}{\hbar\̲d̲{t}}\d{x}^2 = \…

To see this, note that with the special ParseError: KaTeX parse error: Undefined control sequence: \d at position 1: \̲d̲{t}, the last sum is NxδxyN_x\delta_{xy}. This leaves the first factor, whose exponent vanishes when x=yx=y leaving a factor of unity.

The discrete matrix ParseError: KaTeX parse error: Undefined control sequence: \mat at position 1: \̲m̲a̲t̲{M} is thus unitary with this special value of ParseError: KaTeX parse error: Undefined control sequence: \d at position 1: \̲d̲{t} if the normalization factor of A=1/NxA = 1/N_x at this special value. As we shall see below,

$$A = \sqrt{\frac{m}{2\pi \I\hbar\d{t}}} \\$$

Using the numerical basis, we can diagonalize MxyM_{xy}. ParseError: KaTeX parse error: Undefined control sequence: \I at position 120: …\left\{ -\̲I̲ ̲(k_mx - k_ny) …

Free Particle on a Periodic Lattice

The last sum can be simplified if we can shift ParseError: KaTeX parse error: Undefined control sequence: \d at position 20: …ightarrow q + l\̲d̲{x} to complete the square which requires

ParseError: KaTeX parse error: Undefined control sequence: \d at position 30: …r k_n}{m}\frac{\̲d̲{t}}{\d{x}}

to be an integer. This is the case if ParseError: KaTeX parse error: Undefined control sequence: \d at position 1: \̲d̲{t} is chosen in terms of an integer jj:

ParseError: KaTeX parse error: Undefined control sequence: \d at position 1: \̲d̲{t} = j\frac{m …

If this is true, then we can do this shift and we have:

ParseError: KaTeX parse error: Undefined control sequence: \I at position 54: …ft\{ \frac{\̲I̲ ̲m l^2 \d{x}^2}{…

Harmonic Oscillator

%pylab inline --no-import-all Nx = 62 L = 10.0 w = m = h = 1.0 dx = L/Nx x = np.arange(Nx)*dx - L/2 n_t = 0 Nt = 2*n_t+1 dt = m*L*dx/2/np.pi/Nt/h T = Nt*dt def V(x): return m*(w*x)**2/2.0 x_ = x[:,None] y_ = x[None,:] A = np.sqrt(m/2/np.pi/h/T) AM = dx*np.exp(1j/h*(m*(x_-y_)**2/2.0/dt - dt*(V(x_) + V(y_))/2))*A I = AM.conj().T.dot(AM) assert np.allclose(np.eye(Nx), I)
Populating the interactive namespace from numpy and matplotlib
import scipy as sp import scipy.linalg H = 1j*h*sp.linalg.logm(AM)/dt assert np.allclose(H, H.T.conj()) assert np.allclose(H.imag, 0) H = H.real plt.plot(x, np.diag(H))
[<matplotlib.lines.Line2D at 0xa1a2b6fd0>]
Image in a Jupyter notebook
import scipy as sp import scipy.linalg U = np.linalg.matrix_power(AM, Nt) H = 1j*h*sp.linalg.logm(U)/T assert np.allclose(H, H.T.conj()) #assert np.allclose(H.imag, 0) #H = H.real plt.plot(x, np.diag(H))
[<matplotlib.lines.Line2D at 0xa1a38f390>]
Image in a Jupyter notebook
plt.plot(np.linalg.eigvalsh(H))
[<matplotlib.lines.Line2D at 0xa1a206310>]
Image in a Jupyter notebook
U = np.linalg.matrix_power(M, 2) (U.conj().T.dot(U))
array([[ 1.00000000e+00+0.00000000e+00j, -9.88415498e-15-7.49400542e-17j, -1.11022302e-16+6.38378239e-16j, -8.19939154e-15+4.76210391e-18j], [-9.88415498e-15+7.49400542e-17j, 1.00000000e+00+0.00000000e+00j, -8.04951143e-15+4.76210391e-18j, -1.11022302e-16-6.38378239e-16j], [-1.11022302e-16-6.38378239e-16j, -8.04951143e-15-4.76210391e-18j, 1.00000000e+00+0.00000000e+00j, -9.89367919e-15+7.49400542e-17j], [-8.19939154e-15-4.76210391e-18j, -1.11022302e-16+6.38378239e-16j, -9.89367919e-15-7.49400542e-17j, 1.00000000e+00+0.00000000e+00j]])
M
array([[ 0.35355339-3.53553391e-01j, 0.5 +1.53869061e-15j, -0.35355339+3.53553391e-01j, 0.5 +1.88411095e-16j], [ 0.5 +1.53869061e-15j, 0.35355339-3.53553391e-01j, 0.5 +1.53869061e-15j, -0.35355339+3.53553391e-01j], [-0.35355339+3.53553391e-01j, 0.5 +1.53869061e-15j, 0.35355339-3.53553391e-01j, 0.5 +1.53869061e-15j], [ 0.5 +1.88411095e-16j, -0.35355339+3.53553391e-01j, 0.5 +1.53869061e-15j, 0.35355339-3.53553391e-01j]])

Harmonic Oscillator

%pylab inline --no-import-all Nx = 64 L = 10.0 w = m = h = 1.0 dx = L/Nx x = np.arange(Nx)*dx - L/2 n_t = 20 Nt = 2*n_t+1 dt = m*L*dx/2/np.pi/Nt/h T = Nt*dt def V(x): return m*(w*x)**2/2.0 x_ = x[:,None] y_ = x[None,:] B = np.sqrt(2j*Nt*np.pi*h*dt/m) M = dx*np.exp(1j/h*(m*(x_-y_)**2/2.0/dt - V(x_+y_)))/B I = M.conj().T.dot(M)
Populating the interactive namespace from numpy and matplotlib
--------------------------------------------------------------------------- AssertionError Traceback (most recent call last) <ipython-input-8-1846013a711c> in <module>() 21 M = dx*np.exp(1j/h*(m*(x_-y_)**2/2.0/dt - V(x_+y_)))/B 22 I = M.conj().T.dot(M) ---> 23 assert np.allclose(np.eye(Nx), I) AssertionError: