{ "metadata": { "name": "", "signature": "sha256:b92ea31a8cd3aeffbe28f95eebb3524ee8be287d1411e0b99022cf572f50747b" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "#Monte Carlo: Calculating \u03c0\n", "\n", "In this tutorial we will introduce Monte-Carlo simulations, which are an incredibly useful for simulating statistical systems. We will work through 2 simple examples to demonstrate the principles.\n", "\n", "1. calculation of pi\n", "\n", "2. Maxwell-Boltzmann velocity and speed distributions" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Calculation of pi\n", "\n", "Take a dart board. Draw a square, and a circle inside the square whose diameter equals the length of the side of the square. Throw some darts at it. Assuming you're as good at darts as me, they will be randomly populated inside the square (ignore any that land outside the square...). How many darts land inside the circle as well? It's a question of relative area:\n", "\n", "The area of the square is $d^2$, and the area of circle is $\\pi (d/2)^2$. The circle therefore covers $\\pi/4$ of the area of the square. So assuming uniform distributions, the ratio of darts that land inside the circle to the total inside the square will also be $\\pi/4$, which we can then rearrange to find pi.\n", "\n", "So how many darts do you need to throw to get an accurate answer? Let's set up the program to find out." ] }, { "cell_type": "code", "collapsed": false, "input": [ "%matplotlib inline\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from matplotlib.patches import Rectangle, Circle\n", "from IPython.display import display\n", "\n", "#create the plot so we can visualise it\n", "fig = plt.figure(figsize=(6,6))\n", "ax = fig.add_subplot(111)\n", "#add a square\n", "Rpatch = Rectangle((0,0),1,1,ec='k',fc='grey',alpha=0.35)\n", "ax.add_patch(Rpatch)\n", "#add circle\n", "Cpatch = Circle((0.5,0.5),0.5,ec='k',fc='b',alpha=0.25)\n", "ax.add_patch(Cpatch)\n", "plt.draw()\n" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\n1SBSQwAAAABJRU5ErkJggg==\n", "text": [ "<matplotlib.figure.Figure at 0x376b0f0>" ] } ], "prompt_number": 1 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we make use of random number generators to simulate our dart thrower. Let's add a few to the plot as an example:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "xs = np.random.random(20)\n", "ys = np.random.random(20)\n", "\n", "ax.plot(xs,ys,'ro')\n", "display(fig)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nPwgcBfRyHmSlAAAAAElFTkSuQmCC\n", "text": [ "<matplotlib.figure.Figure at 0x376b0f0>" ] } ], "prompt_number": 2 }, { "cell_type": "markdown", "metadata": {}, "source": [ "To decide if the points are inside the circle, we just need to look at their radius (relative to the center coordinate of the circle):" ] }, { "cell_type": "code", "collapsed": false, "input": [ "rad = np.sqrt((xs-0.5)**2+(ys-0.5)**2)\n", "inside = rad[rad<0.5] # use logical statements to index lists, this selects the elements of rad whose value is less than 0.5\n", "\n", "print len(inside), len(rad)\n", "\n", "ratio = float(len(inside))/len(rad)\n", "pi_guess = 4 * ratio\n", "\n", "print 'Estimate of pi:',pi_guess\n", "print 'Relative error (%):', 100*abs(pi_guess-np.pi)/np.pi" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "17 20\n", "Estimate of pi: 3.4\n", "Relative error (%): 8.22536130249\n" ] } ], "prompt_number": 49 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Not too bad for 20 points! Let's try increasing the numbers of darts though...\n", "\n", "We'll rewrite the above code into a routine we can call with an argument that represents the number of points:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def estimate_pi(n):\n", " \"\"\" Estimate pi using the drunken dart player model. \n", " Argument n (integer) is the number of 'darts' thrown\n", " \"\"\"\n", " xs = np.random.random(n)\n", " ys = np.random.random(n)\n", " rad = np.sqrt((xs-0.5)**2+(ys-0.5)**2)\n", " inside = rad[rad<0.5]\n", " ratio = float(len(inside))/len(rad)\n", " pi_guess = 4 * ratio\n", " \n", " return pi_guess\n", " " ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 50 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Ok, let's try with a few different values:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "for n in [20,200,2e3,2e4,2e6]:\n", " pi_guess = estimate_pi(n)\n", " print 'Number of points:', n\n", " print 'Estimate of pi:',pi_guess\n", " print 'Relative error (%):', 100*abs(pi_guess-np.pi)/np.pi\n", " print ''" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Number of points: 20\n", "Estimate of pi: 3.4\n", "Relative error (%): 8.22536130249\n", "\n", "Number of points: 200\n", "Estimate of pi: 3.12\n", "Relative error (%): 0.687315510657\n", "\n", "Number of points: 2000.0\n", "Estimate of pi: 3.134\n", "Relative error (%): 0.24168167\n", "\n", "Number of points: 20000.0\n", "Estimate of pi: 3.1438\n", "Relative error (%): 0.0702620184601\n", "\n", "Number of points:" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " 2000000.0\n", "Estimate of pi: 3.141448\n", "Relative error (%): 0.00460446677031\n", "\n" ] } ], "prompt_number": 51 }, { "cell_type": "markdown", "metadata": {}, "source": [ "So as more points are added, the estimate gets closer to the real value. Sometimes low numbers appear to get lucky, so let's have a look at the variability:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "pi_guesses = []\n", "for i in range(20):\n", " pi_guesses.append(estimate_pi(200))\n", "\n", "print 'Number of points: 200'\n", "print pi_guesses\n", "print 'Mean value:', np.array(pi_guesses).mean()\n", "print 'Standard deviation:', np.array(pi_guesses).std()\n", "\n", "pi_guesses = []\n", "for i in range(20):\n", " pi_guesses.append(estimate_pi(2e6))\n", "\n", "print 'Number of points: 2M'\n", "print pi_guesses\n", "print 'Mean value:', np.array(pi_guesses).mean()\n", "print 'Standard deviation:', np.array(pi_guesses).std()\n" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Number of points: 200\n", "[3.06, 3.16, 3.0, 3.02, 2.92, 3.02, 3.16, 3.18, 3.08, 3.12, 3.26, 3.06, 2.98, 3.14, 3.24, 3.16, 3.2, 3.26, 3.1, 3.12]\n", "Mean value: 3.112\n", "Standard deviation: 0.0923904756996\n", "Number of points: 2M" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "[3.141804, 3.142372, 3.141678, 3.141238, 3.141286, 3.142784, 3.140546, 3.14064, 3.142424, 3.139482, 3.141902, 3.141988, 3.141348, 3.142602, 3.142088, 3.142558, 3.14093, 3.14298, 3.1401, 3.14212]\n", "Mean value: 3.1416435\n", "Standard deviation: 0.000915795146307\n" ] } ], "prompt_number": 52 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Ok, so not only does the average get closer, but the standard deviation also decreases considerably when more points are used. Let's look at that graphically, using histograms to analyse the spread of values:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "pi_guesses = []\n", "for i in range(500):\n", " pi_guesses.append(estimate_pi(200))\n", "\n", "print '200 darts (blue), 10000 darts (red)'\n", "fig2 = plt.figure(figsize=(6,5))\n", "ax = fig2.add_subplot(111)\n", "ax.axvline(np.pi,lw=3,linestyle='dashed',color='k')\n", "bad_hist = ax.hist(pi_guesses,bins=30,color='b',alpha=0.65,lw=0.2)\n", "ax.set_xlim(2.7,3.5)\n", "\n", "\n", "pi_guesses = []\n", "for i in range(500):\n", " pi_guesses.append(estimate_pi(1e4))\n", " \n", "good_hist = ax.hist(pi_guesses,bins=30,color='r',alpha=0.65,lw=0.2)\n", "ax.set_xlabel('Estimate of $\\pi$')\n", "ax.set_ylabel('Number of occurrences')\n", "plt.draw()\n", "\n", "#display(fig2)\n", "#display(fig3)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "200 darts (blue), 10000 darts (red)\n" ] }, { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAFJCAYAAACW1Sr+AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XtYVHX+B/D3DDDc19HVVNbwmqClMigCaUlmmbfUVVc0\nFcVM6Gau1nZH2542rd20fr+gtcUstXJNQ82fu9sjU/toMrhalpK3JBXzCsMdZmC+vz9YJkhnznA5\n5wyc9+t55nEYDmfeIMNnzvme7+erE0IIEBGRZunVDkBEROpiISAi0jgWAiIijWMhICLSOBYCIiKN\nYyEgItI42QtBeXk5kpKS0L9/fwwcOBA5OTkoLS3F5MmTER4ejilTpqCsrEzuGERE5ILshSAtLQ3h\n4eE4cuQIjhw5gsjISKSnpyM8PBwnT55Ejx49kJGRIXcMIiJyQfZC8Pnnn+PZZ59FQEAAfH190aFD\nB1gsFixcuBD+/v5ITk5GTk6O3DGIiMgFWQvB+fPnUVVVhdTUVMTGxmLVqlWorKxEbm4uIiMjAQCR\nkZGwWCxyxiAiIjdkLQRVVVU4ceIEpk2bBrPZjKNHj2LLli1gVwsiIi8iZBYZGem8v3v3bpGYmCh+\n+9vfikOHDgkhhDh48KCYNm3adV/Xt29fAYA33njjjbcm3Pr27dvkv9OyjxHccsstyMnJgcPhwGef\nfYYxY8YgNjYWmZmZqKysRGZmJuLi4q77utOnT0MI4fW3tLQ01TO0h4xay9mQN+dsKz9P5vz5dvr0\n6Sb/nfZt9l94D73++uuYN28eqqqqMGbMGCQmJsLhcGDOnDmIiIhAdHQ0Vq1aJXcMIiJyQfZC0L9/\nfxw4cOC6x7OysuR+aiKvlZaWpnYEIifZC0F7l5CQoHYESW0hI6CtnCtWrGjxPqRo6eephLaSszl0\nQgghvZnydDodvDQaEZHXas7fTvYaIiLSOBYCIiKN4xgBUTskhIDVavVoW6PRCJ1OJ3Mi8mYsBEQq\naDhYLMfAsdVqRVKSFQaD0e12NpsVGzYAHTt2bPUM1HZwsJhIBQ3fgcvxe15UVIRFiwCDwf0feJut\nCOvWsRC0JxwsJiKiJmMhICLSOBYCIiKNYyEgItI4XjVEpAL2GiJvwkJApAIleg0ReYqnhoiINI6F\ngIhI41gIiIg0joWAiEjjOFhMpAK5ew0RNQV7DREpTAgBvV7f6OPWxl5D2sVeQ0RtgKftoYmUwkJA\nRKRxLARERBrHQkBEpHG8aohIBY/374+AKVMQGBiodhQiFgIiNSyJiEDHp5/m1TrkFXhqiIhI41gI\niIg0joWAiEjjWAiIiDSOg8VEKlh7/DgCXn0VgYGB7DVEqmOvISKFFRUVoVOnTs6P2WuIWhN7DRER\nUZOxEBARaRwLARGRxrEQEBFpHK8aIlIBew2RN2EhIFIBew2RN+GpISIijZO9EPTq1QuDBw+GyWTC\n8OHDAQClpaWYPHkywsPDMWXKFJSVlckdg4iIXJC9EOh0OpjNZhw+fBgWiwUAkJ6ejvDwcJw8eRI9\nevRARkaG3DGIiMgFRU4N/XKWm8ViwcKFC+Hv74/k5GTk5OQoEYOIiG5AkSOC0aNHY8qUKdixYwcA\nIDc3F5GRkQCAyMhI55ECkVasPX4cr776KvsMkVeQ/aqhffv2oXv37sjLy8OkSZMwfPhwj/tgNHyR\nJCQkICEhQZ6QRAp788QJYPVqAGAxoBYxm80wm80t2ofshaB79+4AgAEDBuD+++/Hzp07ERMTg7y8\nPJhMJuTl5SEmJuaGX8sXCBGRe798k7xy5com70PWU0MVFRUoLS0FAFy5cgX/+Mc/cN999yE2NhaZ\nmZmorKxEZmYm4uLi5IxBRERuyFoILl26hDvuuANRUVFITEzEsmXLcPPNNyM1NRVnz55FREQECgoK\nkJKSImcMIiJyQ9ZTQ71798bXX3993eOhoaHIysqS86mJiMhDbDFBpAL2GiJvwkJApAL2GiJvwl5D\nREQax0JARKRxLARERBrHQkBEpHEcLCZSwdrjxxHw6qsIDAzkDHpSnU542vhHYTqdzuOeRERtSVFR\nETp16uT8WI7f86KiIixaBBgM7q9KstmKsG4dePVSO9Kcv508NUSkMr7hIbWxEBCpzGq1qh2BNI6F\ngIhI41gIiIg0jlcNEangob59EerjAx8fH7WjELEQkHYIITw+H280GqHT6Vr9eY1GIwAgpV8/hBkM\nMBgMrfIcRC3BQkCaYbVakZRkhcFgdLudzWbFhg2td0ml1WqFNSmp7oMNG1pln0StiYWANMVgMEpe\nWy8HI9/5kxfjYDERkcaxEBARaRxPDRGpIOPUKedVQ0+rHYY0j4WASAV/PX3aeZ+FgNTGU0NERBrH\nQkBEpHEsBEREGsdCQESkcRwsJlIBew2RN2EhIFIBew2RN+GpISIijWMhICLSOBYCIiKNYyEgItI4\nDhYTqYC9hsibsBAQqYC9hsibSJ4aevLJJ1FSUgIAmDlzJiIiIrBr1y7ZgxHR9YQQKCoqkrzVLY0p\n1I5LbYTkEcE///lPvPbaa9izZw90Oh2ys7Mxe/ZsTJw4UYl8RNSAp8ttlpUVw2AIAqcpkCckC0H9\nhJdNmzZhwYIFCAsL83gBcCJqfZ4st2kw8DVKnpMsBLNnz0ZkZCS6du2KsWPH4vLly/D391ciGxER\nKUCyECxduhSLFy9GUFAQACA4OBhZWVmyByNqb4QQKP7v0TR7DZE3kRwsrq6uxs6dO/HII48AAC5c\nuICDBw96/AS1tbUwmUyYNGkSAKC0tBSTJ09GeHg4pkyZgrKysmZGJ2pbiu122B5+GMWpqUju2RNP\nRkTg6YED1Y5FJF0I0tLScOjQIZjNZgBAWFgYnnvuOY+fYO3atRg4cCB0Oh0AID09HeHh4Th58iR6\n9OiBjIyM5iUnaoOMfn7owBFc8jKShSA7OxurVq1yDhoHBwdDCM8uSzt//jx2796NBx980Pk1FosF\nCxcuhL+/P5KTk5GTk9OC+ERE1FKShSAiIgLFxcXOjw8cOACTyeTRzpcuXYrXXnsNev3PT5Obm4vI\nyEgAQGRkJCwWS1MzExFRK5IcLH7ssccwZcoUnD9/HnfddRcuXbqEDz74QHLHu3btwk033QSTyeQ8\nrQTA46MJIq2onyQGAEaj0XkalUgpkoUgJiYG2dnZ+M9//gOHw4GYmBiPdrx//37s2LEDu3fvRlVV\nFUpKSjB37lzExMQgLy8PJpMJeXl5bve3YsUK5/2EhAQkJCR49NxE3m7dDz/AaDDAx8cHKcXFwJIl\ndZ/YsAEdO7qfI0DUkNlsbvRmuzkkC8G2bdswevRoDB06FEDdzEaz2YwpU6a4/bpXXnkFr7zyCgDg\niy++wOuvv44PPvgAq1evRmZmpvPfuLg4l/toWAiI2pO/5ec776cAMHIAmZrpl2+SV65c2eR9SI4R\nrFy5Ekbjz9PZjUZjs/5A1x/upqam4uzZs4iIiEBBQQFSUlKavC8iImo9kkcEAQEBqKiocE4oq6io\naPIkmFGjRmHUqFEAgNDQUE5IIyLyIpKFYMaMGUhNTUVqaiqEEMjIyEBiYqIS2YiISAGSheCRRx7B\nxx9/jJdffhlCCEyfPp2FgIioHZEsBIGBgZg/fz7mz5+vQBwibVjYq5fzqiEitUkWgjNnzuCDDz7A\nV199haqqKgB1A7979+6VPRxRe7WoTx/0Cg6GwWAAG0aT2jyaUBYfH48XX3wRfn5+AMAJL0StTACw\n22yokFjro24tkA6KZCLtkCwEZ8+e5dKURDKz22zIPWjDX5fA7apiXHmM5ODRwjRpaWmYN29eoxmP\nnTp1kjUYkdbo9QbJ1ce48hjJQbIQZGRkQKfT4f3332/0+JkzZ2QLRUREypEsBPkNpsITUeto1GtI\n7TCkeZKFoLq6Gp9++im+/PJL/O///i9OnjyJ48ePY+LEiUrkI2qXGvYamlVcjED1ohBJF4K0tDQI\nIRqtUDZ9+nQWAqJWUrhkCX4dGAiAI8CkDllXKCMiacG+ku/HiGQl6wplRETk/TyaUDZ16tQmr1BG\nRERtg9tC4HA4cObMGezdu7fJK5QRkWv1vYbsagchgkQh0Ov1ePXVVzFjxgznCmVE1HL1vYYqAFwu\nL1c7Dmmc5BjBlClT8NRTT+G7775DYWGh80ZERO2D5BhBZmYmdDodtm7d6nxMp9Phhx9+kDUYEREp\nQ3KMYNWqVZg5c6ZSeYjaFSEErFYr+4WSV3N7akiv12PVqlWcN0DUTFarFecXLYLdZlM7CpFLkqeG\n6scIkpKSEBYW5nyc3UeJPBNygwlj9b2G7ABm9+ihfCiiBpo1RgCw+yhRSzTsNcRCQGpj91EiIo2T\nLAQbNmy44dKU8+bNkyUQEREpS7IQ5ObmOgvBtWvX8M9//hP33nsvCwERUTshWQj+53/+p9HHBQUF\nSE5Oli0QEREpq8n9bzt06ICCggI5shBpBnsNkTeRLASTJk1y3q+ursaxY8fw1FNPyRqKqL1jryHy\nJpKFYNmyZc77gYGBGDJkCAICAmQNRUREypEsBOHh4ejevTsCA+tWVa2srER+fj569eoldzYiIlKA\nZPfRGTNmwMfH5+cv0Osxffp0WUMREZFyJAuBw+FwrlcMAAaDATb2TSEiajckC8Ho0aPx9ttvw263\nw2az4e2338bdd9+tRDaidmvdDz/gtePHseb4cbWjEEkXgieeeAIWiwX9+vVDv379YLFYGg0gE1HT\n/S0/H38+cQJvnjihdhQi6cHim2++Ge+9957zdFDD00RERNT2SR4RPPPMMygqKoLBYIDBYEBRURGe\nf/55JbIREZECJAvB7t270bFjR+fHHTt2xK5du2QNRUREypE8NXTTTTfhwoULzkVpCgoKGhUGIm9Q\nvySkO3Wf56KRDdX93Io92tZoNN6wEzG1fZKFYOHChRg/fjwSExMhhMBHH32EZ599VnLHVVVVGDVq\nFKqrqxEQEICZM2di6dKlKC0txZw5c3D48GFER0dj48aNCAkJaZVvhrTLarUiKckKg8HocpuysmIY\nDEHwhmEub+k1ZLcX4+GHbQgOdr+dzWbFhg3gm8B2SrIQJCYmIi4uDn//+98BAJ9++il69+4tueOA\ngABkZ2cjKCgI1dXVGDp0KCZOnIjt27cjPDwcW7ZswbJly5CRkYHly5e3/DshzTMYjDAYXP+hMhjc\nHzEoyZt6Dfn5uf+5UfsnOUYAAL169cKdd96JO++806MiUC8oKAgAUFZWhpqaGvj7+8NisWDhwoXw\n9/dHcnIycnJympeciIhaheQRgdlsxqJFi9C/f38AwMmTJ7Fu3TqMGjVKcucOhwMmkwlHjx7FmjVr\nEB4ejtzcXERGRgIAIiMjYbFYWvgtEBFRS0gWgtdeew27du1CREQEAODEiRN44oknPCoEer0e33zz\nDfLz8zF+/HiMGDECQgiPw61YscJ5PyEhAQkJCR5/LRGRFpjNZpjN5hbtQ7IQFBUVoVu3bs6Pu3bt\nKnl1xi/16tUL48ePR05ODmJiYpCXlweTyYS8vDzExMS4/LqGhYCIiK73yzfJK1eubPI+JAtBUlIS\nxo0bh+nTp0MIge3bt2P+/PmSO7569Sp8fX1hNBqdax0vW7YMJSUlyMzMxOrVq5GZmYm4uLgmhyZq\n69b98IPzqqHZPXqoHYc0TrIQLF68GPHx8di1axd0Oh3S09MxaNAgyR3/9NNPSEpKQm1tLbp164bl\ny5eje/fuSE1NxZw5cxAREYHo6GisWrWqVb4Rorbkb/n5zvssBKQ2j9YsHjx4MAYPHtykHQ8aNAiH\nDh267vHQ0FBkZWU1aV9ESuIkK9KaJi9eT9TecZIVaQ0LAdENcJIVaYnLCWX1i8889dRTioUhIiLl\nuTwiqKyshNlsxo4dO5x9hhqeC42OjlYkIFF75C29hogAN4Vg5cqVePPNN1FQUHDDFcmys7NlDUbU\nnt2o15AQAjabFX5+HIAmZbksBPfccw/uuecevPTSS3jxxReVzESkSWXCjqmWRfhs5N85PkGKkhws\nfvHFF5GXl4cdO3ZAp9Ph/vvvd/YKIqLWFaTn9RukPMnuo++++y7mz58Pvb5u0wULFuDdd9+VPRgR\nESlD8u3H+vXrsWfPHue10osWLcKECRPw4IMPyh6OqD0QAGw2G2yoe8HZANTY7c7Haux21Oh04NXc\npBbJ37z6XkH1haCwsBBGo+tVoIioMbvdjsPf6VDp44tgAOUANhb/iFC9H2wAxgaG4QrsEHof6PQc\nJCblSRaC3//+97jvvvswYMAAAMD333+Pd955R/ZgRO2J3scXOp0Beh2gE8CuirPOz40L7gm9YAEg\n9UgWgrvvvhsnTpzAgQMHoNPpEBsb6xwvICKits+jk5J6vR6333673FmIiEgFHJ0iaiZPupRarVbU\n2O0A/JQJRdQMLAREzeRJl1KbDZh4tAbdfAVfbeS13P5q1tTUYNCgQcjLy1MqD1Gb4kmXUp3P9S+z\nScG9EKo3wOb5Et5EsnFbCHx9fTFw4EAcPnwYJpNJqUxE7d7kkD7o7huMMgGU1parHYc0TvJgtbCw\nEMOGDUNUVBTCwsIAADqdDjt27JA9HBERyU+yEKSlpV33GDsjErknhIDdboXNZq2bWsyXDHkxyUKQ\nkJAAm82GAwcO4M4770RFRQVqamqUyEbUZtntVsz8KgllDhvsjhoPunoRqUfy13Pbtm2Ii4vDggUL\nAADnz5/H1KlTZQ9G1NaF6A0I1hvUjkEkSfKI4O2338a///1vjBw5EgDQv39/XL58WfZgRO1ZVtkP\nzquG7gvuoXYc0jjJQqDT6RAUFOT8+MqVK/j1r38tayii9m5neb7zPgsBqU3y1NDvfvc7LF++HBUV\nFdiwYQMSExMxd+5cJbIREZECJI8IHnzwQXzxxRew2WywWCx46aWXMGLECCWyERGRAjw6NZSQkIBb\nbrkFAPCb3/xG9lBERKQcyUKQk5ODRYsWQYi6ufB6vR7r1q3D8OHDZQ9HRETykywEf/jDH/Duu+86\n//Dn5ubiySefhNlsljsbUZtSP4ms/r477DVE3kSyEJSWljpXJwOAAQMGoLS0VNZQRG1R/SQyAPhg\n6Fq327LXEHkTl4Xgk08+AVA3s3jChAmYOnUqhBDIysrCqFGjFAtI1JaEcAIZtUEuC8HOnTudPYX6\n9OmDI0eOAAB69+6NoqIiZdIREZHsXBaC9957T8EYRESkFskxgvPnz+Pjjz/GV199herqagBsQ01E\n1J5IFoJFixYhLi4Oixcvhp9f3bqrbENN1DLsNUTeRLIQXLlyBS+88AL0evbRJWot7DVE3kSyEDz3\n3HNYunQpJk+eDKPR6Hw8Ojpa1mBERKQMyUJw/PhxvP/++zh48CAMhp8vjcvOzpY1GFFbJYSAzVas\ndgyvJYSA1Wr1aFuj0chT0QqQLATvvvsuzp07h5CQkCbv/Ny5c5g3bx4uX76MLl264KGHHsLs2bNR\nWlqKOXPm4PDhw4iOjsbGjRubtX8ib1Qm7Jh4aAmEoYPaUbyS1WpFUpIVBoPR7XY2mxUbNgAdO3ZU\nKJl2SZ74HzJkCC5dutSsnfv5+eGNN97A0aNHsXXrVjz//PMoLS1Feno6wsPDcfLkSfTo0QMZGRnN\n2j+RtwrUS77H0jSDwQiDoaPEzX2hoNYj+dtqtVoxcOBADB8+3DlG4Onlo926dUO3bt0AAJ07d8at\nt96K3NxcWCwWPP/88/D390dycjL+9Kc/tfDbIGpb2GuIvIlkIXjhhRda5YlOnTqFo0ePYvjw4Viw\nYAEiIyMBAJGRkbBYLK3yHERtBXsNkTeRLAQJCQktfpLS0lLMnDkTb7zxBkJCQiQ7MxIRkXIkC0FI\nSIhz1L66uho1NTUICQlBSUmJR09gt9sxbdo0zJ07F5MnTwYAxMTEIC8vDyaTCXl5eYiJibnh165Y\nscJ5PyEhoVWKEhFRe2I2m1u8LIBkISgrK3Per6iowPvvv4+LFy96tHMhBBYuXIjbbrsNTzzxhPPx\n2NhYZGZmYvXq1cjMzERcXNwNv75hISAiouv98k3yypUrm7yPJk0XDgoKQkpKCrZs2eLR9vv27cPG\njRuxd+9emEwmmEwm7NmzB6mpqTh79iwiIiJQUFCAlJSUJgcnIqLWIXlEUL8uAVB3auiLL75AVFSU\nRzsfOXIkHA7HDT+XlZXlYUSi9keq11DdpLS6du86nQ5+fpxYRfKRLAQN1yUICAjAiBEjMHHiRNmD\nEbVnUr2G7HYrRu/7HTrr/aDX+eHj+A0wGDixiuQhWQi4LgGROgJ1vgjV+0Gn46pnJC+XhcDVgEP9\n0cGLL74oTyIiIlKUy0IQHBx83TnJ8vJy/O1vf8PVq1dZCIiI2gmXhWD58uXO+yUlJXjzzTexfv16\nJCYmYtmyZYqEo/aLHShvrG6Q2LOfC1FrcTtGcO3aNbzxxhvYtGkT5s2bh0OHDrETILUKrXegdNVr\nqFzU4IGDD6NCCDiEHQDHB0h+bo8Itm/fjoceeghHjhxBaGiokrlIA+o7UGqRu15DoXo/6ARQWmtX\nKR1pjcsJZX/5y19QUFCAl19+GWFhYQgNDXXefvWrXymZkYiIZOTyiMDVRDAiImpfuCI9EZHGsRAQ\nEWkc19MjUoFUryEiJbEQEKlAqtcQkZJYCMhjnk4C09IEMK2o+78vltxOjf97/l62HAsBecyTSWDt\ndQKY1tntxXj4YRuCg11vo9b/PX8vW46FgJpEy5PAtM7Pz3v/7/l72TK8aoiISON4RECkAle9hojU\nwEJA1Aqa2jXUXa8hquPpAHXdQHEH+QO1YywERK3AbrdirGURhG+Q2lHaDU8GqAGgrKwYBkMQDGzU\n2mwsBEStJFDHl1Nr82SA2mDg+g0txcFiIiKNYyEgItI4HssSqYC9hsibsBAQqYC9hsib8NQQEZHG\nsRAQEWkcTw0RUavgBLC2i4WAiFoFJ4C1XSwERCpor72GOAGsbWIhIFIBew2RN+FgMRGRxvGIgLwa\nByCJ5MdCQF6NA5BE8mMhIK/HAUgiebEQEKmAvYbIm7AQEKmAvYbIm/CqISIijZO1ECQnJ6Nr164Y\nNGiQ87HS0lJMnjwZ4eHhmDJlCsrKyuSMQEREEmQtBAsWLMCePXsaPZaeno7w8HCcPHkSPXr0QEZG\nhpwRiIhIgqyF4I477kDHjo2v9rBYLFi4cCH8/f2RnJyMnJwcOSMQEZEExQeLc3NzERkZCQCIjIyE\nxWJROgKR6tprryFqmxQvBEJ4/pu/YsUK5/2EhAQkJCS0fiAiFbDXELUWs9kMs9ncon0oXghiYmKQ\nl5cHk8mEvLw8xMTEuNy2YSEgIqLr/fJN8sqVK5u8D8UvH42NjUVmZiYqKyuRmZmJuLg4pSMQEVED\nshaCWbNm4fbbb8eJEydw8803Y/369UhNTcXZs2cRERGBgoICpKSkyBmBiIgkyHpq6MMPP7zh41lZ\nWXI+LTVRXYdP6V49nnT4ZLdQoraHLSYIVqsVSUlWGAxGt9t50uGT3UI9w15D5E1YCAgAYDC0XodP\ndguVxl5D5E3Ya4iISONYCIiINI6FgKgNEELAZiuCzVbcpEmZRJ5gISBqA+z2Ysz8Kgnzv14Ou136\nqiyipuBgMZEKmtNrKERvQK2wyReKNIuFgEgF7DVE3oSnhoiINI6FgIhI41gIiIg0joWAiEjjOFhM\npAL2GiJvwkLgZTztBGo0GqHT6RRIRHJgryHyJiwEXsaTTqA2mxUbNgAdO7pv7EZE5AkWAi/kSSdQ\nIqLWwsFiIiKNYyEgItI4nhoiaoGfu4I2baGd5vQaIpILCwFRC9jtxZh36EmUOWxwCDsAz9beZK8h\n8iY8NUTUQiF6A4L1Gl18mdoFFgIiIo3jqSEiavfqJmp6tqCPFidrshAQUbtntxfj4YdtCA52v51W\nJ2uyEBCpgL2GlOfnx4marrAQEKmAvYbIm3CwmIhI43hE0AZ5OvAlRN1sJamBr7pupx1aI5qmCCFg\nt3s2ANnS57HZ5H8e8pynXYKBtjH4zELQBnk68FVWdhY6XSCCg2+S2K4YBkMQDLwUvkns9hJMPrIc\nwt91p9jWUCbsmHhoCYSBxdpbeNIlGGg7g88sBG2UJwNfBoMVQJCH21FzBOqUeQkF6vlS9TbtqUsw\nf7uIVMBeQ+RNWAiIVMBeQ+RNWAjc2LDhGMrLA9xuU1NjQ3LyzQgJkThhT+1CfbdRoG6MAAq/o68f\noK6/EMBut8LPz/sHI8k1bxh4ZiFw4/DhAFy+3MftNjabFQ88UM1CoBF2uxWj9/0OnfV+KK2pgMPh\nUPT5y0UNZn2zHHsSsgAAE/fPxq7bN7ebc9Va5A0DzywERE0UqPNFqN4PQu+LklqbKs9fL0jnp/jz\nU+tTe+CZE8qIiDSORwQtVH9+T693f96Ok7vatrpz89Ymr0TmSmv3GqrP5+dXd3qhbgKaDULcxPGD\nJvB0sqanr1NP9ucNr3nVCsGXX36JxYsXo6amBo8//jgee+wxtaK0iN1ejEcesSEkxP12nNzVdoWc\n3YZB57ahe8WPKPUNbtJKZK60dq8hu93qHC8AgPlfLwfgg60jP+L4QRN4PlnTs9epJ/vzhte8aoVg\nyZIleOedd9CzZ0+MHTsWs2bNQufOndWK02xXrx7Ar3+d4NWTuy5dMqNr14RW329r89acgahFP0cV\ndDofOPQG5FZeRndf77s4oOF4QYjeF99Wt422FN72/+5qsmbDnE15nUpN/vSGCZ2qjBEUF9f9gt55\n553o2bMn7r33XuTk5KgRpcWuXTugdgRJly+b1Y7gkbaS8/h/Lx/1dt/arqkdwSNt5f+9reRsDlUK\nQW5uLiIjI50fDxw4EAcOeP8fVCKi9oiDxW6EhBTBbj/jdpuAgBLU1BTDZvN3u53NVgydzgabzf2J\nQE+2a+q+amsrnZOgvC1bw+1ulNMbspU67DiqD0S4oxqltRWwO2pQUlOBUnslKv57vxxAeW0lSqC7\n/r6jGqUOH1TV1sIB4JfziMtrK+EPHSqFHpW62hvv47/3S+2VAICysh//+7UVN7xfYq9EtcMOu8Tg\ntjf8fF3VqHMtAAALHElEQVT9fnpDtoYa5lQnmxWATA0OhQqsVquIiopyfvzoo4+KXbt2Ndqmb9++\nAnXzNnnjjTfeePPw1rdv3yb/TVbliKBDh7pLpb788kuEh4fjX//6F9LS0hptc+rUKTWiERFpjmqn\nhtasWYPFixfDbrfj8ccfb5NXDBERtQc6If4704mIiDRJ1RYT586dw1133YVbb70VCQkJ2Lx583Xb\nvP766zCZTDCZTBg0aBB8fX097tSnVMbKykokJSXBZDJh1KhRyMrKUixfU3KWlpZi2bJliIqKQnx8\nPE6fPq14zqqqKsTGxiIqKgpxcXF44403brjdM888gz59+mDo0KH4/vvvFU7pWc7vv/8e8fHxCAgI\nwJ///GfFMwKe5dy0aROGDBmCIUOGYPbs2Thx4oRX5szKysKQIUMQFRWFCRMmIDc31+sy1svNzYWv\nry+2bdumYMI6nuQ0m83o0KGD82/nyy+/7H6nLRz3bZGffvpJHD58WAghxJUrV0Tv3r1FSUmJy+13\n7twp7r77bqXiCSE8y5ieni5SU1OFEELk5+eLPn36CIfD4XU533nnHfHYY48JIYTYv3+/+O1vf6to\nxnrl5eVCCCGqqqrErbfeKk6ePNno8zk5OWLEiBHi2rVrYvPmzWLChAlqxJTMefnyZZGbmyuee+45\n8frrr6sRUQghnXP//v3CarUKIYR47733xJw5cxTPKIR0zrKyMud9s9ks7rjjDkXzCSGdUQghampq\nxF133SUmTJggtm7dqnREIYR0zuzsbDFp0iSP96fqEUG3bt0QFRUFAOjcuTNuvfVWHDx40OX2mzdv\nxqxZs5SKB8CzjB06dEBpaSnsdjsKCwsRFBSkeH8XT3Lu3bsXEyZMAADEx8erNiAfFBQEACgrK0NN\nTQ38/RtfepuTk4Pp06ejU6dOmDVrFvLy8tSIKZmzS5cuGDZsGPz81O0AKpUzPj7eeYHGhAkT8MUX\nXyieEZDOGdygD0NxcTECAtyvBSIHqYwA8NZbb2H69Ono0qWL0vGcPMkpmnDW32u6j546dQpHjx7F\n8OHDb/j5iooK/OMf/8C0adMUTvYzVxlnzZqF2tpadO7cGSNHjsSmTZtUSljHVc6xY8fiww8/RGVl\nJXbs2IFvv/0WZ86cUTyfw+HAkCFD0LVrVzz66KO4+eabG33eYrFg4MCBzo+7dOmiymksqZzeoik5\n//rXv2LSpEkKpvuZJzm3b9+OXr16ITk5GevWrfO6jAUFBcjKykJqaioA6SaScpHKqdPpsH//fkRF\nReH3v/+99OunNQ9XmqukpERER0eLTz/91OU2H330kbj//vsVTNWYu4xvvfWWmDt3rigvLxcHDhwQ\nPXr0ELW1tSqkdJ+zvLxcvPTSSyImJkbMmTNH9O/fXxQUFKiQss6ZM2fEgAEDxKFDhxo9/sADD4g9\ne/Y4P46NjRWnT59WOp6Tq5z1VqxYoeqpoXpSOf/1r3+JAQMGiKKiIoWTNSaVU4i613vDuUZKc5Vx\n+vTp4sCBA0IIIZKSklQ7NVTPVc6SkhJRXl4ubDabWLduneTpVdWPCOx2O6ZNm4a5c+di8uTJLrf7\n6KOPFD8tVE8q45dffokHHngAQUFBiI2NRVhYmCoDclI5g4KC8MILL8BisSA9PR2BgYEICwtTPGe9\nXr16Yfz48df1mYqNjcWxY8ecH1+5cgV9+rhfKU5OrnJ6G3c5jxw5gpSUFOzYsQNGo0yzUz3kyc9z\n5syZuHDhAiorKxVM9jNXGf/zn/8gMTERvXv3xieffIKHH34YO3bsUCUj4DpnaGgogoKC4Ofnh4UL\nFyI3NxfV1dWudyRntZLicDjE3LlzxdKlS91uZ7VaRadOnURFRYVCyX7mScaMjAzxyCOPiNraWnH6\n9GnRr18/BRPW8SSn1WoV1dXVory8XDz77LNi+fLlCiasc+XKFec70qtXr4pBgwaJCxcuNNqmfrD4\n6tWrYtOmTaoMFnuSs15aWppqRwSe5Pzxxx9Fv379nO9k1eBJzlOnTjkvsvjss8/EuHHjvC5jQ/Pn\nzxeffPKJUvGcPMl58eJF588yKytLjBkzxu0+Ve01tG/fPmzcuBGDBw+GyWQCALzyyis4e/YsAGDx\n4sUAgE8//RRjx45FYGCgV2ZMTEzEsWPHMGzYMHTp0gVr1671ypzHjh3D/Pnz4XA4EB8fj4yMDMVz\n/vTTT0hKSkJtbS26deuG5cuXo3v37njnnXecOYcPH46RI0di2LBh6NSpEzZu3OiVOS9evIiYmBiU\nlJRAr9dj7dq1OHbsGEKkFqdQOOdLL72EwsJCpKSkAAD8/PxgsVgUy+hpzk8++QTvv/8+/Pz8YDKZ\nsHr1aq/L6A08ybl161akp6fD19cXgwcPlry8mRPKiIg0TvUxAiIiUhcLARGRxrEQEBFpHAsBEZHG\nsRAQEWkcCwERkcaxEBARaRwLARGRxrEQUJvj4+PjXHDD3QzU4uJipKenN3psxIgRrZLhRvtuiY0b\nN2L48OGYO3duq+2TyFOcWUxtTmhoKEpLSyW3y8/Px6RJk/Dtt9+2eobW3vfQoUOxbds29OzZs1X2\nR9QUPCKgdkEIgQULFiA6OhqDBg3Cli1b8Mwzz+D06dMwmUz4wx/+AADOPkD5+fkYOHAgHnroIdxy\nyy147LHHsH//fowYMQIjRozAd999BwCYOnUqhg4ditGjR2P79u3O53v66aev2/fnn3+OGTNmID4+\nHq+88soNc27duhWjR49utL+UlBR89913mDRpEtasWSPbz4jIpVZvjUckMx8fHxEVFeW8ffzxxyI7\nO7vREozFxcUiPz9f3HbbbY2+NiQkRAhR18ddp9MJs9ksqqurRf/+/cWMGTNEdXW1eO+998Sjjz4q\nhBCisLDQuT+TyeTczy/3XV5eLsaMGSMqKytFbW2tmDVr1nXdPgsLC0VERIS4cOGCOH/+vOjfv79z\nOdFevXqJa9euXfe9nj9/XsyfP18MGzZMxMbGivHjx4uMjIyW/PiIrqNq91Gi5ggMDMThw4cbPXbx\n4kVYLBYsW7YM8+fPx6BBg1BYWOh2P7/5zW8watQoAMCwYcNw9913w2AwID4+Hm+99RaAunUwtm7d\nisuXL+PcuXM4cuQIBg8efN0ygP/3f/+HY8eOIT4+HkDdAuPZ2dmIjY1ttM29996L7t27AwDGjBmD\n3bt3Y+bMmS4z/vjjj1i/fj0+/PBDAFBtTQ5q31gIqF3o1q0bvvnmG2zZsgWLFi3CvHnznOszu9Jw\ngRaDweBc19dgMKC6uhpnzpxBeno6zGYzOnXqBJPJBKvVesN9ORwO3HvvvVi/fr3L59PpdI0KiBBC\ncqnD22+/HcePH4fRaFRt7WZq/zhGQO3CTz/9BACYN28elixZgq+//hpdu3ZFSUlJs/d54cIFdOnS\nBZ06dcK+ffvwzTffOD/3y31PmjQJ//73v51/rAsLC51rQdQbN24cPv/8c1y8eBEXLlzA3r17MW7c\nOMkcmzdvRlxcHI4fP96i74fIFR4RUJtTWVnpXHwHAO677z7cddddePLJJ+Hj44OwsDCsWbMGAQEB\nmDlzJqKjo3HPPfdg1apVjd6B//Ld+C8/N2LECPTs2RMDBgzAbbfdhjFjxjg/HxgYeN2+161bhxde\neAEnTpyAwWDA22+/jfDwcOfXGI1G/PGPf8SsWbOg0+nwpz/9CaGhoTfM0tClS5fQsWNH9O/fHwUF\nBfjVr37V/B8e0Q3w8lEiIo3jqSEiIo1jISAi0jgWAiIijWMhICLSOBYCIiKNYyEgItI4FgIiIo1j\nISAi0rj/B04L7Pz2FQl8AAAAAElFTkSuQmCC\n", "text": [ "<matplotlib.figure.Figure at 0x9e65898>" ] } ], "prompt_number": 53 }, { "cell_type": "markdown", "metadata": {}, "source": [ "How many darts do you have to throw until you get a value accurate to a certain amount of significant figures? In other words, how does the relative error scale with the number of darts $n$? We leave that as an excercise to the reader (though a quick Googling will tell you the answer, I find it's always nicer if I have a code to test the theory!).\n", "\n", "More information on this problem can be found here:\n", "http://en.wikipedia.org/wiki/Monte_Carlo_integration" ] } ], "metadata": {} } ] }