{
"metadata": {
"name": "S2_Objets_et_NumPy"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "heading",
"level": 1,
"metadata": {},
"source": [
"S\u00e9ance 2 : Objets et Calcul num\u00e9rique"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"Formation Python du d\u00e9partement M\u00e9catronique"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"11h00 - 12h30\n",
"\n",
"Apr\u00e8s une S\u00e9ance 1 qui introduisait les bases du language Python g\u00e9n\u00e9raliste, voici deux sujets plus sp\u00e9cifiques\n",
"\n",
"*A) Python orient\u00e9 objet*\n",
"\n",
"* Introduction rapide aux objets avec l'exemple d'une classe \u00ab\u00a0Torseur\u00a0\u00bb.\n",
"* M\u00e9thodes et surcharge d'op\u00e9rateurs (ou \"comment pouvoir additioner des torseurs\").\n",
"\n",
"*B) Python num\u00e9rique\u00a0avec NumPy*...\n",
"\n",
"* Calcul num\u00e9rique avec la biblioth\u00e8que NumPy.\n",
"* Alg\u00e8bre lin\u00e9aire de base.\n",
"* Lecture d'un fichier de donn\u00e9es exp\u00e9rimentales (fichier texte type CSV)\n",
"\n",
"*C) ...puis trac\u00e9 de graphiques avec Matplotlib*\n",
"\n",
"* aper\u00e7u des fonctions graphiques principales. D\u00e9placement/Zoom interactif.\n",
"* exemple\u00a0: diagramme de Bode (avec la question de l'identification d'un mod\u00e8le)\n",
"* bonus : diagrammes de Black, Nyquist"
]
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"A) Python Orient\u00e9 Objet, par l'exemple"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Exemple de la cr\u00e9ation d'une Classe \"Torseur2D\", inspir\u00e9 de la m\u00e9canique du solide.\n",
"\n",
"Il existent d'autres tutoriels plus complets sur les objets en Python tel que http://docs.python.org/2/tutorial/classes.html#a-first-look-at-classes.\n",
"\n",
"\n",
"### Cahier des charges de la Classe :\n",
"\n",
"L'objet math\u00e9matique Torseur peut se caract\u00e9riser par 3 param\u00e8tres :\n",
"\n",
"* une *r\u00e9sultante* (dim 2),\n",
"* et un *moment* (dim 1)...\n",
"* ...exprim\u00e9 en un *point* (dim 2).\n",
"\n",
"Pour manipuler ce type d'objet en Python, on cr\u00e9e donc une classe poss\u00e9dant ces trois champs.\n",
"\n",
"Dans un second temps, on va voir comment permettre l'addition des objets Torseur2D."
]
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": [
"A1) Construction de la classe, \u00e9tape par \u00e9tape"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Une classe se d\u00e9finit par le mot-cl\u00e9 `class` suivit du nom de la classe.\n",
"\n",
"On commence par une d\u00e9finition minimale qui inclue la *m\u00e9thode* `__init__` qui sert \u00e0 initialiser l'objet :"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"class Torseur2D(object):\n",
" def __init__(self, resul, mom_ref, ref):\n",
" '''torseur de r\u00e9sultante `resul` et de moment `mom_ref`\n",
" exprim\u00e9 au point de coordonn\u00e9es `ref`.\n",
" '''\n",
" # R\u00e9sultante\n",
" self.resul = resul\n",
" # Moment exprim\u00e9 en ref\n",
" self.mom_ref = mom_ref\n",
" # Point de r\u00e9f\u00e9rence\n",
" self.ref = ref\n",
" \n",
" print(\"Initialisation d'un Torseur\")\n",
" # end __init__()\n",
"\n",
"# Cr\u00e9ation (\"Instanciation\") d'un torseur\n",
"T1 = Torseur2D((2,3), 1., (0,0))\n",
"T1.mom_ref\n",
"T1.ref\n",
"T1.resul"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Initialisation d'un Torseur\n"
]
},
{
"output_type": "pyout",
"prompt_number": 9,
"text": [
"(2, 3)"
]
}
],
"prompt_number": 9
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Remarquons que la Docstring de init sert \u00e0 documnter la cr\u00e9ation de la classe :"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"Torseur2D?"
],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Toutes les attributs d'un objet sont accessibles en lecture et en \u00e9criture :"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"T1.resul = [4, 5]\n",
"T1.resul"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 12,
"text": [
"[4, 5]"
]
}
],
"prompt_number": 12
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Remarque : Par d\u00e9faut, aucune v\u00e9rification de la valeur assign\u00e9e n'est effectu\u00e9e, mais des v\u00e9rifications sont facilement impl\u00e9mentables (notion de *getter* et *setter*)"
]
},
{
"cell_type": "heading",
"level": 4,
"metadata": {},
"source": [
"Formule du \"Changement de Point\""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Une des formules essentielle pour travailler avec les torseurs est de calculer le moment en n'impore quel point (\"formule de changement de point\")\n",
"\n",
"On ajoute donc une nouvelle *m\u00e9thode* qui impl\u00e9mente de le changement de point :\n",
"\n",
"$$\\vec{M}(X) = \\vec{M}(O) + \\vec{R} \\times \\vec{OX} $$\n",
"\n",
"avec $\\vec{R}$ la r\u00e9sultante du torseur et $O$ le point de r\u00e9f\u00e9rence initial."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# m\u00e9thode \u00e0 ajouter dans la d\u00e9finition de la classe Torseur2D\n",
"def calc_mom(self, pt):\n",
" '''calcule le moment du torseur en un point `pt` quelconque'''\n",
" # Formule du changement de point: M(X) = M(O) + R^OX\n",
" # 1) Vecteur d\u00e9placement OX = X-O:\n",
" delta_ref = (pt[0] - self.ref[0],\n",
" pt[1] - self.ref[1])\n",
" # 2) Produit vectoriel R^OX\n",
" delta_mom = self.resul[0]*delta_ref[1] - self.resul[1]*delta_ref[0]\n",
" # 3) Nouveau moment:\n",
" mom = self.mom_ref + delta_mom\n",
" return mom\n",
"# end calc_mom()"
],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Souvent, les m\u00e9thodes servent \u00e0 **changer l'\u00e9tat de l'objet**. Ici, on propose par exemple de changer le point de r\u00e9f\u00e9rence (ce qui recalcule le moment au point de r\u00e9f\u00e9rence)"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# m\u00e9thode \u00e0 ajouter dans la d\u00e9finition de la classe Torseur2D\n",
"def set_ref(self, new_ref):\n",
" '''change le point de r\u00e9f\u00e9rence'''\n",
" # 1) Calcul du moment au nouveau point de r\u00e9f\u00e9rence\n",
" self.mom_ref = self.calc_mom(new_ref)\n",
" # 2) Mise \u00e0 jour du point de r\u00e9f\u00e9rence\n",
" self.ref = new_ref\n",
"# end set_ref()"
],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "heading",
"level": 4,
"metadata": {},
"source": [
"M\u00e9thodes supl\u00e9mentaires"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"On peut obtenir une belle repr\u00e9sentation textuelle en r\u00e9impl\u00e9mentant la m\u00e9thode sp\u00e9ciale `__str__` (celle-ci est appel\u00e9e par str(mon_torseur))"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def __str__(self):\n",
" res = 'Torseur 2D '\n",
" res += 'de R\u00e9sultante {0} et de Moment {1}'.format(str(self.resul),\n",
" str(self.mom_ref))\n",
" res += ' exprim\u00e9 au point {0}'.format(str(self.ref))\n",
" \n",
" return res.encode('utf-8')\n",
"# end __str__"
],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Pour pouvoir additionner/soustraire des torseurs, il faut r\u00e9impl\u00e9menter les m\u00e9thodes correspondants \u00e0 ces op\u00e9rations :\n",
"\n",
"* `__add__` pour a + b\n",
"* `__neg__` pour -a\n",
"* `__sub__` pour a-b\n",
"\n",
"(cf. Emulating numeric types http://docs.python.org/2/reference/datamodel.html#emulating-numeric-types)"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"### Op\u00e9ration arithm\u00e9tiques\n",
"def __add__(self, other):\n",
" '''addition de 2 torseurs: T1 + T2\n",
" Le pt de r\u00e9f\u00e9rence utilis\u00e9 est celui de T1 (op\u00e9rande gauche)\n",
" '''\n",
" # 1) addition des R\u00e9sultantes:\n",
" resul = (self.resul[0] + other.resul[0],\n",
" self.resul[1] + other.resul[1])\n",
" # 2) addition des moments au point de r\u00e9f\u00e9rence de self:\n",
" mom_ref = self.mom_ref\n",
" other_mom = other.calc_mom(self.ref)\n",
" mom_ref = mom_ref + other_mom\n",
" # 3) Cr\u00e9ation de l'objet Torseur:\n",
" T = Torseur2D(resul, mom_ref, self.ref)\n",
" return T\n",
"# end __add__\n",
"\n",
"def __neg__(self):\n",
" '''oppos\u00e9 du torseur'''\n",
" resul = (-self.resul[0], -self.resul[1])\n",
" mom_ref = -self.mom_ref\n",
" T = Torseur2D(resul, mom_ref, self.ref)\n",
" return T\n",
"# end __neg__\n",
"\n",
"def __sub__(self, other):\n",
" '''soustraction de 2 torseurs: T1-T2'''\n",
" return self + (-other)"
],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": [
"D\u00e9finition compl\u00e8te de la classe Torseur2D"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"class Torseur2D(object):\n",
" def __init__(self, resul, mom_ref, ref):\n",
" '''torseur de r\u00e9sultante `resul` et de moment `mom_ref`\n",
" exprim\u00e9 au point de coordonn\u00e9es `ref`.\n",
" '''\n",
" # R\u00e9sultante\n",
" self.resul = resul\n",
" # Moment exprim\u00e9 en ref\n",
" self.mom_ref = mom_ref\n",
" # Point de r\u00e9f\u00e9rence\n",
" self.ref = ref \n",
" print(\"[Initialisation d'un nouveau Torseur]\")\n",
" #print(self)\n",
" # end __init__()\n",
" \n",
" def calc_mom(self, pt):\n",
" '''calcule le moment du torseur en un point `pt` quelconque'''\n",
" # Formule du changement de point: M(X) = M(O) + R^OX\n",
" # 1) Vecteur d\u00e9placement OX = X-O:\n",
" delta_ref = (pt[0] - self.ref[0],\n",
" pt[1] - self.ref[1])\n",
" # 2) Produit vectoriel R^OX\n",
" delta_mom = self.resul[0]*delta_ref[1] - self.resul[1]*delta_ref[0]\n",
" # 3) Nouveau moment:\n",
" mom = self.mom_ref + delta_mom\n",
" return mom\n",
" # end calc_mom()\n",
"\n",
" def set_ref(self, new_ref):\n",
" '''change le point de r\u00e9f\u00e9rence'''\n",
" # 1) Calcul du moment au nouveau point de r\u00e9f\u00e9rence\n",
" self.mom_ref = self.calc_mom(new_ref)\n",
" # 2) Mise \u00e0 jour du point de r\u00e9f\u00e9rence\n",
" self.ref = new_ref\n",
" # end set_ref()\n",
"\n",
" def __str__(self):\n",
" res = u'Torseur 2D '\n",
" res += u'de R\u00e9sultante {0} et de Moment {1}'.format(str(self.resul),\n",
" str(self.mom_ref))\n",
" res += u' exprim\u00e9 au point {0}'.format(str(self.ref))\n",
" \n",
" return res.encode('utf-8')\n",
" # end __str__\n",
" \n",
" ### Op\u00e9ration arithm\u00e9tiques\n",
" def __add__(self, other):\n",
" '''addition de 2 torseurs: T1 + T2\n",
" Le pt de r\u00e9f\u00e9rence utilis\u00e9 est celui de T1 (op\u00e9rande gauche)\n",
" '''\n",
" # 1) addition des R\u00e9sultantes:\n",
" resul = (self.resul[0] + other.resul[0],\n",
" self.resul[1] + other.resul[1])\n",
" # 2) addition des moments au point de r\u00e9f\u00e9rence de self:\n",
" mom_ref = self.mom_ref\n",
" other_mom = other.calc_mom(self.ref)\n",
" mom_ref = mom_ref + other_mom\n",
" # 3) Cr\u00e9ation de l'objet Torseur:\n",
" T = Torseur2D(resul, mom_ref, self.ref)\n",
" return T\n",
" # end __add__\n",
" \n",
" def __neg__(self):\n",
" '''oppos\u00e9 du torseur'''\n",
" resul = (-self.resul[0], -self.resul[1])\n",
" mom_ref = -self.mom_ref\n",
" T = Torseur2D(resul, mom_ref, self.ref)\n",
" return T\n",
" # end __neg__\n",
" \n",
" def __sub__(self, other):\n",
" '''soustraction de 2 torseurs: T1-T2'''\n",
" return self + (-other)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 30
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Initialisation de 3 torseurs :"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"T1 = Torseur2D((1,1), 0, (0,0))\n",
"T2 = Torseur2D((1,1), 1, (0,0))\n",
"T3 = Torseur2D((1,1), -1, (0,0))\n",
"print(T3)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"[Initialisation d'un nouveau Torseur]\n",
"[Initialisation d'un nouveau Torseur]\n",
"[Initialisation d'un nouveau Torseur]\n",
"Torseur 2D de R\u00e9sultante (1, 1) et de Moment -1 exprim\u00e9 au point (0, 0)\n"
]
}
],
"prompt_number": 40
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Quelques op\u00e9rations de d\u00e9monstration :"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Changer le point de r\u00e9f\u00e9rence :\n",
"T3.set_ref((-1,0))\n",
"print(T3)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Torseur 2D de R\u00e9sultante (1, 1) et de Moment 0 exprim\u00e9 au point (-1, 0)\n"
]
}
],
"prompt_number": 41
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"print(-T1)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"[Initialisation d'un nouveau Torseur]\n",
"Torseur 2D de R\u00e9sultante (-1, -1) et de Moment 0 exprim\u00e9 au point (0, 0)\n"
]
}
],
"prompt_number": 42
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"print(T1+T2) # torseurs d\u00e9j\u00e0 exprim\u00e9s au m\u00eame pt"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"[Initialisation d'un nouveau Torseur]\n",
"Torseur 2D de R\u00e9sultante (2, 2) et de Moment 1 exprim\u00e9 au point (0, 0)\n"
]
}
],
"prompt_number": 43
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"print(T1+T3) # torseurs exprim\u00e9s en des pts diff\u00e9rents"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"[Initialisation d'un nouveau Torseur]\n",
"Torseur 2D de R\u00e9sultante (2, 2) et de Moment -1 exprim\u00e9 au point (0, 0)\n"
]
}
],
"prompt_number": 44
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Pour compl\u00e9ter cette classe Torseur2D, on pourrait impl\u00e9menter les op\u00e9rations de comparaisons (== et !=) : http://docs.python.org/2/reference/datamodel.html#object.\\__eq\\__\n",
"\n",
"---"
]
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"B) Python num\u00e9rique avec NumPy"
]
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": [
"B1) Pourquoi un module particulier (NumPy) ?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Pour le calcul scientifique, on est souvent amen\u00e9 \u00e0 manipuler de *grands ensembles de nombres*.\n",
"Les listes Python (`list`, vu \u00e0 la S\u00e9ance 1) sont des conteneurs *h\u00e9t\u00e9rog\u00e8nes* ne sont pas adapt\u00e9es pour cela car :\n",
"\n",
"* les op\u00e9rations arithm\u00e9tiques (addition, multiplication) ne sont pas r\u00e9alisable facilement (car le `+` pour les listes est une concat\u00e9nation)\n",
"* une liste Python ne stocke par sont contenu de fa\u00e7on efficace (i.e. contigu\u00eb) en m\u00e9moire.\n",
"\n",
"Pour manipuler des tableau de nombres, il y a le module NumPy (http://docs.scipy.org/doc/numpy/user/) qui cr\u00e9e un nouveau type de tableau `array`"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Importer le module numpy avec un nom raccourci :\n",
"import numpy as np\n",
"\n",
"# Cr\u00e9er un \"array\" \u00e0 partir d'une liste\n",
"l = np.array([10, 20, 30, 40]) # l n'est plus une liste mais un tableau NumPy\n",
"\n",
"print(type(l))\n",
"l"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n"
]
},
{
"output_type": "pyout",
"prompt_number": 33,
"text": [
"array([10, 20, 30, 40])"
]
}
],
"prompt_number": 33
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\u00c0 premi\u00e8re vue, un tableau NumPy ressemble beaucoup \u00e0 une liste. En particulier on peut l'indexer comme une liste :"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"l[0]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 34,
"text": [
"10"
]
}
],
"prompt_number": 34
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Grosse diff\u00e9rences, on r\u00e9alise facilement des *op\u00e9rations arithm\u00e9tiques terme \u00e0 terme* :"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"l+l"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 35,
"text": [
"array([20, 40, 60, 80])"
]
}
],
"prompt_number": 35
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"l*10"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 36,
"text": [
"array([100, 200, 300, 400])"
]
}
],
"prompt_number": 36
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"l**2"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 37,
"text": [
"array([ 100, 400, 900, 1600])"
]
}
],
"prompt_number": 37
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"On peut \u00e9galement utiliser des fonctions math\u00e9matiques usuelles (racine, exponentielle, ...) mais qui fonctionnent de fa\u00e7on *vectoris\u00e9e* :"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"np.exp(l)\n",
"np.sqrt(l)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 9,
"text": [
"array([ 3.16227766, 4.47213595, 5.47722558, 6.32455532])"
]
}
],
"prompt_number": 9
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Liste des ~60 fonctions vectoris\u00e9e : http://docs.scipy.org/doc/numpy/reference/ufuncs.html#available-ufuncs (appel\u00e9es \"ufuncs\" dans le jargon NumPy)"
]
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": [
"B2) Fonctions de bases de NumPy"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* documentation de r\u00e9f\u00e9rence : http://docs.scipy.org/doc/ (en anglais)\n",
"* Support de formation \"SciPy lectures\" : http://scipy-lectures.github.io/intro/numpy/array_object.html (en anglais)\n",
"* Tutoriel de Nicolas Rougier http://www.loria.fr/~rougier/teaching/numpy/numpy.html (en anglais)\n",
"* Autre support en fran\u00e7ais : http://python-prepa.github.io/edp_chaleur.html#introduction-rapide-a-numpy (formation Python ENS Paris)"
]
},
{
"cell_type": "heading",
"level": 4,
"metadata": {},
"source": [
"Cr\u00e9ation de tableaux"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# On a d\u00e9j\u00e0 vu la fonction \"constructeur\" qui transforme tout type de listes (m\u00eame imbriqu\u00e9es) en tableau\n",
"l = [1, 6, 10]\n",
"np.array(l)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 12,
"text": [
"array([ 1, 6, 10])"
]
}
],
"prompt_number": 12
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# L'\u00e9quivalent de `range` :\n",
"np.arange(10)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 13,
"text": [
"array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])"
]
}
],
"prompt_number": 13
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"print(np.zeros(5))\n",
"print(np.ones(5))"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"[ 0. 0. 0. 0. 0.]\n",
"[ 1. 1. 1. 1. 1.]\n"
]
}
],
"prompt_number": 14
},
{
"cell_type": "heading",
"level": 4,
"metadata": {},
"source": [
"Tableaux \u00e0 plusieurs dimensions"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# avec des listes imbriqu\u00e9es\n",
"np.array([[1,2,3], [4,5,6]])"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 15,
"text": [
"array([[1, 2, 3],\n",
" [4, 5, 6]])"
]
}
],
"prompt_number": 15
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Matrice identit\u00e9 3x3 :\n",
"np.eye(3)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 40,
"text": [
"array([[ 1., 0., 0.],\n",
" [ 0., 1., 0.],\n",
" [ 0., 0., 1.]])"
]
}
],
"prompt_number": 40
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Question** : comment cr\u00e9er (avec `np.zeros`) un tableau \u00e0 plusieur dimensions ? Une matrice 4x3 par exemple ?"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"a = np.zeros( (4,3) )\n",
"# attention aux parenth\u00e8ses pour que (3,3) soit bien *un seul argument*\n",
"a"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 42,
"text": [
"array([[ 0., 0., 0.],\n",
" [ 0., 0., 0.],\n",
" [ 0., 0., 0.],\n",
" [ 0., 0., 0.]])"
]
}
],
"prompt_number": 42
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"L'information sur le nombre de dimension est accessible avec l'attribut `.ndim`."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"print(l.ndim)\n",
"a.ndim"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"1\n"
]
},
{
"output_type": "pyout",
"prompt_number": 44,
"text": [
"2"
]
}
],
"prompt_number": 44
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Sa dimension (sa \"forme\", cad shape en anglais) est accessbile avec `.shape` (qui est un tuple de longueur `ndim`)"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"a.shape"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 45,
"text": [
"(4, 3)"
]
}
],
"prompt_number": 45
},
{
"cell_type": "heading",
"level": 4,
"metadata": {},
"source": [
"Trancher dans un tableau (\"slicing\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Un des grands int\u00e9r\u00eat des tableaux NumPy est la capacit\u00e9 d'acc\u00e9der s\u00e9lectivement \u00e0 des morceaux de tableau. Pour cela la syntaxe d'indexation (avec `[...]`) est \u00e9tendu pour permettre de selectionner chaque dimension"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"a = np.array([[1,2,3], [4,5,6], [7,8,9],[10,11,12]])\n",
"a"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 59,
"text": [
"array([[ 1, 2, 3],\n",
" [ 4, 5, 6],\n",
" [ 7, 8, 9],\n",
" [10, 11, 12]])"
]
}
],
"prompt_number": 59
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# s\u00e9lectionner 1 \u00e9l\u00e9ment\n",
"a[0,0]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 60,
"text": [
"1"
]
}
],
"prompt_number": 60
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# s\u00e9lectionner la 1\u00e8re colonne \n",
"a[:, 0]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 61,
"text": [
"array([ 1, 4, 7, 10])"
]
}
],
"prompt_number": 61
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Pour s\u00e9lection plusieurs lignes/colonnes"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# M\u00e9thode 1 : indexer avec la syntaxe start:stop:step\n",
"a[:, 0:2]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 73,
"text": [
"array([[ 1, 2],\n",
" [ 4, 5],\n",
" [ 7, 8],\n",
" [10, 11]])"
]
}
],
"prompt_number": 73
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# M\u00e9thode 2 : indexer avec une liste (plus g\u00e9n\u00e9ral)\n",
"a[:, [0, 1] ]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 74,
"text": [
"array([[ 1, 2],\n",
" [ 4, 5],\n",
" [ 7, 8],\n",
" [10, 11]])"
]
}
],
"prompt_number": 74
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"*Mini-question :* comment s\u00e9lectionner la 2\u00e8me ligne ?"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# s\u00e9lectionner la 2\u00e8me (-> index 1) ligne\n",
"a[1, :]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 63,
"text": [
"array([4, 5, 6])"
]
}
],
"prompt_number": 63
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Indexation logique** : pour s\u00e9lectioner des \u00e9l\u00e9ments *selon une condition*. Cela se fait en 2 \u00e9tapes :"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# \u00c9tape 1 : cr\u00e9\u00e9 le tableau bool\u00e9en qui va s\u00e9lectionner les \u00e9l\u00e9ments\n",
"a5 = a > 5\n",
"a5"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 66,
"text": [
"array([[False, False, False],\n",
" [False, False, True],\n",
" [ True, True, True],\n",
" [ True, True, True]], dtype=bool)"
]
}
],
"prompt_number": 66
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# \u00c9tape 2 : utiliser le tableau bool\u00e9en pour indexer :\n",
"a[a5]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 67,
"text": [
"array([ 6, 7, 8, 9, 10, 11, 12])"
]
}
],
"prompt_number": 67
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# \u00c9criture compacte (1 et 2 en une fois)\n",
"a[a>5]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 87,
"text": [
"array([ 6, 7, 8, 9, 10, 11, 12])"
]
}
],
"prompt_number": 87
},
{
"cell_type": "heading",
"level": 4,
"metadata": {},
"source": [
"Typage de tableaux (\"dtype\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Les tableaux NumPy contiennent des types de donn\u00e9es homog\u00e8nes. L'attribut `.dtype` permet de conna\u00eetre ce type."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"print(np.array([1, 2, 3]).dtype) # tableau d'entier\n",
"print(np.array([1., 2., 3.]).dtype) # tableau de flottants"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"int64\n",
"float64\n"
]
}
],
"prompt_number": 28
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Les fonctions de cr\u00e9ation de tableau ont \u00e9galement un argument `dtype` permettant d'indiquer le type souhait\u00e9"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"a = np.array([1, 2, 3])\n",
"# le tableau cr\u00e9\u00e9 prend par d\u00e9faut le type des donnn\u00e9es d'entr\u00e9e : ici `int`\n",
"a/2"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 46,
"text": [
"array([0, 1, 1])"
]
}
],
"prompt_number": 46
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"a = np.array([1, 2, 3], dtype=float)\n",
"a/2"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 28,
"text": [
"array([ 0.5, 1. , 1.5])"
]
}
],
"prompt_number": 28
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": [
"B3) Fonctions d'alg\u00e8bre lin\u00e9aire avec NumPy"
]
},
{
"cell_type": "heading",
"level": 4,
"metadata": {},
"source": [
"Produit matriciel : attention !"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Par d\u00e9faut, le produit (`*`) de 2 tableaux numpy se fait *terme \u00e0 terme*. Pour le produit matriciel, il y a `np.dot`"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Fabrication d'une matrice diagonale \u00e0 partir d'une liste des \u00e9l\u00e9ments diagonaux\n",
"A = np.diag([1,2])\n",
"B = np.ones((2,2))*3\n",
"print(A)\n",
"print(B)\n",
"A * B"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"[[1 0]\n",
" [0 2]]\n",
"[[ 3. 3.]\n",
" [ 3. 3.]]\n"
]
},
{
"output_type": "pyout",
"prompt_number": 147,
"text": [
"array([[ 3., 0.],\n",
" [ 0., 6.]])"
]
}
],
"prompt_number": 147
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"np.dot(A,B)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 148,
"text": [
"array([[ 3., 3.],\n",
" [ 6., 6.]])"
]
}
],
"prompt_number": 148
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Remarque : dans la m\u00eame lign\u00e9e, on trouve le produit scalaire (i.e. produit interne `np.inner`) et le produit externe (`np.outer`)"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"np.inner?"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 150
},
{
"cell_type": "heading",
"level": 4,
"metadata": {},
"source": [
"Alg\u00e8bre lin\u00e9aire"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Les fontions dites *d'alg\u00e8bre lin\u00e9aire* sont regroup\u00e9s dans le sous-module `numpy.linalg`. On y trouve :\n",
"\n",
"* calcul de d\u00e9terminant\n",
"* inversion de matrice\n",
"* calcul de valeurs propres\n",
"* ...\n",
"\n",
"Documentation : http://docs.scipy.org/doc/numpy/reference/routines.linalg.html\n",
"\n",
"Certaines de ces fonctions seront mises en oeuvres lors de la S\u00e9ance 3. On illustre ici simplement le calcul num\u00e9rique d'un d\u00e9terminant"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Fabrication d'une matrice diagonale \u00e0 partir d'une liste des \u00e9l\u00e9ments diagonaux\n",
"a = np.diag([1,2,3])\n",
"a"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 143,
"text": [
"array([[1, 0, 0],\n",
" [0, 2, 0],\n",
" [0, 0, 3]])"
]
}
],
"prompt_number": 143
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"np.linalg.det(a) # det(a) vaut 1*2*3"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 142,
"text": [
"6.0"
]
}
],
"prompt_number": 142
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": [
"B4) Lecture/\u00e9criture de fichier de donn\u00e9es"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Pour les fichiers texte du type CSV (nombres s\u00e9par\u00e9s par des virgules, ou autres), NumPy fournit des fonctions de lecture.\n",
"\n",
"La fonction `np.loadtxt`, assez flexible, permet de lire des fichiers avec diff\u00e9rents formats. Cependant, cette flexibilit\u00e9 aboutit \u00e0 une *signature* assez charg\u00e9e"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Consultons l'aide:\n",
"np.loadtxt?"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 136
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Lecture du fichier:\n",
"conso = np.loadtxt('./S2_Objets_et_NumPy/RTE_conso_2010-08_2011-07.csv',\n",
" delimiter=',', # les champs sont s\u00e9par\u00e9s par des virgules\n",
" skiprows=4, # ne pas lire les 4 premi\u00e8res lignes (du blabla)\n",
" usecols=[1]) # ne lire que la colonne *2* (comptage \u00e0 partir de 0 !)\n",
"\n",
"N = conso.shape[0]\n",
"print(u'{} pts charg\u00e9s, soit {:.1f} jours'.format(N, N/24./4))"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"35040 pts charg\u00e9s, soit 365.0 jours\n"
]
}
],
"prompt_number": 29
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Conversion MW -> GW\n",
"conso = conso/1000."
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 30
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"On peut faire quelques statistiques simples :\n",
"\n",
"(en utilisant les m\u00e9thodes de l'objet `ndarray`)"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"print(conso.min())\n",
"print(conso.max())\n",
"print(conso.mean())\n",
"print(conso.std())"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"30.993\n",
"96.35\n",
"56.1964912386\n",
"13.0847858651\n"
]
}
],
"prompt_number": 31
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"*Petite question :* comment compter le nombre de jours pass\u00e9s au-dessus de 80 GW ?"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# M\u00e9thode 1 : boucle for (tr\u00e8s d\u00e9conseill\u00e9e pour les grands tableaux)\n",
"\n",
"N80 = 0\n",
"for c in conso:\n",
" if c >= 80:\n",
" # on incr\u00e9mente le compteur\n",
" N80 += 1\n",
"N80"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 78,
"text": [
"1841"
]
}
],
"prompt_number": 78
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Solutions avec une *op\u00e9ration vectorielle de comparaison*"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"conso_80 = conso >= 80 # (GW)\n",
"conso_80"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 86,
"text": [
"array([False, False, False, ..., False, False, False], dtype=bool)"
]
}
],
"prompt_number": 86
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# M\u00e9thode 2 : indexaction logique pour ne s\u00e9lectionner que les \u00e9l\u00e9ments v\u00e9rifiant conso >= 80\n",
"len(conso[conso_80])"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 85,
"text": [
"1841"
]
}
],
"prompt_number": 85
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# M\u00e9thode 3 : jouer avec le transtypage implicite (bool -> int)\n",
"# On calcule la \"somme\"\n",
"conso_80.sum()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 83,
"text": [
"1841"
]
}
],
"prompt_number": 83
},
{
"cell_type": "heading",
"level": 4,
"metadata": {},
"source": [
"\u00c9criture de donn\u00e9es CSV"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Le pendant pour l'\u00e9criture de `np.loadtxt` est `np.savetxt`. On se r\u00e9ferera \u00e0 la documentation."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"np.savetxt?"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 33
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---"
]
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"C) Trac\u00e9 de graphiques avec Matplotlib"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"La biblioth\u00e8que Matplotlib ( http://matplotlib.org ) permet de r\u00e9aliser une grande palette de graphiques 2D (et m\u00eame un peu 3D) avec une syntaxe fortement calqu\u00e9e sur celle de Matlab.\n",
"\n",
"* trac\u00e9s temporels y = f(t)\n",
"* nuages de points (x,y)\n",
"* histogrammes\n",
"* images\n",
"* ...\n",
"\n",
"La gallerie ( http://matplotlib.org/gallery.html ) est une bonne fa\u00e7on d'avoir un aper\u00e7u des possibilit\u00e9s de Matplotlib.\n",
"\n",
"*Source de documentation :*\n",
"\n",
"* Documentation officielle http://matplotlib.org/contents.html (en anglais)\n",
"* Tutoriel de Nicolas Rougier (INRIA) http://webloria.loria.fr/~rougier/teaching/matplotlib/ (en anglais)"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Importer l'API de Matplotlib:\n",
"import matplotlib.pyplot as plt\n",
"# Remarques :\n",
"# * cet import a d\u00e9j\u00e0 \u00e9t\u00e9 r\u00e9alis\u00e9 en mode \"Pylab\"\n",
"# * il est par contre n\u00e9cessaire dans un script\n",
"\n",
"# Pour un travail interactif, on s'autorisera aussi\n",
"from matplotlib.pyplot import *"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 47
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": [
"C1) Aper\u00e7us de Matplotlib"
]
},
{
"cell_type": "heading",
"level": 4,
"metadata": {},
"source": [
"Un exemple de graphique minimal"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Cr\u00e9ation des \"donn\u00e9es\" : un sinus\n",
"x = np.linspace(0, 4*np.pi)\n",
"y = np.sin(x)\n",
"\n",
"# Trac\u00e9\n",
"plt.plot(x,y) # ligne (bleue par d\u00e9faut)\n",
"plt.plot(x,y, 'r+') # marqueurs \"+\" rouges\n",
"\n",
"# Annotations:\n",
"plt.title('Un sinus')\n",
"plt.xlabel('temps t')\n",
"plt.grid(True);"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"png": "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\n"
}
],
"prompt_number": 48
},
{
"cell_type": "heading",
"level": 4,
"metadata": {},
"source": [
"Exemple pour le d\u00e9placement et le zoom interactif: Consommation d'\u00e9lectricit\u00e9"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Lorsque qu'on travaille avec un grand nombre de points (ex : grande s\u00e9rie temporelle), l'exploration *interactive* des donn\u00e9es est particuli\u00e8rement utile.\n",
"\n",
"Remarque : pour manipuler des grandes s\u00e9ries de donn\u00e9es, il existe le puissant module `pandas` (Python Data Analysis Library http://pandas.pydata.org/) qui ne sera pas abord\u00e9 ici."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Vecteur temps en jours:\n",
"t = np.arange(N)/24./4 # attention au '24.'\n",
"t[:10]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 51,
"text": [
"array([ 0. , 0.01041667, 0.02083333, 0.03125 , 0.04166667,\n",
" 0.05208333, 0.0625 , 0.07291667, 0.08333333, 0.09375 ])"
]
}
],
"prompt_number": 51
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# %pylab qt # afficher la figure dans une fen\u00eatre interactive: n\u00e9cessite IPython 1.0 (pr\u00e9vu pour juillet 2014)\n",
"plt.plot(t, conso)\n",
"\n",
"plt.xlabel('temps (j)')\n",
"plt.ylabel(u'Puissance consomm\u00e9e (GW)');"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"png": "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\n"
}
],
"prompt_number": 52
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Pour se d\u00e9placer et zoomer interactivement, utiliser la barre d'outils Matplotlib ou bien les raccourcis clavier ('p' et 'o').\n",
"\n",
"(ic\u00f4nes \n",
" et\n",
" ) \n",
"\n",
"* Les clic-gauche et clic-droit ont une action diff\u00e9rente !\n",
"* Les touches 'x' et 'y' modifient \u00e9galement le comportement (d\u00e9placement/zoom horizontal ou vertical)\n"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Zoom \"programm\u00e9\"\n",
"plt.plot(t, conso);\n",
"plt.title('Zoom sur 2 semaines consommation')\n",
"plt.xlabel('temps (j)')\n",
"\n",
"plt.xlim(99, 113);\n",
"# il existe aussi plt.ylim"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 53,
"text": [
"(99, 113)"
]
},
{
"output_type": "display_data",
"png": "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\nAElFTkSuQmCC\n"
}
],
"prompt_number": 53
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Petite question : sur ce graphique de 14 jours, quels jours correspondent aux *weekends* ?"
]
},
{
"cell_type": "heading",
"level": 4,
"metadata": {},
"source": [
"Un histogramme"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"plt.hist(conso, bins=50, normed=False)\n",
"# (mettre normed=True pour tracer une densit\u00e9 de probabilit\u00e9)\n",
"plt.xlabel(u'Puissance consomm\u00e9e (GW)');"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"png": "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\nMDYCREQe7P8DBkKcJJzxQUsAAAAASUVORK5CYII=\n"
}
],
"prompt_number": 117
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": [
"C2) Exemple Num\u00e9rique & Graphique plus complet : un diagramme de Bode"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"L'enjeu de cette partie :\n",
"\n",
"\n",
"* *charger des donn\u00e9es* \"exp\u00e9rimentales\" issue du relev\u00e9 d'un diagramme de Bode\n",
"* *tracer* un beau diagramme de Bode (gain et phase)\n",
"* *mod\u00e9liser* une r\u00e9ponse fr\u00e9quentielle par une fonction de transfert (du 2\u00e8me ordre)."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Chargement de donn\u00e9es (pseudo relev\u00e9 exp\u00e9rimental d'un diagramme de Bode)\n",
"data = np.loadtxt('./S2_Objets_et_NumPy/bode_data.csv', delimiter=',')\n",
"data.shape # nombre de lignes, nombre de colonnes"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 89,
"text": [
"(100, 3)"
]
}
],
"prompt_number": 89
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Le fichier bode_data.csv contient 3 colonnes:\n",
"\n",
"* fr\u00e9quence (Hz)\n",
"* gain (dB)\n",
"* phase (\u00b0)\n",
"\n",
"**Question de slicing** : comment s\u00e9parer ces 3 colonnes dans 3 variables diff\u00e9rentes ?"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# S\u00e9paration des donn\u00e9es\n",
"f = data[:,0]\n",
"gain = data[:,1]\n",
"phase = data[:,2]\n",
"\n",
"# ou en abr\u00e9g\u00e9 :\n",
"# f, gain, phase = data.T"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 90
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Affichage (trac\u00e9 en \u00e9chelle lin\u00e9aire):\n",
"plt.plot(f, gain);"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"png": "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\n"
}
],
"prompt_number": 91
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Avec une \u00e9chelle *lin\u00e9aire* en fr\u00e9quence, on ne reconnait pas grand chose...\n",
"\n",
"Une solution: le graphique *log/semilog* avec les fonctions `semilogx`, `semilogy` et `loglog`. (noms de fonction Matlab)"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Trac\u00e9 en \u00e9chelle semilog pour les abscisses (la fr\u00e9quence)\n",
"semilogx(f, gain)\n",
"# Annotations:\n",
"title('Diagramme de Bode')\n",
"xlabel(u'fr\u00e9quence (Hz)')\n",
"ylabel('gain (dB)');"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"png": "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\n"
}
],
"prompt_number": 92
},
{
"cell_type": "heading",
"level": 4,
"metadata": {},
"source": [
"Trac\u00e9 conjoint du gain et de la phase:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Pour ce graphique plus compliqu\u00e9, on utilise l'approche *Orient\u00e9 Objet* (\"OO\" API). (Accessoirement, cela dispense d'utiliser `plt.semilogx`)"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"fig = plt.figure('Bode', figsize=(6,6))\n",
"ax1 = fig.add_subplot(2,1,1, xscale='log',\n",
" title='Diagramme de Bode: gain (dB)')\n",
"ax1.plot(f, gain)\n",
"ax2 = fig.add_subplot(2,1,2, sharex=ax1, # sharex -> synchronise les \u00e9chelles. Pratique pour zoomer !\n",
" title=u'Phase (\u00b0)',\n",
" xlabel=u'fr\u00e9quence (Hz)')\n",
"ax2.plot(f, phase, 'g')\n",
"# ajustement des \"ticks\"\n",
"ax2.set_yticks([-180, -135, -90, -45, 0])\n",
"# ou de fa\u00e7on plus automatique :\n",
"# ax2.set_yticks(range(0,-181,-45)) # (de 0 \u00e0 -180\u00b0, tous les 45\u00b0)\n",
"\n",
"fig.tight_layout() # \"\u00e9tire\" les graphiques dans la fen\u00eatre"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAawAAAGvCAYAAAAHXOECAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl8TOf+wPHPZJEQkQWxJCQ0hFiC2pVqS21FS+1KS1ul\nutx7q0pp1VXc+6vbe7toS2tvbdXeWGpvKW6JfQtCJUSCIIvEFpLz++NphjQhmeTMzJnJ9/16zavm\nzPM853uS03lynu9znmPSNE1DCCGEMDgXewcghBBCFIZ0WEIIIRyCdFhCCCEcgnRYQgghHIJ0WEII\nIRyCdFhCCCEcgnRYwmIjR45kypQp9g7DcJ5//nkmTpxo7zDYsmUL1apVs3cYTJs2jZdeeqnI9dev\nX88zzzxz38/bt2/PN998U6i2Ll68SHh4OJmZmUWOR9ifdFgil5CQEMqUKUO5cuXw8/OjTZs2fPXV\nV9x7u94XX3zBhAkT7BilMZlMJkwmU5Hquri4ULZsWby9valYsSIDBw4kLS1N5whta9y4ccyePbvI\n9d99913GjRt338/v/XnPmzcPV1dXvL298fb25qGHHuLLL780l61UqRKPPfYYs2bNKnI8wv6kwxK5\nmEwmVq9ezdWrVzl79izvvPMO//jHPxg+fLjV933nzh2r78PainMf/qFDh0hPT+f06dOkpKQwadIk\n/QJzMLt37+bq1as0b9680HXatGlDeno66enprFixgrfffpsDBw6YPx80aBBfffWVNcIVNiIdlrgv\nb29vunfvztKlS5k/fz7R0dFA7qGvlJQUnnrqKQICAvD396d79+4kJCSY24iNjaVdu3aUK1eOjh07\n8uqrr/Lcc88BEBcXh4uLC3PmzCE4OJgOHToA0KdPH6pUqYKvry+PPvqoeb85+x41ahRdu3bF29ub\ntm3bcuHCBd544w38/PyoW7duri+pkJAQPvroIxo2bIi3tzfDhw/n4sWLdOnSBR8fHzp27Ehqaqq5\n/M6dO2ndujV+fn40atSIrVu33vfns3//fpo0aUK5cuXo378/N2/ezPX56tWradSokflK9fDhwxb9\n3O897sTERHr06EH58uWpVasWX3/9tfmzGzdu8Pzzz+Pv70+9evXYvXt3rvYSExPp3bs3AQEB1KxZ\nk08//bRQcQBcuXKF7t274+PjQ/PmzZkwYQJt27Y1f/7GG29QvXp1fHx8aNq0Kdu3bzd/NmnSpDy/\n6wULFhAcHEzFihWZOnXqffe7du1a2rdvn2vbxo0bqVOnDr6+vrz22mt5/ji4932jRo2oW7cux48f\nN29r3rw5p0+fJj4+vtDHL4xFOixRoGbNmhEUFMS2bduA3EMxmqYxfPhwzp49y9mzZyldujSjR482\n1x04cCAtW7YkOTmZSZMmsWjRojzDZr/++ivHjx9n/fr1AHTr1o1Tp05x6dIlmjRpwqBBg3KVX758\nOR9++CGXL1+mVKlStGzZkmbNmpGcnMyzzz7LX//6V3NZk8nEDz/8wObNmzlx4gSrV6+mS5cuTJ8+\nnaSkJLKzs/nkk08ASEhI4KmnnuK9994jJSWFjz76iN69e3P58uU8P5PMzEyefvpphg4dSkpKCn36\n9GHFihXmY9u/fz/Dhw9n9uzZJCcnM2LECHr06PHAHErOF25KSgr//e9/adWqlfmz/v37U716dc6f\nP8/333/P+PHj+eWXXwD44IMPiI2N5fTp06xfv5758+eb48jOzqZ79+40btyYxMRENm/ezL///W82\nbNgAwPbt2/Hz87tvTK+++ire3t5cvHiR+fPns2DBgly/v+bNm3Pw4EFSUlIYOHAgffr0MR9jfsOj\nO3bsICYmhs2bNzN58uRcHcq9jhw5QlhYmPn95cuX6d27N1OnTuXKlSs89NBD7Nix475xR0VFERMT\nQ9OmTc3b3NzcCA0NzfUHjXAwmhD3CAkJ0TZv3pxne8uWLbWpU6dqmqZpzz//vDZhwoR86+/fv1/z\n8/PTNE3Tzpw5o7m5uWk3btwwfz548GBt8ODBmqZpWmxsrGYymbTY2Nj7xpOSkqKZTCbt6tWr5n2/\n/PLL5s8//fRTLTw83Pz+0KFDmq+vb67j+e6778zve/furY0aNSpX/aefflrTNE2bPn269txzz+Xa\nf6dOnbT58+fniWvr1q1a1apVc21r3bq1NnHiRE3TNO2VV14x/ztHWFiYtnXr1nyP02QyaeXKldN8\nfX01V1dXrW7dulpCQoKmaZp29uxZzdXVVcvIyDCXHzdunPb8889rmqZpNWvW1NavX2/+bNasWVpQ\nUJCmaZq2c+dOrXr16rn2NXXqVO2FF17IN4573blzR3N3d9diYmLM2yZMmKA98sgj963j5+enHTp0\nSNM0TXv//ffz/K5zjknTNK158+bakiVL8m2nY8eO2ldffWV+P3/+fK1Vq1a5ygQFBWnffPONpmma\n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\n"
}
],
"prompt_number": 133
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"On reconnait la fonction de tranfert d'un passe-bas du 2\u00e8me ordre\n",
"\n",
"$$ H(f) = \\frac{H_0}{1 + j \\frac{f}{Q f_0} - \\frac{f^2}{f_0^2}} $$ \n",
"\n",
"Les param\u00e8tres \u00e0 identifier sont :\n",
"\n",
"* le gain statique $H_0$\n",
"* la fr\u00e9quence canonique $f_0$\n",
"* le facteur de qualit\u00e9 $Q$"
]
},
{
"cell_type": "heading",
"level": 4,
"metadata": {},
"source": [
"Identification des param\u00e8tres (exercice)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Cherchons le gain basse fr\u00e9quence $H_0$ dans les 5 premieres valeurs de gain :"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Observation du gain \u00e0 basse fr\u00e9quence:\n",
"print(f[:5])\n",
"print(gain[:5])\n",
"gain[:5].mean()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"[ 100. 104.7616 109.7499 114.9757 120.4504]\n",
"[ 6.155659 6.001112 5.810821 6.184953 6.278457]\n"
]
},
{
"output_type": "pyout",
"prompt_number": 94,
"text": [
"6.0862004000000001"
]
}
],
"prompt_number": 94
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# dB -> lin\u00e9aire\n",
"H0_dB = 6 # dB\n",
"print(10**(H0_dB/20.)) # Attention au point de \"20.\"\n",
"H0 = 2"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"1.99526231497\n"
]
}
],
"prompt_number": 95
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Cherchons la fr\u00e9quence canonique avec le maximum du gain"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"gain.max()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 96,
"text": [
"14.366379999999999"
]
}
],
"prompt_number": 96
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Fr\u00e9quence canonique: c'est environ la fr\u00e9quence de r\u00e9sonance\n",
"i_max = gain.argmax()\n",
"f[i_max]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 97,
"text": [
"977.00999999999999"
]
}
],
"prompt_number": 97
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"f0 = 1e3 "
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 98
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Pour le facteur de qualit\u00e9, on utilise la m\u00e9thode devinette (cf. S\u00e9ance 4 pour une identification par minimisation de l'erreur)"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Facteur de qualit\u00e9 : devinette\n",
"Q = 10"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 99
},
{
"cell_type": "heading",
"level": 4,
"metadata": {},
"source": [
"Calcul de la fonction de transfert du passe-bas"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# On construit une fonction de transfert\n",
"\n",
"# Dans cet exemple, on a d\u00e9j\u00e0 un vecteur de fr\u00e9quence. \u00c0 d\u00e9faut, on pourrait utiliser :\n",
"# f = np.logspace(2, 4, 100)# de 100 \u00e0 10 kHz\n",
"\n",
"# Tranfert du 2\u00e8 ordre:\n",
"H_fit = H0/(1 + 2j*f/(f0*Q) - (f/f0)**2)\n",
"H_fit[:5] # (tableau de nombres complexes)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 104,
"text": [
"array([ 2.01937787-0.04079551j, 2.02128641-0.0428206j ,\n",
" 2.02338500-0.04495474j, 2.02569298-0.04720512j,\n",
" 2.02823182-0.04957958j])"
]
}
],
"prompt_number": 104
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Calcul du gain et de la phase\n",
"Habs = np.abs(H_fit) # `abs` donne le module du nombre complexe\n",
"\n",
"gain_fit = 20*np.log10(Habs) # -> dB\n",
"gain_fit[:5]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 108,
"text": [
"array([ 6.10612393, 6.1145058 , 6.12371376, 6.13383021, 6.14494616])"
]
}
],
"prompt_number": 108
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"phase_fit = np.angle(H_fit) * 180 / np.pi\n",
"phase_fit[:5]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 109,
"text": [
"array([-1.15733307, -1.21361943, -1.27276485, -1.33493309, -1.40030107])"
]
}
],
"prompt_number": 109
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Comparaison donn\u00e9es/mod\u00e8les (et l\u00e9gende d'un graphique)"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Par d\u00e9faut, les graphiques se superposent:\n",
"semilogx(f, gain, '-+', label=u'donn\u00e9es')\n",
"semilogx(f, gain_fit, label=u'mod\u00e8le')\n",
"legend(loc='lower left');\n",
"\n",
"# Fabrication de la cha\u00eene de caract\u00e8re de titre:\n",
"title_str = u'Mod\u00e9lisation du 2\u00e8 ordre: H0={:.1f}, f0={:.1f} kHz, Q={:.1f}'.format(H0, f0/1000, Q)\n",
"# La syntaxe du \"string formatting\" : http://docs.python.org/2/library/string.html#formatstrings\n",
"title(title_str);"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"png": "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\n"
}
],
"prompt_number": 107
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Apparemment on a \u00e9t\u00e9 un peu optimiste pour le facteur de qualit\u00e9. $Q=5$ sera sans doute plus appropri\u00e9...\n",
"(cf. script Bode_data_generator.py qui a fabriqu\u00e9 les donn\u00e9es)\n",
"\n",
"La S\u00e9ance 4 abordera l'identification des param\u00e8tres $H_0, Q, f_0$ par minimisation de l'erreur de gain et de phase."
]
},
{
"cell_type": "heading",
"level": 4,
"metadata": {},
"source": [
"Trac\u00e9s bonus"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* comment tracer un diagramme de Black ? (phase, gain dB) \n",
"* comment tracer un diagramme de Nyquist ? (Re, Im)"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Black :\n",
"plot(phase, gain)\n",
"plot(phase_fit, gain_fit)\n",
"plot(-180,0, 'r*', markersize=15) # point critique\n",
"\n",
"# ajustement des \"ticks\"\n",
"xticks([-180, -135, -90, -45, 0])\n",
"\n",
"xlabel(u'phase (\u00b0)')\n",
"ylabel('Gain (dB)');"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"png": "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\n"
}
],
"prompt_number": 139
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Diagramme de Nyquist\n",
"\n",
"# \u00c9tape 1 : on reconstruit la r\u00e9ponse fr\u00e9quentielle complexe\n",
"gain_lin = 10**(gain/20.) # dB -> lin\n",
"H = gain_lin*np.exp(1j*phase/180*np.pi)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 134
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# \u00c9tape 2 : trac\u00e9 (utilisant les attributs .real et .image des tableaux de nombres complexes)\n",
"plot(H.real, H.imag)\n",
"plot(H_fit.real, H_fit.imag)\n",
"plot(-1,0, 'r*', markersize=10) # point critique\n",
"\n",
"ax = gca()\n",
"ax.set_aspect('equal') # M\u00eame \u00e9chelle en x et y\n",
"ylim(-11,1);"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"png": "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\n"
}
],
"prompt_number": 137
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---\n",
"\n",
"*Fin de la session 2*\n",
"\n",
"\n",
" \n",
"\n",
"\n",
"Ce support de formation cr\u00e9\u00e9 par\n",
"Pierre Haessig\n",
"est mis \u00e0 disposition selon les termes de la\n",
"licence Creative Commons Attribution 3.0 France."
]
}
],
"metadata": {}
}
]
}