From bfcb0842e45420fb902d2bfd32b18cbe6509857e Mon Sep 17 00:00:00 2001 From: c4b4c4d45a79e9781c87897476ed95c8 Date: Tue, 12 May 2020 11:09:36 +0000 Subject: [PATCH] Exo 1 Draft --- module2/exo1/test.ipynb | 66 ++++++++++++ module2/exo1/toy_notebook_fr.ipynb | 164 ++++++++++++++++++++++++++++- 2 files changed, 227 insertions(+), 3 deletions(-) create mode 100644 module2/exo1/test.ipynb diff --git a/module2/exo1/test.ipynb b/module2/exo1/test.ipynb new file mode 100644 index 0000000..74ff886 --- /dev/null +++ b/module2/exo1/test.ipynb @@ -0,0 +1,66 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[1] 13\n" + ] + } + ], + "source": [ + "xa = 12\n", + "b = xa + 1\n", + "print(b)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[1] 12\n", + "[1] 13\n" + ] + } + ], + "source": [ + "print(xa)\n", + "print(b)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "R", + "language": "R", + "name": "ir" + }, + "language_info": { + "codemirror_mode": "r", + "file_extension": ".r", + "mimetype": "text/x-r-source", + "name": "R", + "pygments_lexer": "r", + "version": "3.4.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/module2/exo1/toy_notebook_fr.ipynb b/module2/exo1/toy_notebook_fr.ipynb index 0bbbe37..f0c36be 100644 --- a/module2/exo1/toy_notebook_fr.ipynb +++ b/module2/exo1/toy_notebook_fr.ipynb @@ -1,5 +1,164 @@ { - "cells": [], + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "toy_notebook_fr" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "March 28, 2019" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#A propos du calcul de pi" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "hideCode": false + }, + "outputs": [], + "source": [ + "## En demandant à la lib maths" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "Mon ordi m'indique que pi vaut approximativement" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "In [1]: from math import *\n", + " print(pi)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "##En utilisant la méthode des aiguilles de Buffon" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "Mais calculé avec la méthode des aiguilles de Buffon, on obtiendrait comme approximation:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "In [2]: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": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "## Avec un argument \"fréquentiel\" de surface" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "Sinon, une méthode plus simple à comprendre et ne faisant pas intervenir d'apel à la fonction sinus se base sur le fait que si X ~ U(0,1) et Y ~ U(0,1) alors P[X² + Y² < 1] = pi/4 (voir méthode de Monte-Carlo sur Wikipedia). Le code suivant illustre ce fait :" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "ename": "IndentationError", + "evalue": "unexpected indent (, line 2)", + "output_type": "error", + "traceback": [ + "\u001b[0;36m File \u001b[0;32m\"\"\u001b[0;36m, line \u001b[0;32m2\u001b[0m\n\u001b[0;31m import matplotlib.pyplot as plt\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mIndentationError\u001b[0m\u001b[0;31m:\u001b[0m unexpected indent\n" + ] + } + ], + "source": [ + "In [3]: %matplotlib inline\n", + " import matplotlib.pyplot as plt\n", + " \n", + " np.random.seed(seed=42)\n", + " N = 1000\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", + " 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": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "Il est alors aisé d'obtenir une approximation (pas terrible) de pi en comptant combien de fois, en moyenne, X² + Y² est inférieur à 1:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "In [4] : 4*np.mean(accept)" + ] + } + ], "metadata": { "kernelspec": { "display_name": "Python 3", @@ -16,10 +175,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.3" + "version": "3.6.4" } }, "nbformat": 4, "nbformat_minor": 2 } - -- 2.18.1