{
"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
}