Exercice Module 2

parent e391755a
{
"cells": [],
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 1. A propos du calcul de $\\pi$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 1.1 En demandant à la lib maths"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Mon ordinateur m'indique que $\\pi$ vaut _approximativement_"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"3.141592653589793\n"
]
}
],
"source": [
"from math import *\n",
"print(pi)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 1.2 En utilisant la méthode des aiguilles de Buffon"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Mais calculé avec la __méthode__ des [aiguilles de Buffon](https://fr.wikipedia.org/wiki/Aiguille_de_Buffon), on obtiendrait comme __approximation__ :"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"3.128911138923655"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import numpy as np\n",
"np.random.seed(seed=42)\n",
"N = 10000\n",
"x = np.random.uniform(size=N, low=0, high=1)\n",
"theta = np.random.uniform(size=N, low=0, high=pi/2)\n",
"2/(sum((x + np.sin(theta))>1)/N)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 1.3 Avec une argument \"fréquentiel\" de surface"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Sinon, une méthode plus simple à comprendre et ne faisant pas intervenir d'appel à la fonction sinus se base sur le fait que $X \\sim U(0,1)$ et $Y \\sim U(0,1)$ alors $P[X^2 + Y^2 \\leq 1] = \\pi/4$ (voir [méthode de Monte Carlo sur Wikipedia](https://fr.wikipedia.org/wiki/M%C3%A9thode_de_Monte-Carlo#D%C3%A9termination_de_la_valeur_de_%CF%80)). Le code suivant illustre ce fait :"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"%matplotlib inline\n",
"import matplotlib.pyplot as plt\n",
"\n",
"np.random.seed(seed=42)\n",
"N = 1000000\n",
"x = np.random.uniform(size=N, low=0, high=1)\n",
"y = np.random.uniform(size=N, low=0, high=1)\n",
"\n",
"accept = (x*x+y*y) <= 1\n",
"reject = np.logical_not(accept)\n",
"\n",
"fig, ax = plt.subplots(1)\n",
"ax.scatter(x[accept], y[accept], c='b', alpha=0.2, edgecolor=None)\n",
"ax.scatter(x[reject], y[reject], c='r', alpha=0.2, edgecolor=None)\n",
"ax.set_aspect('equal')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Il est alors aisé d'obtenir une approximation (pas terrible) de $\\pi$ en comptant combien de fois, en moyenne, $X^2 + Y^2$ est inférieur à 1 :"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"3.141864"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"4*np.mean(accept)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
......@@ -16,10 +179,9 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.3"
"version": "3.6.4"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment