{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Random processes and Monte Carlo Methods\n", "\n", "Many processes in physics can be modelled as random, even though very few actually are. A classic example is the Brownian motion of a particle in a gas - if we knew the position and velocity of every gas molecule, then, in principle, we could calculate the exact trajectory of the particle. However, a random trajectory is a pretty good approximation and a lot easier to calculate. Some processes are truly random, such as radioactive decay, where we can get the probability of decay per unit time (the decay rate), but the exact moment is random and cannot be predicted.\n", "\n", "![Brownian motion](images/output.gif)\n", "\n", "\n", "\n", "## Random numbers\n", "\n", "![random](images/random.jpg)\n", "\n", "To model random processes, we need to introduce a method for calculating random numbers...or rather *pseudorandom* numbers, as any algorithm (called a *random number generator*) based on a deterministic formula will never be truly random. Consider the following equation:\n", "\n", "$$ x^\\prime = (ax+c)\\bmod m$$\n", "\n", "with $a, b, c$ and $m$ integer constants and $x$ is an integer variable. If we iterate this, using $x^\\prime$ as the new value of $x$ at each step, we get a set of integers. Let's try it in Python." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#from numpy import\n", "import matplotlib.pyplot as plt \n", "\n", "N = 100 # number of iterations\n", "a = 1664525\n", "c = 1013904223\n", "m = 4294967296\n", "x = 1\n", "numbers = []\n", "\n", "for i in range(N):\n", " x = (a*x+c)%m\n", " numbers.append(x)\n", " \n", "plt.plot(numbers,\"o\")\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The resultant plot appears random, but it is clearly not - re-running the code will always generate the same set of numbers and if you know the formula, you can calculate exactly the numbers it will produce. This is known as a *linear congruential random number generator* (LCRNG), one of the most famous methods and, for certain problems, the numbers are random *enough*. \n", "\n", "#### Example - Initial conditions\n", "\n", "The results are also very dependent on the choice of $a, b, c$ and $m$ and these were picked carefully - try some other possibilities and see how the plot changes.\n", "\n", "While you always get the same result for a given starting $x$, you will get a different distributions for different initial values of $x$ - $x$ acts as the *seed* for the distribution. In general, the strong correlations between numbers in a LCRNG can introduce errors in computational physics problems and we want to use something much closer to giving us an uncorrelated sequence. As we have seen, this is available directly from `numpy`, using a *permutation congruential generator* (PCG64 specifically), which is a much more statistically accurate RNG." ] }, { "cell_type": "code", "execution_count": 66, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from numpy import random\n", "import matplotlib.pyplot as plt \n", "\n", "rdist = random.rand(1000) # make a 1000 random numbers from 0 < x <= 1.\n", "\n", "plt.plot(rdist,\"o\")\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There are plenty of other options depending on the specific features you want and we will consider some of them shortly, but in general you should check the details on the `numpy` pages before you use them. However, there are some basic features of this new type of function that it is important to understand initially." ] }, { "cell_type": "code", "execution_count": 87, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.8505415877340458\n", "0.6086915966095477\n", "0.6833051215165522\n" ] } ], "source": [ "from numpy import random\n", "\n", "print(random.rand())\n", "print(random.rand())\n", "print(random.rand())\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This seems very trivial, but is important to emphasize, unlike previous functions we have used, you will get a different number every time you call a `random` function, so you will need to store it at the point of creation if you want to use it again. This behaviour can be changed by using explicit *seeds*, much as we saw for the LCRNG. Then you will always get the same set of numbers - useful for testing purposes and for defeating *save-scummers*." ] }, { "cell_type": "code", "execution_count": 147, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0.37454012 0.95071431 0.73199394 0.59865848 0.15601864 0.15599452\n", " 0.05808361 0.86617615 0.60111501 0.70807258]\n" ] } ], "source": [ "from numpy import random\n", "\n", "random.seed(42)\n", "print(random.rand(10))\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Probabilities and bias\n", "\n", "It is very common that we want an event to occur with a certain probability, for example, that a particle would move 20% of the time. This is very straightforward with random numbers and is termed \"the toss of a biased coin\" by statisticians. An example of a very biased coin..." ] }, { "cell_type": "code", "execution_count": 161, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Heads\n" ] } ], "source": [ "from numpy import random\n", "\n", "rng = random.default_rng() # now introducing the idea of generator-distribution pair.\n", "#rng = random.default_rng(42) # set the generator with a seed\n", "\n", "if rng.random()<0.2:\n", " print(\"Heads\")\n", "else:\n", " print(\"Tails\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Example - Biased coin\n", "\n", "Expand the coin tossing code so that you can actually see the distribution of results over a significant sample in a plot.\n", "\n", "#### Example - Decay of an isotope\n", "\n", "The radioisotope $^{208}$Tl (thallium 208) decays to stable $^{208}$Pb (lead 208) with a half-life ($\\tau$) of 3.053 minutes. Suppose we start with a sample of 1000 thallium atoms and simulate their decay over time using random numbers. On average, we know that radioactive decay is exponential, such that the number $N$ of atoms in our sample decays as:\n", "\n", "$$N(t) = N(0)2^{-\\frac{t}{\\tau}} (=N(0)\\text{e}^{-\\frac{\\ln2 t}{\\tau}})$$\n", "\n", "Then the fraction of atoms remaining after time $t$ is:\n", "\n", "$$\\frac{N(t)}{N(0)} = 2^{-\\frac{t}{\\tau}}$$\n", "\n", "and the fraction that have decayed, which is equal to the probability that any given atom has decayed, is 1 minus that:\n", "\n", "$$p(t) = 1 - 2^{-\\frac{t}{\\tau}}$$\n", "\n", "We can code this by dividing our atoms into two sets, one of thallium and one of lead (with zero members at $t=0$)." ] }, { "cell_type": "code", "execution_count": 194, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from numpy import random,linspace\n", "import matplotlib.pyplot as plt\n", "\n", "# Constants\n", "NTl = 1000 # Initial number of thallium atoms\n", "NPb = 0 # Initial number of lead atoms\n", "tau = 3.053*60 # Half life of thallium in seconds\n", "h = 1 # Size of time-step in seconds\n", "p = 1 - 2**(-h/tau) # Probability of decay in one step\n", "tmax = 1000 # Total time\n", "steps = tmax//h # Number of timesteps\n", "\n", "# Lists of plot points\n", "\n", "tpoints = linspace(0,tmax,steps+1)\n", "exp_decay = NTl*2**(-tpoints/tau) # calculate the exact exponential decay (this is base-2, since we are talking about half-lives in radioactivity)\n", "\n", "Tlpoints = []\n", "Pbpoints = []\n", "rng = random.default_rng() \n", "\n", "# Main loop\n", "for t in tpoints:\n", " Tlpoints.append(NTl)\n", " Pbpoints.append(NPb)\n", "\n", " # Calculate the number of atoms that decay\n", " decay = 0\n", " for i in range(NTl):\n", " if rng.random()" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from numpy import random,linspace,log\n", "import matplotlib.pyplot as plt\n", "from scipy import special\n", "\n", "rng = random.default_rng() \n", "points = 1000000\n", "\n", "z = rng.random(points)\n", "x1 = -log(1-z) # the solution for the simple exponential decay \n", "x2 = special.erfinv(z) # the solution of our Gaussian distribution above\n", "\n", "bedges = linspace(0,5,100) \n", "\n", "plt.figure(figsize=(10,6))\n", "plt.subplot(3,1,1) \n", "plt.hist(z,color='blue',bins=bedges,label='Uniform')\n", "plt.legend()\n", "\n", "plt.subplot(3,1,2)\n", "plt.hist(x1,color='red',bins=bedges,label='Exponential')\n", "plt.legend()\n", "\n", "plt.subplot(3,1,3)\n", "plt.hist(x2,color='green',bins=bedges,label='Gaussian')\n", "plt.legend()\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Many of the different attempts to find increasingly accurate approximations to a truly random Gaussian distribution are discussed in this [review](https://dl.acm.org/doi/10.1145/1287620.1287622). In the following example we switch fully to using the `numpy` options, as they are generally the fastest and most reliable.\n", "\n", "#### Example - Rutherford scattering\n", "\n", "![rutherford scattering](images/output2.gif)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Rutherford's group demonstrated in the early 20th century that alpha particles are scattered by the positive nucleus of an atom and that the angle through which it scatters obeys:\n", "\n", "$$\\tan\\frac{1}{2}\\theta = \\frac{Ze^2}{2\\pi \\epsilon_0 Eb}$$\n", "\n", "where $Z$ is the atomic charge of the nucleus, $e$ is the unit of elementary charge, $\\epsilon_0$ is the permittivity of free space, $E$ is the kinetic energy of the incident $\\alpha$ particle and $b$ is the impact parameter (the perpendicular distance between the particle's initial trajectory and the axis running through the nucleus.).\n", "\n", "![rutherford angle](images/rutherford.jpg)\n", "\n", "Consider a beam of particles with energy 7.7 MeV that has a Gaussian profile in both its $x$ and $y$ axes with a standard deviation of $\\sigma = 0.01a_0$, where $a_0$ is the Bohr radius. The beam is fired directly at a gold atom and we can simulate the scattering by considering the behaviour of a million $\\alpha$ particles and calculating how many *bounce back* on scattering i.e. the scattering angle is greater than 90$^{\\text{o}}$. We can use the angle dependence of the impact parameter to change this to a condition for $b$. For $\\theta = 90^{\\text{o}}$:\n", "\n", "$$ b = \\frac{Ze^2}{2\\pi \\epsilon_0 E}$$\n", "\n", "and if $b$ is less than this, the particle will bounce back." ] }, { "cell_type": "code", "execution_count": 75, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1539 particles were reflected out of 1000000 (0.154%).\n" ] } ], "source": [ "from numpy import random,sqrt,pi,count_nonzero\n", "\n", "# Constants\n", "Z = 79 # atomic charge of nucleus\n", "e = 1.602e-19 # unit of elementary charge\n", "E = 7.7e6*e # kinetic energy\n", "epsilon0 = 8.854e-12 # permittivity of free space\n", "a0 = 5.292e-11 # Bohr radius\n", "cutoff = Z*e*e/(2*pi*epsilon0*E) # scatter if b less than this\n", "sigma = 0.01*a0 # standard deviation\n", "N = 1000000 # number of incident particles\n", "\n", "rng = random.default_rng() \n", "\n", "x = rng.normal(0, sigma, N)\n", "y = rng.normal(0, sigma, N)\n", "r = sqrt(x*x+y*y) # calculate r from x and y\n", "\n", "particle_scatter = count_nonzero(r < cutoff)\n", "scatter_percent = 100*particle_scatter/N\n", "\n", "print(\"{} particles were reflected out of {} ({:.3f}%).\".format(particle_scatter, N, scatter_percent))\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Rutherford was so amazed by this result in 1909, that he famously exclaimed that having the particle scatter \"was about as credible as if you had fired a 15-inch shell at a piece of tissue paper and it had come back and hit you.\"\n", "\n", "#### Example - Visualization\n", "\n", "Modify the code to plot the distribution of alpha particles around the nucleus and highlight the scattered particles." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Random number distributions\n", "\n", "Let's now consider some of the different random function distributions available in `numpy`." ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Random floats in [0,1]:\n", "[0.31536848 0.93529772 0.89738888 0.50528478 0.09764386]\n", "\n", "Random floats from normal distribution:\n", "[-2.03901395 0.51684549 0.89410131 -1.12862489 1.04540951]\n", "\n", "Random floats from Cauchy distribution:\n", "[-0.60539632 -0.35374788 -1.23485618 -0.46621814 0.0096132 ]\n", "\n", "Random integers from 1 to 10 inclusive:\n", "[7 6 2 6 8]\n", "\n", "4 by 5 array of random integers from 0 to 9:\n", " [[7 5 1 7 4]\n", " [2 6 6 4 7]\n", " [9 9 0 8 9]\n", " [2 0 7 6 2]]\n" ] } ], "source": [ "from numpy import random\n", "import matplotlib.pyplot as plt\n", "\n", "rng = random.default_rng() \n", "\n", "print('Random floats in [0,1]:')\n", "print(rng.random(5))\n", "\n", "print('\\nRandom floats from normal distribution:')\n", "print(rng.standard_normal(5))\n", "\n", "print('\\nRandom floats from Cauchy distribution:')\n", "print(rng.standard_cauchy(5))\n", "\n", "print('\\nRandom integers from 1 to 10 inclusive:')\n", "print(rng.integers(1,11,5)) # note will include 1 but not 11\n", "\n", "print('\\n4 by 5 array of random integers from 0 to 9:\\n',rng.integers(0,10,(4,5)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We are considering the following distributions:\n", "\n", "#### Normal\n", "\n", "The probability density for the (normal) Gaussian distribution is:\n", "\n", "$$p(x) = \\frac{1}{\\sqrt{ 2 \\pi \\sigma^2 }}\\text{e}^{ - \\frac{ (x - \\mu)^2 } {2 \\sigma^2} }$$\n", "\n", "where $\\mu$ is the mean and $\\sigma$ the standard deviation. The square of the standard deviation, $\\sigma^2$, is called the variance. The function has its peak at the mean, and its *spread* increases with the standard deviation (the function reaches 0.607 times its maximum at $x + \\sigma$ and $x - \\sigma$). This implies that normal is more likely to return samples lying close to the mean, rather than those far away.\n", "\n", "#### Cauchy\n", "\n", "The probability density function for the full Cauchy distribution is:\n", "\n", "$$P(x; x_0, \\gamma) = \\frac{1}{\\pi \\gamma \\bigl[ 1+(\\frac{x-x_0}{\\gamma})^2 \\bigr] }$$\n", "\n", "and the Standard Cauchy distribution just sets $x_0=0$ and $\\gamma=1$. The Cauchy distribution arises in the solution to the driven harmonic oscillator problem, and also describes spectral line broadening. It also describes the distribution of values at which a line tilted at a random angle will cut the x axis. When studying hypothesis tests that assume normality, seeing how the tests perform on data from a Cauchy distribution is a good indicator of their sensitivity to a heavy-tailed distribution, since the Cauchy looks very much like a Gaussian distribution, but with heavier tails.\n", "\n", "#### Exponential\n", "\n", "The exponential probability density function is:\n", "\n", "$$f(x; \\frac{1}{\\beta}) = \\frac{1}{\\beta} \\exp(-\\frac{x}{\\beta})$$\n", "\n", "for $x > 0$ and $0$ elsewhere. $\\beta$ is the scale parameter, which is the inverse of the rate parameter $\\lambda = 1/\\beta$. The rate parameter is an alternative, widely used parameterization of the exponential distribution. The exponential distribution is a continuous analogue of the geometric distribution. It describes many common situations, such as the size of raindrops measured over many rainstorms, or the time between page requests to Wikipedia.\n", "\n", "The differences can be seen more clearly if we plot histograms of the values for a much large sampling set." ] }, { "cell_type": "code", "execution_count": 129, "metadata": {}, "outputs": [ { "data": { "image/png": "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JElSpzR+/HjGjBmTuxmt5sB8SZI6mLpz7l+ny3/pW/vXnLeuro5//OMfvPDCC3Tr1g2AG2+8kSlTpvDII4+soxZuGOwJkyRJa7Rq1SquuuqqtVpGSol33323jVq0fjAIkyRJa/Sf//mfXHHFFSxcuPA9aY8//jijRo2iV69ejBo1iscff7whbfTo0Zx33nnsueeebLbZZrzwwguMHj2a888/n49+9KN0796dAw88kPnz53PkkUfSs2dPRo0axUsvvdSwjNNOO41BgwbRs2dPdt11Vx577LH2WOV24elISVoLE6ZNaJd6xo4Y2y71SI0ZOXIko0eP5oorruDiiy9umP/mm2+y//77c/XVV3P44Ydz5513sv/++/Pcc8/Rp08fACZPnswDDzzAjjvuSEoJgNtuu41f/epX9O3blz322IM99tiDCRMm8KMf/YjjjjuOb37zm/zwhz8EYNSoUVxwwQX06tWLq666ikMPPZSXXnqJrl27tv+GaGP2hEmSpGZdeOGFXHPNNcydO7dh3v3338/222/PUUcdRZcuXTj88MPZaaeduPfeexvyHHvssQwbNowuXbo03FH+y1/+MkOGDKFXr17su+++DBkyhH322YcuXbpw6KGH8te//rWh/JgxY+jTpw9dunThzDPPZMWKFTz77LPtt+LrkEGYJElq1i677MIBBxzAt771rYZ5f//73xk8ePBq+QYPHsycOXMa3g8aNOg9y+rfv3/D6/e9733veb906dKG99/97ncZOnQovXr1YvPNN2fRokXMmzevTdYpN4MwSZJUk29+85tMnDixIcgaOHAgs2bNWi3Pyy+/zFZbbdXwfm1uRPvYY4/x7W9/mzvuuIMFCxawcOFCevXq1XBas7MzCJMkSTXZbrvtOOyww7j66qsB2G+//Zg5cya33norq1at4vbbb+fpp5/mgAMOaJP6lixZQpcuXejXrx+rVq3iwgsvZPHixW2y7I7AgfmSJHUwLbmPV3u74IILmDx5MgB9+vThvvvu47TTTuOUU05hu+2247777qNv375tUtdnPvMZ9t13X3bYYQe6devGV7/61UZPb3ZW0dm69EaOHJmmTp2auxmSBHh1pNbeM888w9ChQ3M3Q2upqf0YEX9OKY1srIynIyVJkjIwCJMkScrAIEySJCkDgzBJkqQMDMIkSZIyMAiTJEnKwCBMkiQpA4MwSZKkDAzCJElSh1JXV8dDDz2UuxnrnI8tkiSpo3n4snW7/E/83xZlv/XWW7nyyiuZMWMGPXr0YMSIEZx33nnstdde66iBGwZ7wiRJUpOuvPJKTj/9dM4991xef/11Xn75ZcaOHcvPf/7z3E3r9AzCJElSoxYtWsQFF1zAtddey8EHH0y3bt3YZJNNOPDAA/nOd77DH//4R/bYYw8233xzBgwYwLhx41i5ciUAL730EhHBqlWrGpY3evRobrzxxob3EydOZOjQofTo0YOdd96Zv/zlLw1p06ZN40Mf+hC9evXisMMOY/ny5QDssssu3HvvvQ353n77bfr27cu0adPW9eZocwZhkiSpUb/73e9Yvnw5X/jCFxpN33jjjfne977HvHnz+N3vfsevf/1rJkyo7aH2d955J+PHj+eWW25h8eLF/OIXv6BPnz4N6XfccQcPPvggL774Ik8++SSTJk0C4Oijj2bKlCkN+X75y18yYMAARowY0foVzaSmICwipkTEqxGxOCJmRsQJFWmfjIgZEfFWRDwcEYMr0jaNiJvLcq9FxBlVy22yrCRJymv+/Pn07duXLl0aH0K+6667svvuu9OlSxfq6uo4+eSTefTRR2ta9o033shZZ53FqFGjiAi22247Bg/+ZxjwH//xHwwcOJAtttiCAw88sKGna8yYMfzyl79k8eLFAEyePJmjjjpqLdc0j1p7wi4D6lJKPYHPARdHxK4R0Re4C/g6sAUwFbi9otx4YHtgMPAJ4KyI+CxADWUlSVJGffr0Yd68eaudUqw0c+ZMDjjgALbcckt69uzJueeey7x582pa9iuvvMKQIUOaTN9yyy0bXm+22WYsXboUgIEDB7Lnnnvys5/9jIULF/LAAw9w5JFHtmCtOo6agrCU0vSU0or6t+U0BDgYmJ5SujOltJwi6BoeETuVeY8GLkopLUgpPQNMBI4t05orK0mSMtpjjz3o2rUr99xzT6Ppp5xyCjvttBN/+9vfWLx4MZdeeikpJQC6desGwFtvvdWQ/7XXXmt4PWjQIJ5//vlWteuYY45hypQp3Hnnneyxxx5stdVWrVpObjWPCYuICRHxFjADeBX4JTAMeKI+T0ppGfA8MCwiegMDK9PL18PK102WbdWaSJKkNtWrVy8uvPBCvvKVr3DPPffw1ltv8fbbb/PAAw9w1llnsWTJEnr27En37t2ZMWMG1113XUPZfv36sdVWWzFlyhTeeecdbr755tWCrhNOOIErrriCP//5z6SUeO6555g1a1ZN7TrooIP4y1/+wlVXXcXRRx/d5uvdXmq+T1hKaWxEnArsAYwGVgDdgblVWRcBPcq0+vfVaTRTdjURcRJwEsAHPvCBWpssSVLn1ML7eK1LZ5xxBv379+fiiy/myCOPpEePHuy6666cd955HHDAAZx00klcfvnlfPjDH+awww7jv//7vxvKTpw4kbFjx3Luuedy/PHH89GPfrQh7dBDD2X+/PkcccQRzJkzh7q6OiZPnrzauLCmvO997+OQQw7hJz/5CQcffPA6We/2EPXdhi0qFHE98DTFKclNUkpjK9L+l+LU4n8DbwL9U0pvlGmHAONTSh+MiKuaKptS+llTdY8cOTJNnTq1xW2WpHVhwrTargRbW2NHjG0+kzqlZ555hqFDh+ZuRqdz4YUXMnPmzNWulMypqf0YEX9OKY1srExrb1HRhSIAmw4Mr6ioW/38lNICitOWwyvKDS/LsKayrWyTJEnaALz55pvcdNNNnHTSSbmbslaaDcIi4v0R8aWI6B4RG0fEZ4DDKXq67gZ2iYhDIqIrcAHwZEppRln8FuD8iOhdDrg/EZhUpjVXVpIkaTUTJ05k0KBB7Lvvvnz84x/P3Zy1UktPWAJOAWYDC4ArgNNTSj9PKc0FDgEuKdN2A75UUfYbFIPtZwGPAt9JKT0IUENZSZKk1Zx44oksW7aM66+/PndT1lqzA/PLYGnvNaQ/BDR6W4nythbHlVOLykqSJK3PfGyRJElSBgZhkiRJGRiESZIkZWAQJkmSlIFBmCRJ2mB1796dF154odl8L730EhHR5MPMW6PmxxZJkqT2sa6fxNCSJzDU1dXx+uuvs/HGGzfMO/bYY/nBD36wLpq2To0ePZoxY8ZwwgknNMxbunRptvYYhEmSpDW699572WeffXI3Y73j6UhJktRip5xyCv/2b//W8P7ss8/mk5/8JCklHnnkEbbeemsuvfRS+vbtS11dHT/+8Y8b8i5atIijjz6afv36MXjwYC6++GLeffddACZNmsRee+3F1772NXr37s0222zDAw88sFrZ448/ngEDBrDVVltx/vnn88477zRb9rzzzuOxxx5j3LhxdO/enXHjxgEQETz33HMA3H///Xz4wx+mZ8+eDBo0iPHjx6/TbWhPmCRJarHvfve7jBgxgkmTJjFkyBBuuukmpk2bRkQA8NprrzFv3jzmzJnD73//e/bbbz9GjhzJjjvuyKmnnsqiRYt44YUXmD9/Pp/+9KcZMGAAxx9/PAB/+MMfOOaYY5g3bx433HADxx9/PHPmzCEiOOaYY+jfvz/PPfccy5Yt44ADDmDQoEGcfPLJayx7ySWX8Nvf/vY9pyMrdevWjVtuuYVhw4bx1FNP8alPfYoRI0Zw0EEHrZNtaE+YJElao4MOOojNN9+8YZo4cSKbbbYZU6ZM4YwzzmDMmDFcc801bL311quVu+iii9h0003Ze++92X///bnjjjt45513uP3227nsssvo0aMHdXV1nHnmmUyePLmh3ODBgznxxBPZeOONOeaYY3j11Vd5/fXXef3113nggQf4/ve/T7du3Xj/+9/PV7/6VW677bZmy9Zi9OjRfPCDH2SjjTbiQx/6EIcffjiPPvpo22zERtgTJkmS1uiee+5pdEzYv/7rv7Ltttvyxhtv8MUvfnG1tN69e9OtW7eG94MHD+bvf/878+bNY+XKlQwePHi1tDlz5jS833LLLRteb7bZZkAxgP7NN9/k7bffZsCAAQ3p7777LoMGDWq2bC3+8Ic/cM455/DUU0+xcuVKVqxYwaGHHlpT2dawJ0ySJLXKtddey4oVKxg4cCCXX375amkLFixg2bJlDe9ffvllBg4cSN++fdlkk02YNWvWamlbbbVVs/UNGjSITTfdlHnz5rFw4UIWLlzI4sWLmT59ek3trT9V2pQjjjiCz33uc7zyyissWrSIf//3fyelVNOyW8MgTJIktdjMmTM5//zzmTJlCpMnT+byyy9n2rRpq+X5xje+wcqVK3nssce47777OPTQQ9l444354he/yHnnnceSJUuYNWsWV155JWPGjGm2zgEDBvDpT3+aM888k8WLF/Puu+/y/PPP13zKsH///mu8J9iSJUvYYost6Nq1K3/84x+59dZba1pua3k6UpKkDqYl9/FqDwceeOBq9wn71Kc+xZw5czj77LMZPnw4AJdeeilHHXUUU6dOBYrTgr1792bgwIFsttlmXH/99ey0004AXHPNNZx66qlsu+22dO3alRNPPJHjjjuuprbccsstnHPOOey8884sWbKEbbfdlrPPPrumsqeddhrHHHMM1113HUcd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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from numpy import random,linspace\n", "import matplotlib.pyplot as plt\n", "\n", "rng = random.default_rng() # current method for calling generators\n", "\n", "numbers_std = rng.standard_normal(10000)\n", "numbers_cau = rng.standard_cauchy(10000)\n", "numbers_exp = rng.standard_exponential(10000)\n", "\n", "bedges = linspace(-5,5,20) # pick bin edges for histogram\n", "plt.figure(figsize=(10,6))\n", "plt.rc('font',size=12)\n", "plt.hist(numbers_std,bins=bedges,label='Normal')\n", "plt.hist(numbers_cau,bins=bedges,label='Cauchy',alpha=0.5)\n", "plt.hist(numbers_exp,bins=bedges,label='Exponential',alpha=0.5)\n", "plt.title('10,000 random numbers from three distributions')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Example - Entropy and diffusion\n", "\n", "We can use the random numbers to model the diffusion of the drop of dye in water using the concept of a *random walk*. For ease of display, we focus on a simulation in 2D, but the concept is the same in 3D.\n", "\n", "We start with 400 particles in a square grid centered at (100,100). At each step, the program picks each particle and moves it (or not) one integer step in the $x$ and $y$ directions. If the move would take the particle beyond the boundary of space (200 $\\times$ 200), then the particle bounces off the wall and moves in the other direction. The program plots the positions of all particles after each step." ] }, { "cell_type": "code", "execution_count": 95, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "import time\n", "import matplotlib.pyplot as plt\n", "from numpy import random,ones\n", "from IPython import display\n", "\n", "plt.ion()\n", "\n", "rng = random.default_rng() # current method for calling generators\n", "\n", "# set up graph window\n", "plt.figure(figsize=(10,10))\n", "\n", "# the range (a,b), inclusive.\n", "# Define droplet coordinates (all droplets) to be at point 100,100.\n", "atoms = ones([400,2])*100\n", "\n", "# show initial configuration\n", "line, = plt.plot(atoms[:,0], atoms[:,1], 'bo', linewidth=2, markersize=10)\n", "\n", "plt.xlim(0 ,200)\n", "plt.ylim(0 ,200)\n", "plt.grid(True)\n", "\n", "# How many steps to take?\n", "N = 1000\n", "\n", "for i in range(N):\n", "# Go through all atoms\n", " for j in range (400):\n", "# Move each atom (or not) in the x and/or y direction - upper limit is not included in options.\n", " atoms[j,0] += rng.integers(-1,2)\n", " atoms[j,1] += rng.integers(-1,2)\n", "# Check for boundary collision\n", " x,y = (atoms[j,0],atoms[j,1]) \n", " if x == 200:\n", " atoms[j,0] = 198\n", " elif x == 0: \n", " atoms[j,0] = 2\n", " if y == 200: \n", " atoms[j,1] = 198\n", " elif y == 0: \n", " atoms[j,1] = 2\n", " \n", "# See how things look now - here we use set_xdata to change all the data for that axis.\n", " line.set_xdata(atoms[:,0]) \n", " line.set_ydata(atoms[:,1])\n", " plt.draw()\n", "# display.clear_output(wait=True)\n", "# display.display(plt.gcf())\n", "# time.sleep(0.01) \n", " \n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We see that the dye gradually diffuses out, increasing the disorder in the system - the *entropy*. For a system of discrete states like this, we can defined the entropy exactly:\n", "\n", "$$S = -k_{B} \\sum_{i} P_{i}\\ln P_{i}$$\n", "\n", "where $P_{i}$ is the probability of finding a particle in state $i$. \n", "\n", "If we split up our system into a grid of square states, the probability (or relative frequency) of particles in each state is the number of particles per square, divided by the total number of particles. \n", "\n", "The entropy of the initial state is zero for this particular choice of states. The relative frequency for each state is zero for all but the center state, since they’re all empty. So $P_{i} = 0$ for all but the center square. In the center square, $P_{i} = 1$ since all of the particles are there, and $\\ln 1 = 0$ so the total entropy is $S = 0$.\n", "\n", "If we track the number of particles in each state as a function of the diffusion step we can see how entropy changes with time...it should increase." ] }, { "cell_type": "code", "execution_count": 73, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2min 11s ± 3.97 s per loop (mean ± std. dev. of 7 runs, 1 loop each)\n" ] } ], "source": [ "%%timeit # comment out print statements when testing speed\n", "import matplotlib.pyplot as plt\n", "from numpy import random,ones,zeros,log,where,sum\n", "\n", "rng = random.default_rng() # current method for calling generators\n", "\n", "# the range (a,b), inclusive.\n", "# Define droplet coordinates (all droplets) to be at point 100,100.\n", "particles = 400\n", "atoms = ones([particles,2])*100\n", "\n", "# How many steps to take?\n", "N = 1000\n", "# estimate the entropy\n", "grid = 8 # determines the resolution that you can track the entropy\n", "box = 200\n", "cell = int(box/grid)\n", "\n", "entropy = zeros(N) \n", "kb = 8.617333262145e-5 # in eV/K\n", "\n", "for i in range(N):\n", " state_count = zeros((grid,grid)) # initialize state count\n", " s = 0.0 # initialize sum\n", "# Go through all atoms\n", " for j in range (particles):\n", "# Move each atom (or not) in the x and/or y direction - upper limit is not included in options.\n", " atoms[j,0] += rng.integers(-1,2)\n", " atoms[j,1] += rng.integers(-1,2)\n", "# Check for boundary collision\n", " x,y = (atoms[j,0],atoms[j,1]) \n", " if x == box:\n", " atoms[j,0] = 198\n", " elif x == 0: \n", " atoms[j,0] = 2\n", " if y == box: \n", " atoms[j,1] = 198\n", " elif y == 0: \n", " atoms[j,1] = 2\n", "# entropy calculation \n", " for gx in range(grid):\n", " for gy in range(grid):\n", " if x in range(gx*cell,(gx+1)*cell) and y in range(gy*cell,(gy+1)*cell):\n", " state_count[gx,gy] += 1\n", " \n", " for gx in range(grid):\n", " for gy in range(grid):\n", " if state_count[gx,gy] != 0.0:\n", " state_prob = state_count[gx,gy]/particles\n", " s += (log(state_prob))*state_prob\n", "\n", " entropy[i] = -kb*s\n", "\n", "# entropy[i] = -kb*(log(state_count[where(state_count != 0)]/particles)*(state_count[where(state_count != 0)]/particles)).sum()\n", "\n", "# plot the entropy change as the system develops\n", "# plt.plot(entropy)\n", "# plt.xlabel(\"Diffusion step\")\n", "# plt.ylabel(\"Entropy\")\n", "# plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Monte Carlo Integration\n", "\n", "In principle, we can solve the particle scattering problem analytically, although it is rather tedious using the $\\text{erf}$ function. However, one approach to find the Gaussian distribution is by transforming to polar coordinates, which gives much more straightforward integrals. We will skip the derivation here, as it is not very important to the discussion, but then the normalized distribution function for $r$ is:\n", "\n", "$$ p(r) = \\frac{r}{\\sigma^2}\\exp\\left(-\\frac{r^2}{2\\sigma^2}\\right)$$\n", "\n", "Then the probability of scattering through more than 90$^{\\text{o}}$, i.e. when $r$ is from zero to $b$, is:\n", "\n", "$$\\frac{1}{\\sigma^2}\\int_0^b\\exp\\left(-\\frac{r^2}{2\\sigma^2}\\right)rdr = 1 - exp\\left(-\\frac{b^2}{2\\sigma^2}\\right) = 1 - exp\\left(-\\frac{z^2e^4}{8\\pi^2\\epsilon^2_0\\sigma^2E^2}\\right) $$" ] }, { "cell_type": "code", "execution_count": 90, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.156% of particles were reflected.\n" ] } ], "source": [ "from numpy import pi,exp\n", "\n", "# Constants\n", "Z = 79 # atomic charge of nucleus\n", "e = 1.602e-19 # unit of elementary charge\n", "E = 7.7e6*e # kinetic energy\n", "epsilon0 = 8.854e-12 # permittivity of free space\n", "cutoff = Z*e*e/(2*pi*epsilon0*E)\n", "a0 = 5.292e-11 # Bohr radius\n", "sigma = 0.01*a0 # standard deviation\n", "N = 1000000\n", "\n", "particle_prob = 100*(1 - exp(-(cutoff*cutoff)/(2*sigma*sigma)))\n", "print(\"{:.3f}% of particles were reflected.\".format(particle_prob))\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This is in very good agreement with the numerical result...it is also a very fundamental demonstration that we can calculate the approximate value of an integral with random processes. This is the opposite approach to the one we usually take in physics, writing down an analytic form that describes the average properties of a physical process with random elements. We are starting with an exact problem e.g. solving an integral, and find an approximate solution by running random processes in a simulation.\n", "\n", "Consider the following integral:\n", "\n", "$$I = \\int_0^2\\sin^2\\left[\\frac{1}{x(2-x)}\\right]dx$$" ] }, { "cell_type": "code", "execution_count": 113, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from numpy import sin,linspace\n", "import matplotlib.pyplot as plt\n", "\n", "x = linspace(0.01,1.99,10000)\n", "y = (sin(1/(x*(2-x))))**2\n", "\n", "plt.figure(figsize=(10,6))\n", "plt.fill_between(x, y,color='red',alpha=0.3) \n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The function is well-behaved in the majority of its range, but it varies infinitely fast at the edges. However, the area under the curve (shaded) is clearly finite and must be less than 2, so the integral must be well-defined ([Wolfram](https://www.wolframalpha.com/input/?i=integrate+%28sin%281%2F%28x*%282-x%29%29%29%29**2+from+0+to+2) has no indefinite solution, but gives us 1.4514 in the range of interest). There are no obvious methods to solve this analytically and the basic numerical methods you saw in lecture 2 will not handle the edge regions. So let's try a random approach...\n", "\n", "The shaded area $I$ is bounded by a rectangle (2,1) with an area $A=2$ and if we choose a random point in the rectangle, the chance that it is with $I$ is $p=I/A$. If generate a large number of random points $N$ and count the number $k$ in the shaded region, then the fraction of points $k/N$ in the region should be a decent approximation for $p$ such that:\n", "\n", "$$I \\simeq \\frac{kA}{N}$$\n", "\n", "This technique is known as *Monte Carlo integration* after the casino in Monaco. We can easily try this approach on our integral with Python." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1.4512\n" ] } ], "source": [ "from numpy import random,sin,count_nonzero\n", "N=10000\n", "area=2\n", "rng = random.default_rng()\n", "\n", "x = 2*rng.random(N) # space is twice the length random number in x, but this could be also done with specific numpy distributions\n", "y = rng.random(N)\n", "fx = (sin(1/(x*(2-x))))**2\n", "\n", "under_curve = count_nonzero(y < fx)\n", "integral = area*under_curve/N\n", "print(integral)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We get pretty good agreement - the accuracy scales with the number of sampling points you use, which is not an issues in this case, but would be for functions that are more expensive to evaluate. Try it. You can also change the random distributions used and see how it affects the result. Do you understand why?\n", "\n", "You might notice that the improvement in accuracy with increased sampling is not that good and this is one of the main disadvantages of the Monte Carlo approach. The probability that a single point falls below the curve is $p=I/A$ and the probability above $1-p$. Then the probability that a particular $k$ of our points fall below and the remaining $N-k$ fall above is thus $p^k(1-p)^{N-k}$. But there are $(^N_k)$ ways (permutation theory in Cauchy notation) to choose the $k$ points out the $N$ total, so the total probability $P(k)$ that we get exactly $k$ points below the curve is:\n", "\n", "$$P(k)=\\left(N \\atop k\\right)p^k(1-p)^{N-k}$$\n", "\n", "We can get the variance of this distribution $(\\langle k^2\\rangle-\\langle k\\rangle^2)$ easily:\n", "\n", "$$ \\langle k\\rangle = \\sum_{k=0}^NkP(k)=Np$$\n", "$$ \\langle k^2\\rangle = \\sum_{k=0}^Nk^2P(k)=N(N-1)p^2+Np$$\n", "\n", "such that:\n", "\n", "$$\\text{var}k = (\\langle k^2\\rangle-\\langle k\\rangle^2) = Np(1-p) = N\\frac{I}{A}\\left(1-\\frac{I}{A}\\right)$$\n", "\n", "with a standard deviation equal to the square root of the variance ($\\sqrt{\\text{var}k}$). Finally we can get an expected error on the random integral solution by substituting for $I \\simeq \\frac{kA}{N}$:\n", "\n", "$$\\sigma = \\sqrt{\\text{var}k}\\frac{A}{N} = \\frac{\\sqrt{I(A-I)}}{\\sqrt N}$$\n", "\n", "so the error varies with $N^{-\\frac{1}{2}}$, which is not great...increasing the sampling by a factor of 100 will only reduce the error by 10. Standard numerical methods like trapezoidal rule have errors that scale with $N^{-2}$ and Simpson's rule with $N^{-4}$. Hence, the Monte Carlo approach only makes sense for pathological integrands or, as we will see a little later, for integrals in high dimensions." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### The Mean Value Method\n", "\n", "The are plenty of methods that improve upon the basic Monte Carlo approach and one of the most common is the *mean value method*. Let's consider the general integral problem:\n", "\n", "$$I = \\int_a^bf(x)dx$$\n", "\n", "The average value of $f(x)$ in the range $a$ to $b$ is:\n", "\n", "$$\\langle f\\rangle = \\frac{1}{b-a}\\int_a^bf(x)dx = \\frac{I}{b-a}$$\n", "\n", "so $I = (b-a)\\langle f\\rangle$ and if we can estimate $\\langle f\\rangle$ we can get $I$. A simple way to estimate $\\langle f\\rangle$ is just to measure $f(x)$ at $N$ points $x_i$ chosen uniformly at random between $a$ and $b$, and calculate $\\langle f\\rangle \\simeq N^{-1}\\sum_{i=1}^Nf(x_i)$. Then:\n", "\n", "$$ I \\simeq \\frac{b-a}{N}\\sum_{i=1}^Nf(x_i)$$\n", "\n", "To compare to the standard method, we can estimate the error from the variance $(\\langle f^2\\rangle-\\langle f\\rangle^2)$ as before:\n", "\n", "$$ \\langle f\\rangle = \\frac{1}{N}\\sum_{i=1}^Nf(x_i)$$\n", "\n", "$$ \\langle f^2\\rangle = \\frac{1}{N}\\sum_{i=1}^N[f(x_i)]^2$$\n", "\n", "The variance of the sum for the integral is $N\\text{var}f$ and the standard deviation is the square root of this, finally giving:\n", "\n", "$$ \\sigma = \\frac{b-a}{N}\\sqrt{N\\text{var}f} = (b-a)\\frac{\\sqrt{\\text{var}f}}{\\sqrt{N}}$$\n", "\n", "The error is once again proportional to $N^{-\\frac{1}{2}}$, but the factor is smaller, so this method is always more accurate for a given sample." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Example - Error\n", "\n", "Calculate the integral using the standard and mean value methods, and plot the estimate and associated standard deviation as a function of $N$." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Integrals in many dimensions\n", "\n", "Using the standard methods introduced in lecture 2, we saw that performing integrals in two-dimensions requires a two-dimensional grid, and in three-dimensions requires a three-dimensional grid and so on. Once we get to higher dimensional integrals this can become very expensive. However, the mean value method generalizes quite simply to solve integrals of any dimension, such that:\n", "\n", "$$ I \\simeq \\frac{V}{N}\\sum^N_{i=1}f(\\textbf{r}_i)$$\n", "\n", "where the points $\\textbf{r}_i$ are picked randomly from the volume $V$. These types of integrals are often encountered when using prediction models in the financial markets, a source of employment for many physicists...\n", "\n", "![monte_carlo](images/monte.png)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Importance sampling\n", "\n", "If we consider the following integral:\n", "\n", "$$ I = \\int_0^1\\frac{x^{-1/2}}{e^x+1}dx$$" ] }, { "cell_type": "code", "execution_count": 489, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from numpy import exp,linspace\n", "import matplotlib.pyplot as plt\n", "\n", "x = linspace(0.001,1,10000)\n", "y = (x**-0.5)/(exp(x)+1)\n", "\n", "plt.figure(figsize=(10,6))\n", "plt.fill_between(x,y,color='red',alpha=0.3) \n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On the surface it is clearly finite in value, but if we apply the Monte Carlo technique, any points close to $x=0$ will give a very large contribution to the result - this will cause a lot of variance between runs...not a great feature of a reliable simulation." ] }, { "cell_type": "code", "execution_count": 612, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.8229741987936715\n" ] } ], "source": [ "from numpy import random,exp,sum\n", "N=10000\n", "a=0\n", "b=1\n", "\n", "rng = random.default_rng()\n", "\n", "x = rng.random(N)\n", "\n", "integral = (((b-a)/N)*(x**-0.5)/(exp(x)+1)).sum()\n", "\n", "print(integral)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This problem can be avoided by using a non-uniform sampling of points in the interval and is called *importance sampling*. For any general function $g(x)$, we can defined a weighted average over the interval from $a$ to $b$ as:\n", "\n", "$$\\langle g\\rangle_w = \\frac{\\int_a^bw(x)g(x)dx}{\\int_a^bw(x)dx} $$\n", "\n", "where $w(x)$ is the weighting function we choose for the problem at hand. For a one-dimensional integral:\n", "\n", "$$I = \\int_a^bf(x)dx$$\n", "\n", "For $g(x) = f(x)/w(x)$, we have:\n", "\n", "$$\\left\\langle \\frac{f(x)}{w(x)} \\right\\rangle_w = \\frac{\\int_a^bw(x)f(x)/w(x)dx}{\\int_a^bw(x)dx} = \\frac{\\int_a^bf(x)dx}{\\int_a^bw(x)dx} = \\frac{I}{\\int_a^bw(x)dx}$$\n", "\n", "$$ I = \\left\\langle \\frac{f(x)}{w(x)} \\right\\rangle_w \\int_a^bw(x)dx$$\n", "\n", "To actually solve this, let's define probability density function:\n", "\n", "$$ p(x) = \\frac{w(x)}{\\int_a^bw(x)dx}$$\n", "\n", "which is similar to a a weight function, but normalized so that its integral is 1. Sampling $N$ points randomly in this density gives us a probability $p(x)dx$ of getting a value between $x$ and $x+dx$, and the average number of samples that fall in this interval is $Np(x)dx$. For any function $g(x)$\n", "\n", "$$ \\sum_{i=1}^Ng(x_i) \\simeq \\int_a^bNp(x)g(x)dx$$\n", "\n", "with the accuracy increasing with $N$. Then the general weighted average of the function $g(x)$ is:\n", "\n", "$$ \\langle g\\rangle_w = \\frac{\\int_a^bw(x)g(x)dx}{\\int_a^bw(x)dx} = \\int_a^bp(x)g(x)dx \\simeq \\frac{1}{N}\\sum_{i=1}^Ng(x_i)$$\n", "\n", "and \n", "\n", "$$ I \\simeq \\frac{1}{N}\\sum_{i=1}^N\\frac{f(x_i)}{w(x_i)}\\int_a^bw(x)dx$$\n", "\n", "For no weighting $w(x)=1$ and we recover our original form of the integral." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Returning to the original divergent integral, if we choose $w(x) = x^{-1/2}$ then $f(x)/g(x) = (e^x+1)^{-1}$, which is finite and well-behaved over the interval. To solve it, we need to draw random values from the following distribution:\n", "\n", "$$p(x) = \\frac{x^{-1/2}}{\\int_0^1x^{-1/2}dx} = \\frac{1}{2\\sqrt{x}}$$\n", "\n", "Using the transformation matrix method:\n", "\n", "$$\\int_{-\\infty}^{x(z)}p(x)dx=z$$\n", "\n", "with $p(x) = \\frac{1}{2\\sqrt{x}}$ we have:\n", "\n", "$$\\int_{0}^{x}\\frac{1}{2\\sqrt{x}}dx= \\frac{1}{2}\\left[2\\sqrt{x}\\right]^x_0 = z$$\n", "\n", "so $x = z^2$ gives us the distribution we need. " ] }, { "cell_type": "code", "execution_count": 655, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.8408444126517298\n" ] } ], "source": [ "from numpy import random,sum,exp\n", "N=10000\n", "\n", "rng = random.default_rng()\n", "\n", "z = rng.random(N)\n", "x = z*z\n", "\n", "integral = ((2/N)/(exp(x)+1)).sum()\n", "\n", "print(integral)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Example - Variance\n", "\n", "Use the codes for the uniform and non-uniform solutions to the divergent integral and make a comparative plot of the variance in answers." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Monte Carlo Simulation\n", "\n", "Any computational physics approach that uses random numbers to estimate an outcome from a physical process is know as a *Monte Carlo Simulation*. We have already seen two examples, the radioactive decay and Rutherford scattering. These methods are commonly used in every branch of physics, but are most commonly seen in statistical physics.\n", "\n", "### Importance sampling and statistical mechanics\n", "\n", "A fundamental problem of statistical mechanics is to calculate the average value of interest in a physical system in thermal equilibrium at temperature $T$. We don't know the exact state of the system, only that it will pass through a succession of states, such that at any particular moment the probability of its occupying state $i$ with energy $E_i$ is given by the Boltzmann formula:\n", "\n", "$$ P(E_i) = \\frac{e^{-\\beta E_i}}{Z} $$\n", "\n", "where $Z = \\sum_i e^{-\\beta E_i}$, $\\beta = 1/k_BT$ and $k_B$ is Boltzmann's constant. Then the average value of a quantity $X$ that takes the value $X_i$ in the $i$th state is:\n", "\n", "$$ \\langle X\\rangle = \\sum_iX_iP(E_i)$$\n", "\n", "For simple cases, like the quantum harmonic oscillator we saw in lecture 1, we can calculate this exactly, but generally we need to use a numerical approach as the number of states is far too large. For example, there are $10^{23}$ molecules in a single mole of a gas and even if they had only two quantum states (they have many more), then the total number of states in the whole system would be $2^{10^{23}}$...quite many...\n", "\n", "Instead of a direct solution for $Z$ we apply the Monte Carlo approach, in a similar fashion to the way we used it to solve integrals. The equivalent for a sum is to choose a set of terms from the sum at random and add those. Thus, instead of summing over all the states of the system, we would choose $N$ states at random, denoted by $k = 1\\dots N$ and then calculate:\n", "\n", "$$ \\langle X\\rangle \\simeq \\frac{\\sum_{k=1}^NX_kP(E_k)}{\\sum_{k=1}^NP(E_k)}$$\n", "\n", "with the denominator add to normalize the weighted average (not needed in the original as $\\sum_{i}P(E_i)=1$ by definition). Unfortunately, this doesn't work, as the Boltzmann probability is exponentially small for any state with energy $E_i \\gg k_bT$, which is most of them. If almost all states contribute very little to the sum and we take a random sample, it is very likely we will not capture the important states, and our approximation will be poor. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "However, we have already seen how we can use *importance sampling* to weight our random number selection in these kinds of problems...in fact, the name comes from being applied in exactly this context. So we can define a nonuniform distribution that focuses on the states that make the most contribution. For any quantity $g_i$ that depends on the states $i$, we can define a weighted average over states:\n", "\n", "$$ \\langle g\\rangle_w = \\frac{\\sum_iw_ig_i}{\\sum_iw_i}$$\n", "\n", "where $w_i$ is any set of weights we choose. Making the particular choice $g_i = X_iP(E_i)/w_i$ this gives:\n", "\n", "$$ \\left\\langle \\frac{X_iP(E_i)}{w_i}\\right\\rangle_w = \\frac{\\sum_iw_iX_iP(E_i)/w_i}{\\sum_iw_i} = \\frac{\\sum_iX_iP(E_i)}{\\sum_iw_i} = \\frac{\\langle X\\rangle}{\\sum_iw_i}$$\n", "\n", "such that:\n", "\n", "$$ \\langle X\\rangle = \\left\\langle \\frac{X_iP(E_i)}{w_i}\\right\\rangle_w \\sum_iw_i$$\n", "\n", "We can make an estimate of this expression by selecting a set of $N$ sample states randomly but nonuniformly, such that the probability of choosing state $i$ is:\n", "\n", "$$p_i = \\frac{w_i}{\\sum_jw_j}$$\n", "\n", "and the weighted average over states is:\n", "\n", "$$\\langle g \\rangle_w \\simeq \\frac{1}{N}\\sum_{k=1}^Ng_k$$\n", "\n", "where $g_k$ is the value of the quantity $g$ in the $k$th state we select. This gives us:\n", "\n", "$$ \\langle X\\rangle \\simeq \\frac{1}{N}\\sum_{k=1}^N\\frac{X_kP(E_k)}{w_k}\\sum_iw_i$$\n", "\n", "with the first sum over the states sampled and the second over all states. We need to pick $w_i$ so that most of the samples are in the region where $P(E_i)$ is big and we also need $\\sum_iw_i$ to be solvable analytically, or the whole approach is useless...but this is easy to satisfy. Let us choose $w_i = P(E_i)$, then we have $\\sum_iw_i = \\sum_iP(E_i) = 1$ by definition and a simple form of $X$:\n", "\n", "$$ \\langle X\\rangle \\simeq \\frac{1}{N}\\sum_{k=1}^NX_k$$\n", "\n", "So we just choose $N$ states in proportion to their Boltzmann probabilities and take the average of $X$ over all of them (we are sampling the states the system passes through and calculating the average). The more states we use, the more accurate the result." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Markov chain method\n", "\n", "Unfortunately, it is not easy to choose states in proportion to their Boltzmann probabilities as it includes the *partition function*, defined as a sum over states...which we are really trying to avoid. However, we can use the *Markov chain* method to solve this problem without summing over the states. \n", "\n", "A Markov chain is a string of states and when we consider a single state $i$, the next state will not be random, but a small change of $i$ e.g. a change in the quantum level of a single gas molecule. The choice of the new state is determined probabilistically by a set of *transition probabilities* $T_{ij}$. If we pick $T_{ij}$ correctly, we can make sure that the probability of visiting any state on the chain is exactly the Boltzmann probability $P(E_i)$. How to pick the probabities is the immediate question?\n", "\n", "Given that we must end up in some state on every step of the Markov chain:\n", "\n", "$$ \\sum_jT_{ij}=1$$\n", "\n", "Then we must also satisfy the condition that:\n", "\n", "$$ \\frac{T_{ij}}{T_{ji}} = \\frac{P(E_i)}{P(E_j)} = \\frac{e^{-\\beta E_i}/Z}{e^{-\\beta E_j}/Z} = e^{-\\beta(E_j-E_i)}$$\n", "\n", "In other words, we are choosing a particular value for the ratio of the probability to go from $i$ to $j$ and back again and the partition function has been cancelled out of the equation. Once satisfied, with the probability that we are in state $i$ on one particular step of the Markov chain is equal to the Boltzmann probability for all $i$, then the probability of being in state $j$ on the next step is the sum of the probabilities that we got there from every other possible state $i$:\n", "\n", "$$ \\sum_iT_{ij}P(E_i) = \\sum_iT_{ji}P(E_j) = P(E_j)\\sum_iT_{ji} = P(E_j)$$\n", "\n", "So, if the probability is correct on one step, it will be correct on all of them. We can also show that for another distribution, e.g. random, on the Markov chain it will converge eventually to the Boltzmann distribution, as it is a *fixed point* on the Markov chain. \n", "\n", "Actually finding the probabilities is commonly done with the *Metropolis algorithm*." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "![Markov chain](images/markov.gif)\n", "\n", "In this approach, it is important to understand that we can visit the same state twice, even consecutively, as this still counts as a *step*. You can see this in the animation. \n", "\n", "Let us keep the example of a gas, and we randomly choose a molecule and then choose the next one to be randomly one energy level up or down from the current one. Then we either *accept* or *reject* the new state with *acceptance probability* $P_a$ given by:\n", "\n", "$$ P_A = \n", "\\begin{cases}\n", "1 & \\text{if} E_j \\leq E_i \\\\\n", "e^{-\\beta(E_j-E_i)} & \\text{if} E_j \\gt E_i \\\\\n", "\\end{cases}\n", "$$\n", "\n", "So if the move is rejected, we do nothing. Otherwise, we change the system to the new state according to the change in energy. If it reduces or maintains the energy, we always accept it, but if it increases the energy we *may* also accept it, with the probability given. Under this scheme the total probability $T_{ij}$ of making a move from state $i$ to state $j$ is the probability that we choose that move out of all possibilities ($1/M$), times the probability that we accept the move. For $E_j \\gt E_i$ then \n", "\n", "$$ T_{ij} = \\frac{1}{M} \\times e^{-\\beta(E_j-E_i)} \\quad \\text{and} \\quad T_{ji} = \\frac{1}{M} \\times 1$$\n", "\n", "and the ratio of the two is:\n", "\n", "$$ \\frac{T_{ij}}{T_{ji}} = \\frac{e^{-\\beta(E_j-E_i)}/M}{1/M} = e^{-\\beta(E_j-E_i)} $$\n", "\n", "Then if $E_j \\leq E_i$:\n", "\n", "$$ T_{ij} = \\frac{1}{M} \\times 1 \\quad \\text{and} \\quad T_{ji} = \\frac{1}{M} \\times e^{-\\beta(E_i-E_j)}$$\n", "\n", "Giving a ratio of:\n", "\n", "$$ \\frac{T_{ij}}{T_{ji}} =\\frac{1/M}{e^{-\\beta(E_i-E_j)}/M} = e^{-\\beta(E_j-E_i)} $$\n", "\n", "Both of these satisfy our definition. A practical solution of our problem would involve the following steps:\n", "\n", "1. Choose a random starting state.\n", "2. Choose a move uniformly at random from a set of allowed moves.\n", "3. Calculate the value of the acceptance probability $P_a$.\n", "4. With probability $P_a$ accept the move, changing the state of the system or reject it.\n", "5. Measure the value of interest $X$ in the current state and add it to the running sum.\n", "6. Return to 2.\n", "\n", "At the end, we divide the sum by the number of steps to get our estimate of the average value $\\langle X \\rangle$." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Before we try an example of this, there are a few important points to note:\n", "\n", "1. As mentioned, steps where nothing changes must still be counted.\n", "2. $M$ must be the same when going from $i$ to $j$ and from $j$ to $i$.\n", "3. The move set must be chosen so you get to every state - known as *ergodic*.\n", "4. Although the system will always get to the Boltzmann distribution, this *equilibration* time depends specifically on the complexity of your system. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Example - Monte Carlo simulation of an ideal gas\n", "\n", "The quantum states of a particle or atom of mass $m$ in a cubic box of length $L$ on each side have three integer quantum numbers $n_x,n_y,n_z = 1\\dots\\infty$ and energies given by\n", "\n", "$$ E(n_x,n_y,n_z) = \\frac{\\pi^2\\hbar^2}{2mL^2}(n_x^2+n_y^2+n_z^2)$$\n", "\n", "In an ideal gas, the atoms do not interact with each other in any way, so their total energy is just a sum of the individual energies:\n", "\n", "$$ E = \\sum_{i=1}^NE(n_x^{(i)},n_y^{(i)},n_z^{(i)})$$\n", "\n", "where $n^{(i)}$ is the value of the quantum number $n$ for the $i$th atom.\n", "\n", "We first need to choose a move set. In this case we will let the move set be the set of all moves of a single atom to one of the six neighbouring states where $n$ differs by $\\pm 1$. When we make such a move, just one term in the total energy changes. If, for example, $n_x^{(i)}$ increases by 1, then the energy change will be:\n", "\n", "$$\\Delta E = \\frac{\\pi^2\\hbar^2}{2mL^2}[(n_x+1)^2+n_y^2+n_z^2] - \\frac{\\pi^2\\hbar^2}{2mL^2}(n_x^2+n_y^2+n_z^2)$$\n", "\n", "$$ = \\frac{\\pi^2\\hbar^2}{2mL^2}[(n_x+1)^2-n_x^2)] = \\frac{\\pi^2\\hbar^2}{2mL^2}(2n_x+1) $$\n", "\n", "Similarly, if $n_x^{(i)}$ decreases by 1, then the energy change will be:\n", "\n", "$$\\frac{\\pi^2\\hbar^2}{2mL^2}(-2n_x+1) $$" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from numpy import random,sum,exp,pi,ones\n", "import matplotlib.pyplot as plt\n", "\n", "m = 1 # natural units\n", "hbar = 1 # natural units\n", "T = 10.0 # kbT\n", "N = 1000 # number of particles\n", "steps = 250000\n", "E = 3*N*pi*pi/2 # initial energy\n", "\n", "# Create a 2D array to store the quantum numbers\n", "n = ones([N,3],int) # all particles in the ground state, n=1\n", "\n", "rng = random.default_rng()\n", "\n", "eplot = []\n", "\n", "for k in range(steps):\n", "\n", " # Choose the particle and the move\n", " i = rng.integers(N)\n", " j = rng.integers(3)\n", " if rng.random()<0.5:\n", " dn = 1\n", " dE = (2*n[i,j]+1)*pi*pi/2\n", " else:\n", " dn = -1\n", " dE = (-2*n[i,j]+1)*pi*pi/2\n", "\n", " # Decide whether to accept the move, noting that we cannot go below n=1 as the ground state.\n", " if n[i,j]>1 or dn==1:\n", " if rng.random()" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from numpy import random,sqrt,exp,empty,sum,arange\n", "import matplotlib.pyplot as plt\n", "import time\n", "\n", "rng = random.default_rng() # set the generator\n", "\n", "N = 25 # number of cities\n", "R = 0.02 # graphics option\n", "Tmax = 10.0 # starting temperature\n", "Tmin = 1e-3 # final temperature\n", "tau = 1e4 # cooling constant\n", "\n", "# Function to calculate the magnitude of a vector\n", "def mag(x):\n", " return sqrt(x[0]**2+x[1]**2)\n", "\n", "# Function to calculate the total length of the tour\n", "def distance():\n", " s = 0.0\n", " for i in range(N):\n", " s += mag(r[i+1]-r[i])\n", " return s\n", "\n", "# Choose N city locations and calculate the initial distance\n", "r = empty([N+1,2],float)\n", "for i in range(N):\n", " r[i,0] = rng.random()\n", " r[i,1] = rng.random()\n", "r[N] = r[0]\n", "D = distance()\n", "\n", "#plot the cities\n", "plt.figure(figsize=(10,6))\n", "c = arange(0, N+1, 1) \n", "for label in range(N):\n", " plt.annotate(label, (r[label,0],r[label,1]),fontsize=15,fontweight='bold',xytext=(0, 5),textcoords=\"offset points\",ha='center', va='bottom')\n", "plt.plot(r[:,0],r[:,1],color='blue', linestyle='dashed', linewidth='4',marker='o',\n", " markerfacecolor='red', markersize=12) \n", "plt.show() \n" ] }, { "cell_type": "code", "execution_count": 59, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import matplotlib.animation as animation\n", "from matplotlib.animation import PillowWriter\n", "\n", "fig = plt.figure(figsize=(10,6))\n", "for label in range(N):\n", " plt.annotate(label, (r[label,0],r[label,1]),fontsize=15,fontweight='bold',xytext=(0, 5),textcoords=\"offset points\",ha='center', va='bottom') \n", " \n", "# Main loop\n", "t = 0\n", "T = Tmax\n", "ims = []\n", "\n", "while T>Tmin:\n", "\n", " # Cooling\n", " t += 1\n", " T = Tmax*exp(-t/tau)\n", "\n", " # Update the visualization every 100 moves\n", " if t%100==0: \n", " im, = plt.plot(r[:,0],r[:,1],color='blue', linestyle='dashed', linewidth='4',marker='o',markerfacecolor='red', markersize=12) # plot returns a list of artists. This is so you can call plot like lines = plot(x1, y1, x2, y2,...). Adding the comma unpacks the length one list for ims.\n", " ims.append([im])\n", " \n", " # Choose two cities to swap and make sure they are distinct\n", " i,j = rng.integers(1,N),rng.integers(1,N)\n", " while i==j:\n", " i,j = rng.integers(1,N),rng.integers(1,N)\n", "\n", " # Swap them and calculate the change in distance\n", " oldD = D\n", " r[i,0],r[j,0] = r[j,0],r[i,0]\n", " r[i,1],r[j,1] = r[j,1],r[i,1]\n", " D = distance()\n", " deltaD = D - oldD\n", "\n", " # If the move is rejected, swap them back again\n", " if rng.random()>exp(-deltaD/T):\n", " r[i,0],r[j,0] = r[j,0],r[i,0]\n", " r[i,1],r[j,1] = r[j,1],r[i,1]\n", " D = oldD\n", " \n", "ani = animation.ArtistAnimation(fig, ims, interval=50, blit=True, repeat_delay=500)\n", "\n", "writer = PillowWriter(fps=20)\n", "ani.save(\"images/travel_route.gif\", writer=writer)\n", "\n", "plt.show() " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The results are generally pretty good, although rarely perfect for more complex systems. As always, improvements can be made at the expense of computational time, particularly by playing with the cooling rates and temperatures. Overall, this is a powerful general technique for optimizing functions and remains widely used.\n", "\n", "![Final travel route](images/travel_route.gif)\n", "\n", "#### Example - Parameters and speed\n", "\n", "Explore how the quality of results you get depends on the parameters you use. As an advanced challenge, you can also consider how the code can be accelerated by vectorization - be aware, that the changes in efficiency can often be unintuitive. Also, for this problem the most obvious speedup would be achieved by parallelization, where multiple steps could be considered in parallel. " ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.7.6" } }, "nbformat": 4, "nbformat_minor": 4 }