From 46472757f97482842d307aed8a3f545b7ffce1bd Mon Sep 17 00:00:00 2001 From: 2967c9aae1a2f4cee2d1ad632cabf260 <2967c9aae1a2f4cee2d1ad632cabf260@app-learninglab.inria.fr> Date: Fri, 3 Jun 2022 11:18:07 +0000 Subject: [PATCH] Restored previous version --- module2/exo1/toy_notebook_en.ipynb | 99 ++++++++---------------------- 1 file changed, 24 insertions(+), 75 deletions(-) diff --git a/module2/exo1/toy_notebook_en.ipynb b/module2/exo1/toy_notebook_en.ipynb index a4d20f3..a7e3998 100644 --- a/module2/exo1/toy_notebook_en.ipynb +++ b/module2/exo1/toy_notebook_en.ipynb @@ -1,75 +1,24 @@ -# On the computation of $\pi$ - -## Asking the maths library -My computer tells me that $\pi$ is _approximatively_ - - -```python -from math import * -print(pi) -``` - - 3.141592653589793 - - -## Buffon’s needle -Applying the method of [Buffon’s needle](https://en.wikipedia.org/wiki/Buffon%27s_needle_problem), we get the __approximation__ - - -```python -import numpy as np -np.random.seed(seed=42) -N = 10000 -x = np.random.uniform(size=N, low=0, high=1) -theta = np.random.uniform(size=N, low=0, high=pi/2) -2/(sum((x+np.sin(theta))>1)/N) -``` - - - - - 3.128911138923655 - - - -## Using a surface fraction argument -A method that is easier to understand and does not make use of the sin function is based on the -fact that if $X\sim U(0, 1)$ and $Y\sim U(0, 1)$, then $P[X^2 + Y^2\le 1] = \pi/4$ (see ["Monte Carlo method" -on Wikipedia](https://en.wikipedia.org/wiki/Monte_Carlo_method)). The following code uses this approach: - - -```python -%matplotlib inline -import matplotlib.pyplot as plt - -np.random.seed(seed=42) -N = 1000 -x = np.random.uniform(size=N, low=0, high=1) -y = np.random.uniform(size=N, low=0, high=1) -accept = (x*x+y*y) <= 1 -reject = np.logical_not(accept) - -fig, ax = plt.subplots(1) -ax.scatter(x[accept], y[accept], c='b', alpha=0.2, edgecolor=None) -ax.scatter(x[reject], y[reject], c='r', alpha=0.2, edgecolor=None) -ax.set_aspect('equal') -``` - - -![png](output_6_0.png) - - -It is then straightforward to obtain a (not really good) approximation to $\pi$ by counting how -many times, on average, $X^2 + Y^2$ is smaller than 1: - - -```python -4*np.mean(accept) -``` - - - - - 3.112 - - +{ + "cells": [], + "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.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file -- 2.18.1