{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# À propos de π\n", "\n", "Ce notebook présente différentes méthodes pour estimer la valeur de π.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Formules mathématiques\n", "\n", "La valeur de π peut être estimée par différentes méthodes. \n", "Par exemple, avec la formule suivante :\n", "\n", "$$\\pi = \\frac{C}{D}$$\n", "\n", "où *C* est la circonférence et *D* le diamètre d’un cercle.\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import math\n", "print(f\"La valeur de π selon la bibliothèque math est : {math.pi}\")\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Méthode des aiguilles de Buffon\n", "\n", "Pour en savoir plus : \n", "[Expérience des aiguilles de Buffon (Wikipedia)](https://fr.wikipedia.org/wiki/Aiguille_de_Buffon)\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import random\n", "import math\n", "\n", "def buffon_needle(n_drops=100000):\n", " hits = 0\n", " for _ in range(n_drops):\n", " y = random.random()\n", " theta = random.uniform(0, math.pi / 2)\n", " if y <= (math.sin(theta) / 2):\n", " hits += 1\n", " return (2 * n_drops) / hits\n", "\n", "pi_est = buffon_needle()\n", "print(f\"Estimation de π par la méthode de Buffon : {pi_est}\")\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "\n", "# Exemple : afficher la convergence de l'estimation de π\n", "import numpy as np\n", "\n", "n_values = np.arange(1000, 20000, 1000)\n", "pi_estimations = [buffon_needle(n) for n in n_values]\n", "\n", "plt.plot(n_values, pi_estimations)\n", "plt.axhline(y=math.pi, color='r', linestyle='--', label='π réel')\n", "plt.xlabel(\"Nombre d'expériences\")\n", "plt.ylabel(\"Estimation de π\")\n", "plt.legend()\n", "plt.title(\"Convergence de la méthode de Buffon\")\n", "plt.show()\n" ] } ], "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.4" } }, "nbformat": 4, "nbformat_minor": 2 }