{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "a270ef16",
   "metadata": {},
   "source": [
    "| [**Lattice QCD I**](https://homepages.uni-regensburg.de/~lec17310/teaching/wise2122/lqft.html) | - | [**Christoph Lehner**](https://go.ur.de/lehner) |\n",
    "|:-|--|-:|\n",
    "\n",
    "# Chapter 1: path integral formulation of quantum mechanics\n",
    "\n",
    "We start with a simple one-particle one-dimensional Hamiltonian $H$ with coordinate $x$, momentum $p$, and potential $V(x)$, i.e.,\n",
    "$$\n",
    "\\begin{align}\n",
    "H = \\frac{p^2}{2m} + V(x) \\,,\n",
    "\\end{align}\n",
    "$$\n",
    "where $m$ is the particle's mass.  We will use a unit system with $\\hbar=1$.  In the quantum mechanics lecture,\n",
    "we have already established that $[x,p]=i$ yields\n",
    "$$\n",
    "\\begin{align}\n",
    "    \\langle x \\vert p \\rangle = \\frac1{\\sqrt{2\\pi}} e^{ixp} \\,,\n",
    "\\end{align}\n",
    "$$\n",
    "which we will use in this chapter.  \n",
    "\n",
    "***Homework***: derive this equation again."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "84017e6f",
   "metadata": {},
   "source": [
    "## Real-time evolution\n",
    "\n",
    "Let us consider the amplitude for a free particle with \n",
    "$$\n",
    "H_0 = \\frac{p^2}{2m}\n",
    "$$\n",
    "to move from position $y$ to $x$ during time $t$\n",
    "$$\n",
    "\\begin{align}\n",
    "\\langle x \\vert e^{-i H_0 t} \\vert y \\rangle &=\n",
    "\\int dp \\langle x \\vert e^{-i H_0 t} \\vert p \\rangle \\langle p \\vert y \\rangle \\\\\n",
    "&= \\int dp \\langle x \\vert p \\rangle e^{-i \\frac{p^2}{2m} t}  \\langle p \\vert y \\rangle \\\\\n",
    "&= \\int \\frac{dp}{2\\pi} \\exp\\left( -i \\frac{p^2}{2m} t + i p (x-y) \\right) \\\\\n",
    "&= \\frac1{\\sqrt{2\\pi \\sigma^2}} \\exp\\left( - \\frac1{2\\sigma^2}(x-y)^2 \\right) \\,,\n",
    "\\end{align}\n",
    "$$\n",
    "where\n",
    "$$\n",
    "\\sigma^2 = i\\frac{t}{m} \\,.\n",
    "$$\n",
    "This integral only converges if Re$[\\sigma^2] > 0$, so a limiting procedure is needed to\n",
    "have this procedure be well-defined for real $t$ and $m$.  We will address this issue in the next sub-section, when we define Euclidean path integrals."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8f83c042",
   "metadata": {},
   "source": [
    "If we, however, wanted to calculate the amplitude\n",
    "$$\n",
    "\\langle x \\vert e^{-i H t} \\vert y \\rangle\n",
    "$$\n",
    "for the full theory, the situation is more complicated as the momentum states $\\vert p \\rangle$ are not eigenstates of $H$.  We can, however, use the Trotter formula\n",
    "$$\n",
    "\\begin{align}\n",
    "e^{-i H \\delta t} &= e^{- i H_0 \\delta t - i V(x) \\delta t} = e^{-i V(x) \\delta t / 2} e^{-i H_0 \\delta t} e^{-i V(x) \\delta t/2} + {\\cal O}(\\delta t^3)\\\\\n",
    "&= \\int dx dy \\: e^{-i V(x) \\delta t / 2} \\vert x \\rangle \\langle x \\vert e^{-i H_0 \\delta t} \\vert y \\rangle \\langle y \\vert e^{-i V(x) \\delta t/2} + {\\cal O}(\\delta t^3) \\,.\n",
    "\\end{align}\n",
    "$$\n",
    "This is great, because we already know the matrix element $\\langle x \\vert e^{-i H_0 \\delta t} \\vert y \\rangle$.  Nevertheless, the formula only has small errors for sufficiently small $\\delta t$.  Therefore, we rewrite\n",
    "$$\n",
    "e^{-i H t} = \\underbrace{e^{-i H t/N} e^{-i H t/N} \\cdots e^{-i H t/N}}_{\\textrm{N times}}\n",
    "$$\n",
    "with $\\delta t = t/N$ such that\n",
    "$$\n",
    "\\begin{align}\n",
    "e^{-i H t} &= \\int dx_1 dy_1 \\cdots dx_N dy_N e^{-i V(x) \\delta t / 2} \\vert x_1 \\rangle \\langle x_1 \\vert e^{-i H_0 \\delta t} \\vert y_1 \\rangle \\langle y_1 \\vert e^{-i V(x) \\delta t} \\vert x_2 \\rangle  \\cdots \\langle x_N \\vert e^{-i H_0 \\delta t} \\vert y_N \\rangle \\langle y_N \\vert e^{-i V(x) \\delta t/2} + {\\cal O}(\\delta t^2) \\\\\n",
    "&= \\int dx_1 dy_1 \\cdots dx_N dy_N \\vert x_1 \\rangle e^{-i (V(x_1)+V(y_N)) \\delta t / 2} \\langle x_1 \\vert e^{-i H_0 \\delta t} \\vert y_1 \\rangle \\underbrace{\\langle y_1 \\vert x_2 \\rangle}_{=\\delta(y_1-x_2)} e^{-i \\sum_{j=2}^N V(x_j) \\delta t}   \\cdots \\langle x_N \\vert e^{-i H_0 \\delta t} \\vert y_N \\rangle  \\langle y_N \\vert + {\\cal O}(\\delta t^2) \\\\\n",
    "&= \\int dx_1 \\cdots dx_{N+1} \\vert x_1 \\rangle \\langle x_{N+1} \\vert e^{-i (V(x_1)+V(x_{N+1})) \\delta t / 2} e^{-i \\sum_{j=2}^N V(x_j) \\delta t} \\langle x_1 \\vert e^{-i H_0 \\delta t} \\vert x_2 \\rangle    \\cdots \\langle x_N \\vert e^{-i H_0 \\delta t} \\vert x_{N+1} \\rangle   + {\\cal O}(\\delta t^2) \\\\\n",
    "&= \\left(\\frac{m}{2\\pi i \\delta t}\\right)^{N/2} \\int dx_1 \\cdots dx_{N+1} \\vert x_1 \\rangle \\langle x_{N+1} \\vert e^{i S(x_1,\\ldots,x_{N+1})}   + {\\cal O}(\\delta t^2)\n",
    "\\end{align}\n",
    "$$\n",
    "with\n",
    "$$\n",
    "\\begin{align}\n",
    "S(x_1,\\ldots,x_{N+1}) &=\\frac12m \\frac1{\\delta t} \\sum_{j=1}^N (x_{j+1}-x_j)^2 -(V(x_1)+V(x_{N+1})) \\delta t / 2 - \\sum_{j=2}^N V(x_j) \\delta t \\\\\n",
    "&=\\frac12m \\frac1{\\delta t} \\sum_{j=1}^N (x_{j+1}-x_j)^2 - \\delta t\\sum_{j=1}^N \\frac{V(x_j) + V(x_{j+1})}{2}\n",
    "\\end{align}\n",
    "$$\n",
    "This looks just like a discrete version of the action, i.e., the time integral over the Lagrange function $L=H_0 - V$."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "01a4906d",
   "metadata": {},
   "source": [
    "In the limit $N\\to\\infty$ we have\n",
    "$$\n",
    "\\lim_{N\\to\\infty} S(x_1,\\ldots,x_{N+1}) = \\int_0^t dt' \\left( \\frac12 m \\dot{x}(t')^2 - V(x(t')) \\right)\n",
    "$$\n",
    "with $x_i = x(t'=t (i-1)/N)$ for a given differentiable function $x(t')$."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "70a6fb45",
   "metadata": {},
   "source": [
    "## Euclidean path integrals\n",
    "\n",
    "As we noted above, the proper definition of the real-time path integral involves a limiting procedure\n",
    "to keep the momentum integral convergent.  If we, however, used a purely imaginary time, we get a real\n",
    "Euclidean time $\\tau  \\in \\mathbb{R}^+$ with\n",
    "$$\n",
    "\\tau \\equiv it \\,.\n",
    "$$\n",
    "With such a choice the integrals would surely be convergent since $\\sigma^2=\\tau / m$ is then strictly positive.  We would then find for $\\delta \\tau=\\tau/N$ that\n",
    "$$\n",
    "\\begin{align}\n",
    "e^{-H \\tau} \n",
    "&= \\left(\\frac{m}{2\\pi \\delta \\tau}\\right)^{N/2} \\int dx_1 \\cdots dx_{N+1} \\vert x_1 \\rangle \\langle x_{N+1} \\vert e^{- S_E(x_1,\\ldots,x_{N+1})}   + {\\cal O}(\\delta \\tau^2)\n",
    "\\end{align}\n",
    "$$\n",
    "with\n",
    "$$\n",
    "\\begin{align}\n",
    "S_E(x_1,\\ldots,x_{N+1}) &= -i S(x_1,\\ldots,x_{N+1}) \\\\\n",
    "&=\\frac12m \\frac1{\\delta \\tau} \\sum_{j=1}^N (x_{j+1}-x_j)^2 + \\delta \\tau\\sum_{j=1}^N \\frac{V(x_j) + V(x_{j+1})}{2} \\,.\n",
    "\\end{align}\n",
    "$$\n",
    "Note the changed relative sign between the kinetic and the potential term!  This follows from $\\delta \\tau=i\\delta t$ since one term came with positive and the other with negative power.\n",
    "\n",
    "Again in the limit $N\\to\\infty$ we have\n",
    "$$\n",
    "\\lim_{N\\to\\infty} S_E(x_1,\\ldots,x_{N+1}) = \\int_0^\\tau d\\tau' \\left( \\frac12 m \\dot{x}(\\tau')^2 + V(x(\\tau')) \\right)\n",
    "$$\n",
    "with $x_i = x(\\tau'=\\tau(i-1)/N)$ for a given differentiable function $x(\\tau')$.\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2985399c",
   "metadata": {},
   "source": [
    "## The transfer matrix\n",
    "\n",
    "It is useful to define the **transfer matrix**\n",
    "$$\n",
    "T = e^{-i H t}\n",
    "$$\n",
    "which evolves states in our Hilbert space by real time $t$.  This matrix is unitary and this preserves the probability interpretation of states.\n",
    "\n",
    "On the same Hilbert space, we can also define a **Euclidean transfer matrix**\n",
    "$$\n",
    "T_E = e^{-H \\tau}\n",
    "$$\n",
    "which is a non-unitary operator.  Since the exponential function of a matrix is just a power series\n",
    "$$\n",
    "\\exp(A) = \\sum_{n=0}^\\infty \\frac1{n!} A^n\n",
    "$$\n",
    "both $T$ and $T_E$ have the same eigenvectors as $H$.  For this reason, the eigenstates of\n",
    "the Hamiltonian are also eigenstates of the transfer matrices.  We will use this property\n",
    "to extract information about the spectrum and matrix elements of a given quantum system using the path integral formulation.  This will be a core concept of lattice quantum field theory.  For now, we continue to focus on the quantum mechanical example."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bf79015e",
   "metadata": {},
   "source": [
    "## Interpretation as a thermal system\n",
    "\n",
    "The canonical partition function of a quantum system is given by\n",
    "$$\n",
    "Z = \\textrm{Tr}\\: e^{-\\beta H}\n",
    "$$\n",
    "with\n",
    "$$\n",
    "\\beta \\equiv \\frac1{\\tilde T}\n",
    "$$\n",
    "and temperature $\\tilde T$ if we set the Boltzmann constant $k_B=1$.  This can be directly expressed in terms of the Euclidean path integral\n",
    "$$\n",
    "\\begin{align}\n",
    "Z &= \\textrm{Tr}\\: e^{-H \\beta} \\\\\n",
    "&= \\int dx \\langle x \\vert e^{-H \\beta} \\vert x \\rangle \\\\\n",
    "&= \\left(\\frac{m}{2\\pi \\delta \\beta}\\right)^{N/2} \\int dx_1\\cdots dx_{N} e^{- S_E(x_1,x_2,\\ldots,x_{N},x_1)}   + {\\cal O}(\\delta \\beta^2)\n",
    "\\end{align}\n",
    "$$\n",
    "with $\\beta=\\tau$ and $\\delta \\beta = \\delta \\tau$.  We can therefore interpret a Euclidean path integral\n",
    "with periodic boundary conditions in time, i.e.,\n",
    "$x(0) = x(\\beta)$ as the canonical partition function of the corresponding thermal system.\n",
    "\n",
    "We can use this relation to extract information about the spectrum and eigenstates of the system.  We know that if $\\vert n \\rangle$\n",
    "are the eigenstates of $H$ with eigenvalues $E_n$, then\n",
    "$$\n",
    "\\begin{align}\n",
    "\\langle x \\vert e^{-H \\beta} \\vert x \\rangle &= \\sum_{n} \\vert \\langle x \\vert n \\rangle \\vert^2 e^{-E_n \\beta} \\\\\n",
    "&= \\left(\\frac{m}{2\\pi \\delta \\beta}\\right)^{N/2} \\int dx_2 \\cdots dx_{N} e^{- S_E(x,x_2,\\ldots,x_{N},x)}   + {\\cal O}(\\delta \\beta^2) \\,.\n",
    "\\end{align}\n",
    "$$\n",
    "For a system with a non-discrete spectrum, we need to replace the sum over $n$ with an integral.  Therefore, if the system has a distinct ground state with energy $E_0$ and a finite energy gap $E_1-E_0$, we can study\n",
    "the large $\\beta$ limit and find\n",
    "$$\n",
    "\\langle x \\vert e^{-H \\beta} \\vert x \\rangle \\approx \\vert \\langle x \\vert 0 \\rangle \\vert^2 e^{-E_0 \\beta} \\,.\n",
    "$$\n",
    "By studying the $x$ and $\\beta$ dependence, we can extract both the ground state energy and the norm of the wavefunction\n",
    "$$\n",
    "\\psi_0(x) \\equiv \\langle x \\vert 0 \\rangle \\,.\n",
    "$$\n",
    "We will do this in the numerical exercise at the end of this chapter.\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2e0b9c6a",
   "metadata": {},
   "source": [
    "## Correlation functions\n",
    "\n",
    "The path integral formulation also allows for the study of correlation functions, which allow\n",
    "for access to additional matrix elements.  In general all of them follow from the operator expectation\n",
    "value\n",
    "$$\n",
    "\\langle A \\rangle \\equiv \\frac1Z \\textrm{Tr}\\: A e^{-H \\beta} \\,.\n",
    "$$\n",
    "\n",
    "A concrete example is the two-time correlator\n",
    "$$\n",
    "\\begin{align}\n",
    "\\langle x_f x_i \\rangle &= \\frac1Z \\left(\\frac{m}{2\\pi \\delta \\beta}\\right)^{N/2} \\int dx_1 \\cdots dx_{N} x_f x_i e^{- S_E(x_1,x_2,\\ldots,x_{N},x_1)}   + {\\cal O}(\\delta \\beta^2) \\\\\n",
    "&=\\frac1Z \\textrm{Tr}\\: x e^{-H(\\tau_f-\\tau_i)} x e^{-H (\\beta-\\tau_f+\\tau_i)} \\\\\n",
    "&=\\frac1Z \\sum_{n,m} \\langle n \\vert x \\vert m \\rangle \\langle m \\vert e^{-H(\\tau_f-\\tau_i)} x e^{-H (\\beta-\\tau_f+\\tau_i)} \\vert n \\rangle \\\\\n",
    "&=\\frac1Z \\sum_{n,m} \\langle n \\vert x \\vert m \\rangle \\langle m \\vert x \\vert n \\rangle  e^{-E_m(\\tau_f-\\tau_i)}  e^{-E_n (\\beta-\\tau_f+\\tau_i)} \n",
    "\\end{align}\n",
    "$$\n",
    "with sums over eigenstates $n$ and $m$ of $H$, $i,f\\in\\{1,\\ldots,N\\}$, $f \\geq i$, and $\\tau_i=\\beta(i-1)/N$.  We will\n",
    "use such correlators in this lecture to get access to general matrix elements $\\langle n \\vert x \\vert m \\rangle$\n",
    "as well as the spectrum.  All of these methods will trivially extend to quantum field theories."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9fdfe753",
   "metadata": {},
   "source": [
    "## Discretization errors\n",
    "\n",
    "We have so far not commented on the error term ${\\cal O}(\\delta \\beta^3)$.  We can interpret the $N$ times\n",
    "$\\tau_i=\\beta(i-1)/N$ as points on a finite lattice with lattice spacing\n",
    "$$\n",
    "a = \\frac{\\beta}{N}\n",
    "$$\n",
    "and the error term as ${\\cal O}(a^3)$.  In this sense, this term can then be viewed as a\n",
    "discretization error of the path integral.\n",
    "\n",
    "The origin of this term was a particular choice of Trotter formula, which had third-order errors.  We could, however,\n",
    "have chosen a higher or lower-order Trotter formula instead, which would have lead to a different power for the discretization error, say ${\\cal O}(a^2)$, and a corresponding different discretized version of $S_E$.\n",
    "\n",
    "***Homework:*** use the lower-order Trotter formula\n",
    "$$\n",
    "e^{-i H \\delta t} = e^{- i H_0 \\delta t - i V(x) \\delta t} = e^{-i V(x) \\delta t} e^{-i H_0 \\delta t} + {\\cal O}(\\delta t^2)\n",
    "$$\n",
    "and derive the corresponding discretization of the action.\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8a427b53",
   "metadata": {},
   "source": [
    "## Numerical demonstration in case of harmonic oscillator"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "5bc9807f",
   "metadata": {},
   "outputs": [],
   "source": [
    "from scipy import integrate\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# define Euclidean action for mass m=1 and V(x)=x^2/2\n",
    "def S(x, beta):\n",
    "    N = len(x) - 1\n",
    "    a = beta / N\n",
    "    return sum([1/2*(x[j+1]-x[j])**2/a + 1/4*(x[j+1]**2+x[j]**2)*a for j in range(N)])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "9cb625ce",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "10.1875"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Test of action\n",
    "S([0.5,1,2,3], 6)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "09b13eae",
   "metadata": {},
   "outputs": [],
   "source": [
    "def Z(n, beta, x0):\n",
    "    N = n + 1\n",
    "    a = beta / N\n",
    "    A = (1.0 / 2.0 / np.pi / a) ** (N/2)\n",
    "    return integrate.nquad(lambda *x: A*np.exp(-S([x0]+list(x)+[x0],beta)), \n",
    "                           [[-np.inf, np.inf] for i in range(n)], opts = {\"epsabs\": 1e-3, \"epsrel\": 1e-3})\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "cc36bcba",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(0.23455706230134904, 0.0008964712634385308)\n"
     ]
    }
   ],
   "source": [
    "print(Z(1, 1, 1.0))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "b898b423",
   "metadata": {},
   "outputs": [],
   "source": [
    "xs = np.arange(0.01,2.0,0.25)\n",
    "beta_test = 3.0\n",
    "\n",
    "# test different number of N\n",
    "ys1 = [Z(1,beta_test,x)[0] for x in xs]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "81cc52ec",
   "metadata": {},
   "outputs": [],
   "source": [
    "ys2 = [Z(2,beta_test,x)[0] for x in xs]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "368db99f",
   "metadata": {},
   "outputs": [],
   "source": [
    "ys3 = [Z(3,beta_test,x)[0] for x in xs]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d698a809",
   "metadata": {},
   "source": [
    "Test against exact solution with\n",
    "$$\n",
    "\\langle x \\vert 0 \\rangle = \\pi^{-1/4} e^{-x^2/2}\n",
    "$$\n",
    "and\n",
    "$$\n",
    "E_0 = \\frac12 \\,.\n",
    "$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "cce9e5c5",
   "metadata": {},
   "outputs": [],
   "source": [
    "ys_exact = [1 / np.pi**0.5 * np.exp(-beta_test*0.5) * np.exp(-x**2.) for x in xs]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "6a29b598",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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9OgBpVKJcePG4bvvvrPua07vAVf8/N999108+uijaNeunaS9Ofz8nXGjvwGueE2bG7PZjAsXLtj8Dfjpp5/QvXt39OrVC4899hhOnTrloQybRkREBORyOe655x58+eWX1vbW+B549913ERsbix49ekja3fUeaPEFy7lz52AymRAaGippDw0NtbkWWaOkpKTe+JqvjhzTk5x5DWp76aWX0L17d8kv53333Yf33nsPOTk5WLp0Kfbv34/7778fJpPJpfk3ljP979u3L9avX48PP/wQ//jHP2A2mzFq1CicPn0aQPN6DzT253/o0CEcPXoUTz75pKS9ufz8nVHX34CKigpcunTJJb9Tzc2yZctw8eJFPPLII9a2qKgobNy4EdnZ2XjrrbdQWFgItVqNCxcueDBT15DL5VizZg127NiBHTt2QKlUIiYmBvn5+QBc83e1OTlz5gw++eQTm78D7nwPtJi7NVPTWbJkCbZu3Qq9Xi8ZeProo49a/3/QoEEYPHgwbr75Zuj1etx9992eSNVloqOjER0dbX08atQo3HrrrXj77bfx6quvejAz93v33XcxaNAgREZGStpb8s+fpDZv3oxXXnkFH374oWQMx/3332/9/8GDByMqKgo9evTABx98gKlTp3oiVZfp27cv+vbta308atQonDhxAitXrsTf//53D2bmGZs2bULHjh0RHx8vaXfne6DFn2EJCQmBTCZDaWmppL20tBRhYWF2nxMWFlZvfM1XR47pSc68BjWWLVuGJUuW4LPPPsPgwYPrje3VqxdCQkLw888/NzpnV2pM/2u0adMGQ4cOtfatOb0HGtP/yspKbN26tUF/eLz15++Muv4GBAUFITAw0CXvqeZi69atePLJJ/HBBx/YXCarrWPHjrjllltaxHvAnsjISGvfWtN7QBRFrF+/HpMnT4afn1+9sU35HmjxBYufnx+GDx+OnJwca5vZbEZOTo7kX9DXi46OlsQDwN69e63xPXv2RFhYmCSmoqICBw8erPOYnuTMawBYZsG8+uqryM7OxogRI274fU6fPo1ff/0VcrncJXm7irP9v57JZMK3335r7Vtzeg80pv/bt2/HlStX8Pjjj9/w+3jrz98ZN/ob4Ir3VHOwZcsWJCcnY8uWLZIp7XW5ePEiTpw40SLeA/YUFBRY+9Za3gMAsH//fvz8888N+odLk74H3DK018O2bt0q+vv7ixs3bhSPHTsmPv3002LHjh3FkpISURRFcfLkyeLs2bOt8V9++aXo6+srLlu2TPz+++/FBQsWiG3atBG//fZba8ySJUvEjh07ih9++KH4zTffiOPGjRN79uwpXrp0ye39awhHX4MlS5aIfn5+YlZWllhcXGzdLly4IIqiKF64cEF88cUXxdzcXLGwsFD8/PPPxWHDhol9+vQRL1++7JE+1sfR/r/yyivip59+Kp44cULMy8sTH330UTEgIED87rvvrDHN6T3gaP9r3HHHHWJiYqJNe3P7+V+4cEE8cuSIeOTIERGAuGLFCvHIkSPiyZMnRVEUxdmzZ4uTJ0+2xv/3v/8V27ZtK86aNUv8/vvvxczMTFEmk4nZ2dnWmBu9pt7G0dfg/fffF319fcXMzEzJ34Dz589bY1544QVRr9eLhYWF4pdffinGxsaKISEhYllZmdv7dyOO9n/lypXirl27xJ9++kn89ttvxZSUFNHHx0f8/PPPrTEt/T1Q4/HHHxejoqLsHtOd74FWUbCIoiiuWrVKvOmmm0Q/Pz8xMjJS/Oqrr6z7Ro8eLU6ZMkUS/8EHH4i33HKL6OfnJw4YMED8+OOPJfvNZrM4b948MTQ0VPT39xfvvvtu8fjx4+7oitMceQ169OghArDZFixYIIqiKFZVVYn33nuv2LVrV7FNmzZijx49xKeeesprf1FF0bH+p6amWmNDQ0PFP/3pT2J+fr7keM3tPeDo78APP/wgAhA/++wzm2M1t59/zRTV2ltNn6dMmSKOHj3a5jkRERGin5+f2KtXL3HDhg02x63vNfU2jr4Go0ePrjdeFC1TveVyuejn5yeGh4eLiYmJ4s8//+zejjWQo/1funSpePPNN4sBAQFi586dxZiYGPFf//qXzXFb8ntAFC3LNQQGBopr1661e0x3vgcEURRF15+3ISIiInKdFj+GhYiIiJo/FixERETk9ViwEBERkddjwUJERERejwULEREReT0WLEREROT1WLAQERGR12PBQkRERF6PBQsRERF5PRYsRERE5PVYsBAREZHXY8FCREREXu//AVo9W987uvzkAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots()\n",
    "\n",
    "ax.scatter(xs, ys1, c='blue', label=\"n=1, N=2\")\n",
    "ax.scatter(xs, ys2, c='red', label=\"n=2, N=3\")\n",
    "ax.scatter(xs, ys3, c='orange', label=\"n=3, N=4\")\n",
    "ax.scatter(xs, ys_exact, c='black', label=\"exact\")\n",
    "\n",
    "ax.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4ebea6c7",
   "metadata": {},
   "source": [
    "***Homework:*** repeat the exercise for $V(x) = x^4$"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a319eec2",
   "metadata": {},
   "source": [
    "Make sure to explore both the $\\lim_{N\\to\\infty}$, i.e., $\\lim_{a\\to0}$ as well as the $\\lim_{\\beta\\to\\infty}$ limit.\n",
    "What do both control?\n",
    "\n",
    "We notice that already for $n=3$, the integration is quite slow.  There must be a better way to compute these integrals.  This will be the topic of the next chapter."
   ]
  }
 ],
 "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.12.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
