{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Python, représentation graphique, probabilités\n", "La méthode de Monte-Carlo pour estimer une surface : travail sur les lunules d'Hyppocrate\n", "\n", " \n", "\n", "1. Calculer la somme de l'aire des lunules.\n", "2. On suppose que dans la première figure $AO = AC$, en déduire $BC$, puis d'aire de $ABC$." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from math import sqrt\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "3. Pour calculer l'aire de la lunule de diamètre $[AC]$, on se place dans un repère est orthonormé avec $A(-1\\,; 0)$, $C(1\\,; 0)$ et $O \\left(0 \\,; - \\frac{\\sqrt{3}}{2}\\right)$. \n", " Donc le cercle $\\mathscr C_1$ de diamètre $[AC]$ a pour équation $x^2 + y^2 - 1 = 0$ \n", " et le cercle $\\mathscr C_0$ de centre $O$ a pour équation $x^2 + (y + \\sqrt{3})^2 = 4$. \n", " On cherche a estimer l'aire de la lunule à l'aide de la méthode de Monte-Carlo en plaçant des points au hasard dans $[-1\\,; 1] \\times [0\\,; 1]$" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from matplotlib import pyplot as plt # bibliothèque pour les graphiques\n", "from random import uniform # bibliothèque pour les nombres au hasard\n", "from math import sqrt # bibliothèque pour les fonctions mathématiques\n", "\n", "def est_dansC1(x,y):\n", " \"\"\"retourne True si le point est dans le cercle de diamètre [AC]\"\"\"\n", " if x**2 + y**2 - 1 < 0:\n", " return True\n", " else:\n", " return False\n", "\n", "def est_dansC0(x,y):\n", " \"\"\"retourne True si le point est dans le cercle de centre O\"\"\"\n", " ...\n", "\n", " \n", "n = 50000\n", "x_rouge, y_rouge = [],[] # création de listes de valeurs\n", "x_bleu, y_bleu = [],[]\n", "eff_rouge1 = 0\n", "\n", "for _ in range(n):\n", " x = uniform(-1,1)\n", " y = uniform(0,1)\n", " if ...\n", " x_rouge.append(x)\n", " y_rouge.append(y)\n", " eff_rouge1 += 1 # eff_rouge1 = eff_rouge1 + 1\n", " else:\n", " ...\n", " \n", "plt.plot(x_rouge, y_rouge,'r.')\n", "plt.plot(x_bleu, y_bleu,'b.')\n", "plt.show()\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "4. En déduire une estimation de l'aide de la lunule." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "5. Procéder de la même façon pour obtenir une estimation de l'aide de la lunule de diamètre $[BC]$" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "def est_dansC2(x,y):\n", " \"\"\"retourne True si le point est dans le cercle de diamètre [BC]\"\"\"\n", " ...\n", "\n", "def est_dansC0(x, y):\n", " # l'équation de c0 n'est pas la même dans ce repère !\n", " # Python redéfini la fonction sans avertissement...\n", " ...\n", " \n", "# n est déjà défini, mais il faut réinitiliser les listes\n", "x_rouge ...\n", "x_bleu ...\n", "eff_rouge2 = 0\n", "\n", "for _ in range(n):\n", " ...\n", " \n", "plt.plot(x_rouge, y_rouge,'r.')\n", "plt.plot(x_bleu, y_bleu,'b.')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# estimation de la somme des aires des lunules\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Travail sur les listes (en 1ere)\n", "2019 est un nombre heureux !\n", "\n", "\n", "\n", "$2019 \\Rightarrow 2^2 + 0^2 + 1^2 + 9^2 = 86 \\Rightarrow 8^2 + 6^2 = 100 \\Rightarrow 1^2 + 0^2 + 0^2 = 1$\n", "\n", "1. Quelle est la prochaine année heureuse ?\n", "2. Lister les $n$ premièrs nombres heureux." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "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.5.2" } }, "nbformat": 4, "nbformat_minor": 2 }