{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Lab 15: MCMC for Feynman Path Integral Tutorial" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the lecture we saw some results from S.Mittal et al, and we will try to reproduce them in the lab today. The Markov chain Monte Carlo (MCMC) method can be used to evaluate the\n", "discrete imaginary-time path integral (an alternative formulation to the path integral) of a quantum harmonic oscillator system with \"Euclidean Lagragian\" $L_E(x(\\tau))=\\frac{m}{2}(\\frac{dx}{d\\tau})^2 +V(x(\\tau))$, and we can obtain a histogram of the probability density by summing up the number of times a particle is in a bin. " ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import tqdm" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Analytic solution of the Schodinger equation to the ground state wavefunction of a quantum harmonic oscillator is given by: $\\psi(x)=(\\frac{m\\omega}{\\pi\\hbar})^{1/4} \\exp{(-\\frac{m\\omega}{2\\hbar} x^2)}$.\n", "\n", "A different approach to solving the Schodinger equation is by evaluating the imaginary-time path integral for this system using the Markov chain Monte Carlo (MCMC) method.\n", "\n", "\n", "The path is assigned along a time lattice to $N_{xbins} =100$ spatial bins ranging in $[-4,4]$ with width $\\Delta x$. Choose time lattice with $N_{\\tau} = 30$ time increments $\\delta\\tau$ with lattice points $x_n = n\\delta \\tau$ for $n = 0,1,2,...,N_{\\tau}$, over $n_{sweeps} = 20,000$, hitsize $h = 0.1$, and set $m=\\hbar=1=\\omega$. Periodic boundary condition is imposed on the lattice. \n" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "SWEEPS = 20_000\n", "H = 1\n", "OMEGA = 1\n", "M = 1\n", "TAU = 30\n", "DELTATAU = 1\n", "NTAU = int(TAU/DELTATAU)\n", "HITSIZE = 0.1\n", "\n", "XLOW = -4\n", "XHIGH = 4\n", "NXBINS = 100\n", "DELTAX = (XHIGH - XLOW) / NXBINS\n", "HITSIZE = 0.1\n", "prob_histogram = np.zeros(NXBINS)\n", "x_bins = np.linspace(XLOW, XHIGH, NXBINS + 1)\n", "\n", "x_path = np.zeros(NTAU)\n", "## analytical solution\n", "psi_analytical = (M*OMEGA/(np.pi*H))**0.25*np.exp(-M*OMEGA*x_bins**2/2/H)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We begin with an initial path $x_{path}$, which may be an array of random numbers (‘hot’ start) or zeros (‘cold’ start), and we use the ‘cold’ start for now. This path is updated by applying the Metropolis–Hastings algorithm to each element $x_i$ of the path in random order, called a ‘sweep’. There are two steps in the updating process:\n", "- Generate a uniform random number $u \\in [-h, h]$ (where h is called the hitsize)\n", "- Propose the new value $x_i'=x_i +u$ of the path element and calculate the resulting change $\\Delta S$ in the action.\n", "If $\\Delta S \\leq 0$, accept the new path element.\n", "If $\\Delta S > 0$, accept with probability $exp(-\\Delta S/\\hbar)$.\n", "\n", "For better performance, we can play with the parameters DELTATAU, HITSIZE, SWEEPS, etc, and we can also add \"thinning\" where only every Nth sweep is saved. For example:\n", "- if we choose a smaller time step $\\delta\\tau = 0.1$, we end up with better energy approximation to the ground state; \n", "- if the hitsize we choose is too large, few changes will be accepted; too small and the exploration of phase space will be slow. How should we choose the hit size wisely?\n", "\n", "The action $S(\\{x_k\\})=\\delta\\tau\\sum_{i=1}^{N_{\\tau}}[\\frac{m}{2}(\\frac{x_{i+1}-x_i}{\\delta \\tau})^2 +V(x_i)]$, where $V(x_i) = \\sum_{i=1}^{N_{\\tau}}[\\frac{m\\omega^2}{2}(\\frac{x_{i+1}+x_i}{2})^2]$.\n", "Note that one sweep produces the next path. Each path is determined only by\n", "the immediately preceding path, so the complete sequence of paths forms a Markov chain,\n", "but the paths are correlated." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "def vary_path(x_current):\n", " x_prime = x_current + np.random.random() * 2 * HITSIZE - HITSIZE\n", " while x_prime > XHIGH or x_prime < XLOW:\n", " x_prime = x_current + np.random.random() * 2 * HITSIZE - HITSIZE\n", " return x_prime\n", "\n", "def action(x_left, x_right):\n", " K = 0.5 * M * (((x_right - x_left))**2) / DELTATAU\n", " V = 0.5 * M * DELTATAU * (OMEGA**2) * (((x_left + x_right) / 2)**2)\n", " return K + V\n", "\n", "def total_action(x_path):\n", " path_action = 0\n", " for i in range(-1, NXBINS-1):\n", " path_action += action(x_path[i], x_path[i+1])\n", " return path_action\n", "\n", "def delta_action(x_path, x_prime, i):\n", " x_left = x_path[i-1]\n", " x_right = x_path[i+1] if i < NTAU-1 else x_path[0] #PBC.\n", " daction = action(x_left, x_prime) + action(x_prime, x_right) \n", " daction -= action(x_left, x_path[i]) + action(x_path[i], x_right) #compute the resulting change from u in delta S.\n", " return daction\n", "\n", "def MCMC(x_path, prob_histogram):\n", " for i in range(NTAU):\n", " x_prime = vary_path(x_path[i])\n", " daction = delta_action(x_path, x_prime, i)\n", " if daction <= 0: \n", " x_path[i] = x_prime\n", " else: \n", " prob = np.exp(-daction)\n", " if np.random.random() < prob:\n", " x_path[i] = x_prime\n", " hist, _ = np.histogram(x_path, bins=x_bins)\n", " prob_histogram += hist" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "100%|██████████| 20000/20000 [00:07<00:00, 2765.38it/s]\n" ] } ], "source": [ "for k in tqdm.tqdm(range(SWEEPS)):\n", " MCMC(x_path, prob_histogram)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally we get the histogram of the probability density by summing up the number of times a particle is in a bin, and compare it to the analytical solution. We can see the approximation from MCMC is pretty good.\n", "\n", "We can now play with the code by plotting the $\\langle E\\rangle$ observable for each sweep (or equivalently $\\langle x^2 \\rangle$ vs. iteration) to measure the equilibrium time; or measure the autocorrelation function/autocorrelation time, etc. " ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.figure()\n", "plt.stairs(prob_histogram/np.sum(prob_histogram*DELTAX), x_bins, label=f\"MCMC, $\\\\tau = {TAU}$, $\\\\delta\\\\tau={DELTATAU}$\")\n", "plt.plot(x_bins, psi_analytical*psi_analytical.conjugate(), label=\"Analytical\")\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.16" } }, "nbformat": 4, "nbformat_minor": 2 }