{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "In this notebook we calculate the value of $ \\pi $ with a self coded random number generator." ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", "%matplotlib inline\n", "%precision 8\n", "plt.style.use('ggplot')" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def rng(m=2**32, a=1103515245, c=12345):\n", " rng.current = (a*rng.current + c) % m\n", " return rng.current/m\n", "\n", "# setting the seed\n", "rng.current = 1" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1.71824396" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.mean([np.exp(rng()) for i in range(1000000)])" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2.71828183" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.exp(1)" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.24188016" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.var([np.exp(rng()) for i in range(1000000)])" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.24203561" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(np.exp(2)-1)*0.5-(np.exp(1)-1)**2" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Number of random points for Monte Carlo estimate of Pi?\n", ">10000\n", "\n", "Number of Samples for Monte Carlo estimate of Pi?\n", ">10000\n", "\n", "--------------\n", "\n", "Approximate value for pi: 3.1444\n", "Difference to exact value of pi: 0.002807346410206968\n", "Percent Error: (approx-exact)/exact*100: 0.08936061163114534%\n", "Execution Time: 117.38988995552063 seconds\n", "\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\nrkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import numpy as numpy\n", "import matplotlib.pyplot as plt\n", "import time as time\n", "\n", "# input total number of random points and number of samples for the histogram\n", "total_random_points = int(input(\"\\nNumber of random points for Monte Carlo estimate of Pi?\\n>\"))\n", "W = int(input(\"\\nNumber of Samples for Monte Carlo estimate of Pi?\\n>\"))\n", "\n", "# start time of calculation\n", "start_time = time.time()\n", "\n", "# number of random points inside unit cicrle and total random points\n", "inside_circle = 0\n", "\n", "# create empty x and y arrays for eventual scatter plot of generated random points\n", "x_plot_array = numpy.empty(shape=(1,total_random_points))\n", "y_plot_array = numpy.empty(shape=(1,total_random_points))\n", "pi_approx = numpy.empty(shape=(1,total_random_points))\n", "\n", "\n", "# generate random points and count points inside unit circle\n", "# top right quadrant of unit cicrle only\n", "for i in range(0, total_random_points):\n", " # print(f'\\nIteration: {i + 1}')\n", " # generate random x, y in range [0, 1]\n", " x = rng()\n", " x_plot_array[0,i] = x\n", " #numpy.append(x_plot_array, [x])\n", " #print(f'{x_plot_array}')\n", " # print(f'x value: {x}')\n", " y = rng()\n", " y_plot_array[0,i] = y\n", " #numpy.append(y_plot_array, [y])\n", " #print(f'{y_plot_array}')\n", " # print(f'y value: {y}')\n", " # calc x^2 and y^2 values\n", " x_squared = x**2\n", " y_squared = y**2\n", " # count if inside unit circle, top right quadrant only\n", " if numpy.sqrt(x_squared + y_squared) < 1.0:\n", " inside_circle += 1\n", " # print(f'Points inside circle {inside_circle}')\n", " # print(f'Number of random points {i+1}')\n", " # calc approximate pi value\n", " pi_approx[0,i] = inside_circle / (i+1) * 4\n", " #numpy.append(pi_approx,[inside_circle / (i+1) * 4])\n", " # print(f'Approximate value for pi: {pi_approx}')\n", "\n", "pi_approx_sample = numpy.empty(shape=(1,W))\n", "for j in range(W):\n", " x = numpy.array([rng() for i in range(total_random_points)])\n", " y = numpy.array([rng() for i in range(total_random_points)])\n", " x_squared = x**2\n", " y_squared = y**2\n", " pi_approx_sample[0,j] = 4*numpy.mean((x_squared+y_squared < 1.0))\n", " \n", "# final numeric output for pi estimate\n", "print (\"\\n--------------\")\n", "print (f\"\\nApproximate value for pi: {pi_approx[0,-1]}\")\n", "print (f\"Difference to exact value of pi: {pi_approx[0,-1]-numpy.pi}\")\n", "print (f\"Percent Error: (approx-exact)/exact*100: {(pi_approx[0,-1]-numpy.pi)/numpy.pi*100}%\")\n", "print (f\"Execution Time: {time.time() - start_time} seconds\\n\")\n", "\n", "# plot output of random points and circle, top right quadrant only\n", "random_points_plot = plt.scatter(x_plot_array, y_plot_array, color='blue', s=.1)\n", "circle_plot = plt.Circle( ( 0, 0 ), 1, color='red', linewidth=2, fill=False)\n", "\n", "ax1 = plt.gca()\n", "ax1.cla()\n", "\n", "ax1.add_artist(random_points_plot)\n", "ax1.add_artist(circle_plot)\n", "plt.show()\n", "\n", "plt.plot(pi_approx[0,1:]-numpy.pi)\n", "plt.show()\n", "\n", "plt.hist(pi_approx_sample[0,:]-numpy.pi,bins=int(numpy.sqrt(total_random_points)))\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "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.6.5" } }, "nbformat": 4, "nbformat_minor": 2 }