diff --git a/module2/exo2/exercice.ipynb b/module2/exo2/exercice.ipynb index 0bbbe371b01e359e381e43239412d77bf53fb1fb..7efe1e4cdfb4f7bee04bacd7d649f0d677929431 100644 --- a/module2/exo2/exercice.ipynb +++ b/module2/exo2/exercice.ipynb @@ -1,5 +1,393 @@ { - "cells": [], + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Données" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([14. , 7.6, 11.2, 12.8, 12.5, 9.9, 14.9, 9.4, 16.9, 10.2, 14.9,\n", + " 18.1, 7.3, 9.8, 10.9, 12.2, 9.9, 2.9, 2.8, 15.4, 15.7, 9.7,\n", + " 13.1, 13.2, 12.3, 11.7, 16. , 12.4, 17.9, 12.2, 16.2, 18.7, 8.9,\n", + " 11.9, 12.1, 14.6, 12.1, 4.7, 3.9, 16.9, 16.8, 11.3, 14.4, 15.7,\n", + " 14. , 13.6, 18. , 13.6, 19.9, 13.7, 17. , 20.5, 9.9, 12.5, 13.2,\n", + " 16.1, 13.5, 6.3, 6.4, 17.6, 19.1, 12.8, 15.5, 16.3, 15.2, 14.6,\n", + " 19.1, 14.4, 21.4, 15.1, 19.6, 21.7, 11.3, 15. , 14.3, 16.8, 14. ,\n", + " 6.8, 8.2, 19.9, 20.4, 14.6, 16.4, 18.7, 16.8, 15.8, 20.4, 15.8,\n", + " 22.4, 16.2, 20.3, 23.4, 12.1, 15.5, 15.4, 18.4, 15.7, 10.2, 8.9,\n", + " 21. ])" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import numpy as np\n", + "\n", + "L = np.array([14.0, 7.6, 11.2, 12.8, 12.5, 9.9, 14.9, 9.4, 16.9, 10.2, 14.9, 18.1, 7.3, 9.8,\n", + " 10.9,12.2, 9.9, 2.9, 2.8, 15.4, 15.7, 9.7, 13.1, 13.2, 12.3, 11.7, 16.0, 12.4,\n", + " 17.9, 12.2, 16.2, 18.7, 8.9, 11.9, 12.1, 14.6, 12.1, 4.7, 3.9, 16.9, 16.8,\n", + " 11.3, 14.4, 15.7, 14.0, 13.6, 18.0, 13.6, 19.9, 13.7, 17.0, 20.5, 9.9, 12.5,\n", + " 13.2, 16.1, 13.5, 6.3, 6.4, 17.6, 19.1, 12.8, 15.5, 16.3, 15.2, 14.6, 19.1,\n", + " 14.4, 21.4, 15.1, 19.6, 21.7, 11.3, 15.0, 14.3, 16.8, 14.0, 6.8, 8.2, 19.9,\n", + " 20.4, 14.6, 16.4, 18.7, 16.8, 15.8, 20.4, 15.8, 22.4, 16.2, 20.3, 23.4, 12.1,\n", + " 15.5, 15.4, 18.4, 15.7, 10.2, 8.9, 21.0])\n", + "L" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Extrema\n", + "\n", + "## Minimum" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2.8" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.min(L)" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2.8" + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "min = L[0]\n", + "\n", + "for i in range(1, len(L)):\n", + " if L[i] < min:\n", + " min = L[i]\n", + "\n", + "min " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Maximum" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "23.4" + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.max(L)" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "23.4" + ] + }, + "execution_count": 45, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "max = L[0]\n", + "\n", + "for i in range(1, len(L)):\n", + " if L[i] > max:\n", + " max = L[i]\n", + "\n", + "max" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Médiane" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "14.5" + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.median(L)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Moyenne\n", + "\n", + "## Calcul de la moyenne avec la fonction *mean* de *numpy*" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "14.113000000000001" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mean = np.mean(L)\n", + "mean" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Calcul de la moyenne *à la main*" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "14.113000000000001" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mean2 = np.sum(L)/len(L)\n", + "mean2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Comparaison" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mean == mean2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Écart-type\n", + "\n", + "## Calcul de l'écart-type (corrigé) avec la fonction *std* de *numpy*" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "4.334094455301447" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "SD = np.std(L, ddof=1)\n", + "SD" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Calcul de l'écart-type *à la main*" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "4.3340944553014475" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from math import *\n", + "\n", + "V = 0\n", + "\n", + "for i in range(len(L)):\n", + " V += (L[i]-mean2)**2\n", + "\n", + "V /= len(L)-1\n", + "\n", + "SD2 = sqrt(V)\n", + "SD2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Comparaison" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "False" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "SD == SD2" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "-8.881784197001252e-16" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "SD - SD2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Bien que les deux résultats ne soient pas **strictement** égaux, la différence est particulièrement faible (correspondant peut-être à la précision machine)." + ] + } + ], "metadata": { "kernelspec": { "display_name": "Python 3", @@ -16,10 +404,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.3" + "version": "3.6.4" } }, "nbformat": 4, "nbformat_minor": 2 } -