Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s...

62
13/03/2019 M62-CM1 http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 1/62 In [1]: In [2]: M62_CM1 Introduction aux Notebooks IPython et rappels sur le langage Python. Table of Contents 1 Notebook Jupyter 1.1 Installation simple 1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition : les cellules Markdown et sa syntaxe 1.4.1 La syntaxe 1.4.2 Les titres 1.4.3 Les paragraphes 1.4.4 L’emphase 1.4.5 Les citations 1.4.6 Les listes non ordonnée 1.4.7 Les listes ordonnées 1.4.8 Le bloc de code 1.4.9 Les filets ou barres de séparation 1.4.10 Les liens 1.4.11 Les images 1.4.12 Les tableaux 1.4.13 Échappement des caractères 1.5 Mode édition: les équations 1.5.1 Les modes mathématiques 1.5.2 Indices et exposantes 1.5.3 Symboles d'usage courant 1.5.4 Racine carrée, racine n-ième 1.5.5 Fractions et coefficients binomiaux Python version 3.6.2 |Anaconda custom (64-bit)| (default, Jul 20 2017, 13:51:32) [GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] Matplotlib version 2.1.0 from IPython.core.display import display, HTML display(HTML("<style>.container { width:90% !important; }</style>")) import sys #only needed to determine Python version number import matplotlib #only needed to determine Matplotlib version number print('Python version ' + sys.version) print('Matplotlib version ' + matplotlib.__version__ ) %reset -f

Transcript of Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s...

Page 1: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 1/62

In [1]:

In [2]:

M62_CM1 Introduction aux NotebooksIPython et rappels sur le langage Python.

Table of Contents 1 Notebook Jupyter

1.1 Installation simple1.2 Références1.3 Manipulation du notebook

1.4 Mode édition : les cellules Markdown et sa syntaxe1.4.1 La syntaxe1.4.2 Les titres1.4.3 Les paragraphes1.4.4 L’emphase1.4.5 Les citations1.4.6 Les listes non ordonnée1.4.7 Les listes ordonnées1.4.8 Le bloc de code1.4.9 Les filets ou barres de séparation1.4.10 Les liens1.4.11 Les images1.4.12 Les tableaux1.4.13 Échappement des caractères

1.5 Mode édition: les équations1.5.1 Les modes mathématiques1.5.2 Indices et exposantes1.5.3 Symboles d'usage courant1.5.4 Racine carrée, racine n-ième1.5.5 Fractions et coefficients binomiaux

Python version 3.6.2 |Anaconda custom (64-bit)| (default, Jul

20 2017, 13:51:32)

[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)]

Matplotlib version 2.1.0

from IPython.core.display import display, HTML

display(HTML("<style>.container { width:90% !important; }</style>"))

import sys #only needed to determine Python version number

import matplotlib #only needed to determine Matplotlib version number

print('Python version ' + sys.version)

print('Matplotlib version ' + matplotlib.__version__ )

%reset -f

Page 2: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 2/62

1.5.6 Lettres grecques1.5.7 Texte dans une formule displaystyle1.5.8 Fonctions mathématiques1.5.9 Grands opérateurs: intégrales, sommes, produits, etc.1.5.10 Accents mathématiques1.5.11 Délimiteurs1.5.12 Alphabets mathématiques1.5.13 Tableaux mathématiques1.5.14 Distinction de cas1.5.15 Matrices1.5.16 Alignement de formules1.5.17 Flèches extensibles1.5.18 Modules de congruences1.5.19 Placer au-dessus ou en-dessous

1.6 Mode édition : les celulles Code1.6.1 Les exceptions1.6.2 Entrée et sortie standard1.6.3 L'aide en ligne IPython1.6.4 Les commandes systèmes

1.6.5 Les commandes magiques de IPython1.6.5.1 %matplotlib inline & %matplotlib notebook1.6.5.2 %pylab inline1.6.5.3 %autosave 3001.6.5.4 %who , %whos et %reset

1.6.6 Exporter un notebook 2 Notions de base de Python

2.1 Indentation2.2 Commentaires2.3 Variables et affectation2.4 Chaîne de caractères (Strings)2.5 Listes2.6 Matrices (sans NumPy )2.7 Dictionnaires2.8 Fonction range2.9 Fonction print2.10 Opérations arithmétiques2.11 Opérateurs de comparaison et connecteurs logiques

3 Fonctions3.1 def3.2 Fonctions Lambda (fonctions anonimes)3.3 List-comprehensions

4 Structure conditionnelle 5 Boucles

5.1 Boucle while : répétition conditionnelle5.2 Répétition for5.3 Interrompre une boucle: break et continue

6 Modules6.1 Le module math6.2 Le module random

7 Dessiner des courbes avec le module matplotlib 7.1 1D

Page 3: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 3/62

7.1.1 Plusieurs courbes sur le même repère7.1.2 Plusieurs "fenêtres" graphiques7.1.3 Plusieurs repères dans la même fenêtre7.1.4 Animations

7.2 2D7.3 Représentations des erreurs: échelles logarithmique et semi-logarithmique

Jupyter est une application Web qui regroupe intimement deux fonctionnalités très différentes :

Un outil qui permet de créer des documents multimédia intégrant du texte, des formulesmathématiques, des graphiques, des images, voire des animations et des vidéos.Une interface qui permet d'exécuter du code informatique. Pour cela Jupyter s'appuie sur desprogrammes indépendants capablent d'interpréter le langage dans lequel est écrit ce code.Dans la terminologie de Jupyter ces interpréteurs sont appelés des noyaux (kernel en anglais).Nous utiliserons le noyau pour le langage Python 3.

Les documents Jupyter sont appelés des notebooks. Un fichier notebook est reconnaissable parson extension . Le document que vous lisez actuellement est un notebook.

Pour commencer, dans un terminal, lancer la commande jupyter notebook & (ou anaconda-navigator & ). Cela ouvrira automatiquement un navigateur dans lequel on peut

alors commencer à travailler. L'onglet principal représente l’arborescence des fichiers.

1 Notebook Jupyter

.

La façon la plus simple d’installer Python et Jupyter est d’installer Anaconda. Les procéduresd’installations détaillées selon chaque système d’exploitation sont décrites à l’adresse :https://docs.anaconda.com/anaconda/install/ (https://docs.anaconda.com/anaconda/install/). Lesprocédures suivantes sont un résumé rapide de la procédure d’installation.

Installation sous Windows.1. Télécharger Anaconda 5.2 (ou plus récent) pour Python 3.6 (ou plus récent) à l’adresse :

https://www.anaconda.com/download/#windows(https://www.anaconda.com/download/#windows) ;

2. Double cliquer sur le fichier téléchargé pour lancer l’installation d’Anaconda, puis suivre laprocédure d’installation (il n’est pas nécessaire d’installer VS Code).

3. Une fois l’installation terminée, lancer Anaconda Navigator à partir du menu démarrer.

Installation sous macOS.1. Télécharger Anaconda 5.2 (ou plus récent) pour Python 3.6 (ou plus récent) à l’adresse :

https://www.anaconda.com/download/#macos(https://www.anaconda.com/download/#macos) ;

2. Double cliquer sur le fichier téléchargé pour lancer l’installation d’Anaconda, puis suivre laprocédure d’installation (il n’est pas nécessaire d’installer VS Code).

3. Une fois l’installation terminée, lancer Anaconda Navigator à partir de la liste desapplications.

Installation sous Linux.

1.1 Installation simple

Page 4: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 4/62

1. Télécharger Anaconda 5.2 (ou plus récent) pour Python 3.6 (ou plus récent) à l’adresse :https://www.anaconda.com/download/#linux (https://www.anaconda.com/download/#linux) ;

2. Exécuter le fichier téléchargé avec bash puis suivre la procédure d’installation (il n’est pasnécessaire d’installer VS Code).

3. Une fois l’installation terminée, taper anaconda-navigator dans un nouveau terminal pourlancer Anaconda Navigator.

https://jupyter-notebook.readthedocs.io/en/stable/examples/Notebook/examples_index.html(https://jupyter-notebook.readthedocs.io/en/stable/examples/Notebook/examples_index.html)Ce qu'on peut écrire en Markdown et en dans les notebooks Jupyter (jupyter.org) et cequ'on peut faire dans les cellules de code dans cette série de tutoriels(https://www.youtube.com/playlist?list=PLRJx8WOUx5XcDMOxSQegCJUjTJePTlF9Z)

1.2 Références

LT XAE

Le notebook est constitué d'une succession de cellules comportant

soit du texte en Markdown comme ici,soit du code comme dans la cellule suivante (Python pour nous):

1.3 Manipulation du notebook

In [3]:

Un liseré repère la cellule actuellement selectionnée. Les cellules peuvent être dans le mode commande ou le mode édition:

mode commande : permet de se déplacer d'une cellule à l'autre et d'exécuter les cellulesmode édition : permet de modifier le contenu d'une cellule.

1. Mode commande Pour entrer dans le mode commande de la cellule sélectionnée, il suffit de presser la touche [Esc] . Quand vous êtes dans le mode commande, vous pouvez ajouter ou supprimer des

cellules mais vous ne pouvez pas saisir de texte dans une cellule. Voici les raccourcis principaux disponibles en mode commande :

A et B : Insèrent une nouvelle cellule, respectivement au-dessus ou au-dessous de lacellule sélectionnée.M : Transforme la cellule en une cellule de type Markdown.Y : Transforme la cellule en une cellule de type Code.C et V : Copie et colle des cellules.DD : Supprime la cellule sélectionnée.Z : Annule la dernière suppression de cellule.II : Interrompt l'exécution du code.00 : Redémarre l'interpréteur. Il se retrouve alors dans son état initial.H : Affiche la liste de tous les raccourcis clavier.

x=range(3)

Page 5: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 5/62

2. Mode édition Pour entrer dans le mode édition de la cellule sélectionnée, il suffit de presser la touche [Enter] ou de double-cliquer à l'intérieur de la cellule. Quand une cellule est en édition vous

pouvez saisir du texte comme dans un éditeur classique. Lorsque le curseur est en début de ligne ou lorsque vous avez sélectionné du texte, l'appui surla touche [Tab] (respectivement [Shift-TAB] ) indente (respectivement désindente) leslignes correspondantes. Voici d'autres raccourcis clavier :

[Ctrl-A] : Sélectionne tout le texte de la cellule.[Ctrl-Z] : Annule les dernières saisies de texte.[Ctrl-Enter] : Exécute la cellule.[Shift-Enter] : Exécute la cellule et sélectionne la cellule suivante. L'appui répété de

cette touche permet ainsi d'exécuter pas à pas toutes les cellules du notebook.[Alt-Enter] : Exécute la cellule et insére une nouvelle cellule juste en dessous.[ESC] : Passe dans le mode commande

La touche M transforme la cellule sélectionnée en type Markdown. Vous pouvez alors rédiger dutexte enrichi (titres, sous-titres, gras, italique, alinéas, tableaux, liens hypertexte, etc). Le texte de la cellule doit être rédigé en langage Markdown qui est un langage de balisage léger. Lasyntaxe markdown est facile à apprendre (le plus simple est d'ailleurs de regarder des exemples dedocuments). Voici quelque liens :

Markdown Cheatsheet (https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet)Markdown for Jupyter notebooks cheatsheet (https://medium.com/ibm-data-science-experience/markdown-for-jupyter-notebooks-cheatsheet-386c05aeebed)

Il est également possible d'insérer des morceaux de texte en langage pour composer desexpressions mathématiques.

1.4 Mode édition : les cellules Markdown et sa syntaxe

LT XAE

Markdown est un système d’édition et de formatage de texte. La philosophie du système veut que letexte écrit soit lisible sans interpréteur particulier en mode texte. Il est léger et épuré de l’essentielde la verbosité d’un language balisé. Les éléments de syntaxe sont des caractères de ponctuation qui font sens visuellement même nonconvertis. Une fois converti, le navigateur web (qui joue alors le rôle d’interpréteur) en rendra lalecture plus claire.

Vous pouvez tout à fait introduire directement des balises HTML dans votre texte. Attention, leformatage markdown ne sera pas appliqué à l’intérieur de ces balises.

1.4.1 La syntaxe

Il est possible de titrer en ajoutant des dièses ( # ) au début de la ligne. Il n’y a pas de limite aunombre de niveaux de titres qu’il est possible d’utiliser (mais n’allez pas au delà de 4).

1.4.2 Les titres

Page 6: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 6/62

# Title 1

## Title 2

### Title 3

#### Title 4

##### Title 5

Pour afficher un paragraphe, laisser une ligne vide.

Effectuer un saut de ligne simple dans votre texte markdown n’aura aucun effet. Sauf si vousterminez votre ligne par un double espace (ou plus que ça)... comme ici.

1.4.3 Les paragraphes

Pour formater une partie de votre texte comme emphase, entourez le par des astérisques * oudes underscores _ . Entourer par un signe unique passe en italique et par un double signe engras. Il est possible de combiner les deux. Un double tildes ~~ vous permettent de barrer le texte.

1.4.4 L’emphase

Pour afficher un bloc de citation, commencez le paragraphe par un chevron fermant > . Si votre bloc contient plusieurs lignes, vous pouvez faire des sauts de lignes à

la main et toutes les ouvrir par un chevron fermant, mais ce n’est pas nécessaire.Ces bloc peuvent contenir d’autres éléments markdown comme des titres ou deslistes.

1.4.5 Les citations

Pour afficher une liste, commencez la ligne par une astérisque * , un moins - ou un plus + . Làencore, le choix n’a pas d’importance, mais il faut rester cohérent dans votre document.

+ item

+ item

+ item

donne

itemitemitem

1.4.6 Les listes non ordonnée

Pour afficher une liste ordonnée, commencez la ligne par un nombre suivit d’un point.

1.4.7 Les listes ordonnées

Page 7: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 7/62

1. item

123. item

17. item

donne

1. item2. item3. item

Pour afficher un bloc de code, sautez deux lignes comme pour un paragraphe, puis indentez avec 4espaces ou une tabulation. Pour afficher du code dans une ligne, il faut l’entourer par des guillemets simples (`).

1.4.8 Le bloc de code

Pour afficher un filet de séparation, entrez dans votre texte au moins 3 astérisques * ou 3 moins - sur une ligne entourée de sauts de lignes. Il est possible de les séparer par des espaces.

1.4.9 Les filets ou barres de séparation

Il y a deux façons d’afficher un lien.

1. De manière automatique en encadrant un lien par des chevrons, par exemple <http://www.google.com> donne http://www.google.com (http://www.google.com). Il est

alors cliquable et affiche l’url indiquée entre chevrons.2. Ou en ajoutant des paramètres. Le texte à afficher est alors indiqué entre crochets suivit de

l’adresse du lien entre parenthèses, par exemple [google](http://www.google.com "link to google") donne google (http://www.google.com). Dans les parenthèses, à lasuite du lien, on peut indiquer un titre entre guillemets. Ce titre sera affiché lors du survol dulien dans le navigateur. Il sera également lu par les navigateurs textuels pour les déficientsvisuels.

1.4.10 Les liens

Pour afficher une image, commencez par un point d’exclamation. Puis indiquez le texte alternatifentre crochets. Ce dernier sera affiché si l’image n’est pas chargé et lue par les moteurs derecherche. Terminez par l’URL de l’image entre parenthèses. Cette URL peut être un lien vers leweb ou un chemin local de ce type : /dossier_images/nom_de_mon_image.jpg . Après lelien vers l’image, il est possible d’ajouter un titre lu par les navigateurs textuels et affiché au survolde l’image par les autres. ![Jupyter logo]

(https://upload.wikimedia.org/wikipedia/commons/3/38/Jupyter_logo.svg) donne

1.4.11 Les images

Page 8: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 8/62

Si l'image doit être redimensionnée, utiliser directement du : ![Google logo](https://www.google.fr/images/srpr/logo11w.png "google

logo") donne

<img src = "https://www.google.fr/images/srpr/logo11w.png" title =

"google logo" alt = "Google logo" width="200"> donne

L’idée globale est de “dessiner” des colonnes en les entourant avec des pipes | . Le nombre decolonnes est défini dans la première ligne du tableau et vous devez pour chaque ligne avoir lemême nombre de colonnes, même si certaines sont vides. La première ligne sera votre en-tête. La seconde ligne sépare cet en-tête du corps du tableau, ellene contient que des tiret - Il n'est plus possible de définir l'alignement des colonnes dansmarkdown.

1.4.12 Les tableaux

| Header 1 | header 2 | header 3 |

|----------|----------|----------|

| 1 Online | 1 | value |

| Line 2 | 2 | value |

| 3 Online | 3 | value |

Header 1 header 2 header 3

1 Online 1 value

Line 2 2 value

3 Online 3 value

Assistant en ligne : Markdown Tables Generator(https://www.tablesgenerator.com/markdown_tables)

1.4.13 Échappement des caractères

Page 9: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 9/62

Les caractères spéciaux ayant un sens en markdown doivent être échappés. Si vous souhaitezutiliser dans votre texte des astérisques, accolades, dièses... à une position indiquant à markdownque vous désirer un formatage particulier, vous devez les échapper en les faisant précéder d’unantislash \ . Sinon markdown les masquera et appliquera le formatage correspondant. Lescaractères suivants sont à échapper :

\ * ` - _ [] () {} # + . !

Les équations peuvent être directement données au format , on peut donc par exemple écrire au milieu d’une ligne ou bien écrire des équations dans une nouvelle ligne et centrées:

Quelques commandes de base sont expliquées sur cette page(http://www.tuteurs.ens.fr/logiciels/latex/maths.html#s2), et pour plus de détails, vous pourrezconsulter mon polycopié d'Initiation à , disponible ici (http://faccanoni.univ-tln.fr/user/enseignements/20142015/InitiationLaTeX.pdf), en particulier le chapitre 3.

1.5 Mode édition: les équations

LT XAE

xi

= .∑n=1

∞ 1

n2

π2

6

LT XAE

LT X2eAE

Pour taper des formules mathématiques avec , il y a besoin d’entrer en modemathématiques. Il existe deux modes mathématiques : les formules dans le texte (appelée inline) et les formules enévidence (dites en displaystyle).

Pour mettre une formule dans le texte, comme , il suffit de mettre la formule entre deuxdollars: $y=f(x)$ . Remarquer la différence entre le mode texte et le mode mathématique : avec des dollars on a

tandis que sans dollars on a y=f(x)Pour mettre une formule en évidence, comme

il faut mettre la formule entre deux doubles dollars $$y=f(x)$$

1.5.1 Les modes mathématiques

LT XAE

y = f (x)

y = f (x)

y = f (x)

Deux opérations fondamentales en mode mathématique sont la mise en exposant et la mise enindice.

Pour obtenir un indice, il faut utiliser la touche _ qui s’obtient avec la touche «8». Parexemple, taper $x_1$ donnera . Attention, taper $x_12$ ne donne pas mais :seul le premier caractère tapé après _ est mis en indice; pour obtenir , il faut taper $x_{12}$ .

Pour obtenir un exposant, il faut utiliser ^ (accent circonflexe qui s’obtient en tapant deux fois

la touche «^»). Par exemple, $x^2$ donne . De même que pour les indices, $x^23$

donne tandis que $x^{23}$ donne .On peut bien sûr combiner les deux, dans l’ordre que l’on veux : $x_1^2$ ou $x^2_1$donnent

1.5.2 Indices et exposantes

x1 x12 2x1

x12

x2

3x2 x23

x21

Page 10: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 10/62

Résultat Commande Résultat Commande Résultat Commande

\infty \le \iff

\forall \leq \nearrow

\exists \ge \searrow

\nexists \geq \in

\partial \approx \subset

\ell \simeq \cup

\pm \equiv \cap

\mp \to \setminus

\times \mapsto \emptyset

\neq \implies

Pour la négation d'un symbole, on peut utiliser \not . Par exemple, $F \not\subset E$fournit .

1.5.3 Symboles d'usage courant

∞ ≤ ⟺

∀ ≤ ↗

∃ ≥ ↘

∄ ≥ ∈

∂ ≈ ⊂

ℓ ≃ ∪

± ≡ ∩

∓ → ∖

× ↦ ∅

≠ ⟹

F ⊄ E

La racine carrée s'obtient par \sqrt{...} et la racine n-ième par \sqrt[n]{...} :

1.5.4 Racine carrée, racine n-ième

$$

\sqrt{1+x} + \sqrt[3]{1+x}

$$

+1 + x⎯ ⎯⎯⎯⎯⎯⎯⎯√ 1 + x

⎯ ⎯⎯⎯⎯⎯⎯⎯√3

Pour les fractions, on utilise la commande \frac{}{} qui prend deux arguments, dans l'ordre lenumérateur et le dénominateur. Pour les coefficients binomiaux on utilise la commande \binom{}{} . Le rendu change selon qu'il s'agit d'une formule inline ou d'une formule displaystyle: $\frac{1}{2}+1$ donne

$$\frac{1}{2}+1$$ donne

1.5.5 Fractions et coefficients binomiaux

+ 112

+ 11

2

Pour taper les lettres grecques, il suffit de précéder le nom de la lettre par un backslash; parexemple $\alpha$ donne . Voici une liste complète des lettres grecques disponibles sous

:

1.5.6 Lettres grecques

α

LT XAE

Page 11: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 11/62

Résultat Commande Résultat Commande Résultat CommandeRésultat Commande Résultat Commande Résultat Commande

\alph$ \nu \Gamma

\beta \xi \Delta

\gamma \pi \Theta

\delta \varpi \Lambda

\epsilon \rho \Xi

\varepsilon \varrho \Pi

\zeta \sigma \Sigma

\eta \tau \Upsilon

\theta \upsilon \Phi

\vartheta \chi \Psi

\iota \phi \Omega

\kappa \varphi

\lambda \psi

\mu \omega

α ν Γ

β ξ Δ

γ π Θ

δ ϖ Λ

ϵ ρ Ξ

ε ϱ Π

ζ σ Σ

η τ Υ

θ υ Φ

ϑ χ Ψ

ι ϕ Ω

κ φ

λ ψ

μ ω

La commande \text{} permet d'insérer du texte dans une formule displaystyle (les commandes \quad et \qquad insèrent de l'espace autour du texte):

$$

y = x^2 \qquad \text{et donc} \quad x = \pm\sqrt{y}

$$

donne

1.5.7 Texte dans une formule displaystyle

y = et donc x = ±x2 y⎯⎯√

Résultat Commande Résultat Commande Résultat Commande Résultat Commande

\exp \cos \cosh \lim

\ln \sin \sinh \limsup

\lg \tan \tanh \liminf

\log \cot \coth \max

\inf \arccos \gcd \sup

\det \arcsin \hom \min

\deg \arctan \ker \arg

\dim

1.5.8 Fonctions mathématiques

exp cos cosh lim

ln sin sinh lim sup

lg tan tanh lim inf

log cot coth max

inf arccos gcd sup

det arcsin hom min

deg arctan ker arg

dim

1.5.9 Grands opérateurs: intégrales, sommes, produits, etc.

Page 12: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 12/62

Le rendu des grands opérateurs change selon qu'il s'agit d'une formule inline ou d'une formuledisplaystyle. Certaines de ces commandes prennent, tout comme ou , des bornes. Leprincipe est le même, on utilise des indices ou des exposants pour les taper. Le placement desindices et exposants dépend à nouveau de si la formule est mise en évidence ou pas.

$\int_a^b f(x) dx$ et $\sum_{i=0}^n u_n$ donnent et

$$\int_a^b f(x) dx$$ et $$\sum_{i=0}^n u_n$$ donnent

et

Ponctuellement et seulement si absolument nécessaire, dans une formule inline

on peut forcer le positionnement des indices avec \limits :

$\int\limits_a^b f(x) dx$ et $\sum\limits_{i=0}^n u_n$ donnent et

on peut forcer la dimension et le positionnement des indices avec \displaystyle $\displaystyle\int_a^b f(x) dx$ et $\displaystyle\sum_{i=0}^n u_n$

donnent et

Résultat inline Commande Résultat displaystyle Commande

$\int$ $$\int$$

$\iint$ $$\iint$$

$\iiint$ $$\iiint$$

$\sum$ $$\sum$$

$\prod$ $$\prod$$

$\bigcup$ $$\bigcup$$

$\bigcap$ $$\bigcap$$

$\bigsqcup$ $$\bigsqcup$$

$\bigoplus$ $$\bigoplus$$

$\bigotimes$ $$\bigotimes$$

$\coprod$ $$\coprod$$

Pour mettre plusieurs lignes dans les indices, il faut utiliser \substack{} ; à l'intérieur del'argument de \substack , on passe à la ligne avec \\ .

max lim

f (x)dx∫ b

a∑n

i=0 un

f (x)dx∫b

a

∑i=0

n

un

f (x)dx∫a

b

∑i=0

n

un

f (x)dx∫b

a∑i=0

n

un

∫ ∫∬ ∬∭ ∭∑ ∑∏ ∏⋃ ⋃⋂ ⋂⨆ ⨆⨁ ⨁⨂ ⨂∐ ∐

Page 13: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 13/62

$$

L_i(x)=\prod_{\substack{j=0\\j\neq i}}^n\frac{x-x_j}{x_i-x_j}

$$

donne

(x) =Li ∏j=0j≠i

nx − xj

−xi xj

Voici les accents pouvant se mettre sur une lettre seule:

Résultat Commande Résultat Commande Résultat Commande

\tilde{a} \mathring{a} \dot{a}

\vec{a} \grave{a} \ddot{a}

\hat{a} \acute{a} \dddot{a}

\bar{a} \breve{a} \ddddot{a}

\check{a}

Il existe aussi des accents extensibles:

Résultat Commande Résultat Commande Résultat Com

\widehat{abc} \widetilde{abc} \overleftarro

\overline{abc} \underbrace{abc} \underleftarro

\underline{abc} \overrightarrow{abc} \overleftrightarro

\overbrace{abc} \underrightarrow{abc} \underleftrightarro

Pour \underbrace il est possible de placer du matériel en-dessous en utilisant _ et pour \overbrace du matériel au-dessus en utilisant ^ :

$$

\underbrace{x^3 + x^2 + x + 1}_{\to 0}

\qquad

\overbrace{x^3 + x^2 + x + 1}^{= 0}

$$

donne

1.5.10 Accents mathématiques

a  a a

a  a  a

a  a  a 

a a a  

a

abc abc abc← ⎯⎯⎯

abc⎯ ⎯⎯⎯⎯⎯⎯⎯⎯ abc

⏟abc← ⎯⎯⎯

abc⎯ ⎯⎯⎯⎯⎯

abc⎯ →⎯⎯

abc←→

abc⏞

abc⎯ →⎯⎯

abc←→

+ + x + 1x3 x2 →0

+ + x + 1x3 x2 =0

Résultat Commande Résultat Commande Résultat Commande

1.5.11 Délimiteurs

Page 14: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 14/62

Résultat Commande Résultat Commande Résultat Commande

( / \lfloor

) \backslash \rfloor

[ \lvert \lceil

] \rvert \rceil

\{ \lVert \langle

\} \rVert \rangle

rien .

Il est important de comprendre que, même si \lvert et \rvert se ressemblent, ils ne peuventpas être interchangés: \lvert doit toujours être utilisé pour ouvrir et \rvert pour refermer. Parexemple, se tape $\lvert x \rvert$ . Les seuls délimiteurs à n'être ni ouvrant ni fermantmais médian sont le slash / , l'anti-slash \ et le \middle .

Pour avoir des délimiteurs qui sont de la même taille que ce qu'ils entourent, il faut précéder ledélimiteur ouvrant par \left et le délimiteur fermant par \right :

$$

(1+\frac{1}{n})^n

$$

donne

$$

\left(1+\frac{1}{n}\right)^n

$$

donne

Voici un exemple d'utilisation d'un délimiteur vide:

$$

\left.\frac{\partial P}{\partial T}\right|_{V}=\frac{nR}{V}

$$

donne

On peut aussi utiliser \middle pour mettre un délimiteur médian au milieu d'un couple \left et\right , comme dans la définition d'un ensemble:

$$

\left\{ x \middle| x^2<\frac{1}{2} \right\}

$$

donne

( / ⌊

) ∖ ⌋

[ ∣ ⌈

] ∣ ⌉

{ ∥ ⟨

} ∥ ⟩

∣x∣

(1 +1

n)n

(1 + )1

n

n

=∂P∂T

|

|||V

nR

V

Page 15: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 15/62

On note qu'ici la barre verticale est trop proche de ce qu'il y a autour d'elle et il faut rajouter à lamain deux petits espaces avec la commande \, :

$$

\left\{ x \, \middle| \, x^2<\frac{1}{2} \right\}

$$

donne

{x < }|

|||x

2 1

2

{x < }|

||| x

2 1

2

Voici un résumé des alphabets mathématiques disponibles:

Résultat Commande Résultat Commande

C x

\mathbb{C} \mathrm{x}

\mathcal{C} \mathbf{x}

\mathscr{C} \boldsymbol{\sigma}

\mathfrak{C} \mathit{PGL}

Ne pas confondre \mathrm et \text : le premier est pour mettre des maths en romain tandisque le second est pour insérer du texte dans une formule.

1.5.12 Alphabets mathématiques

C x

ℂ x

x

𝒞 σ

ℭ PGL

Pour composer des tableaux mathématiques on utilise l'environnement {array} . Cet environnement prend un argument obligatoire qui est la spécification du type des colonnes. Les types de colonnes de base sont c (centré), l (aligné à gauche) et r (aligné à droite). Le texte des différentes colonnes est séparé par un & et on passe à la ligne suivante en utilisant \\ .

Pour rajouter un trait vertical entre deux colonnes, il suffit de mettre un | (qu'on obtient avec lacombinaison de touches "AltGr+6") dans la spécification des colonnes. Pour tracer un trait horizontal, il y a la commande \hline . Cette commande doit être soit au toutdébut du tableau soit après un \\ .

$$

\begin{array}{|c|c|}

\hline

f(x) & f'(x)\\

\hline

x^n & nx^{n-1}\\

\ln(x) & \frac{1}{x}\\

\hline

\end{array}

$$

1.5.13 Tableaux mathématiques

Page 16: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 16/62

donne

f (x)

xn

ln(x)

(x)f ′

nxn−1

1x

Pour définir une fonction par morceaux on peut utiliser l'environnement {cases} , qui s'utilise dela façon suivante:

$$

H(x) =

\begin{cases}

0 & \text{si $x < 0$,} \\

1 & \text{si $x \geq 0$.}

\end{cases}

$$

donne

1.5.14 Distinction de cas

H(x) = { 0

1

si x < 0,

si x ≥ 0.

On tape les matrices comme des tableaux, sauf qu'on utilise les environnements {matrix} , {pmatrix} , {bmatrix} , {Bmatrix} , {vmatrix} , {Vmatrix} ou {smallmatrix} :

$$

\begin{matrix} a & b \\ c & d \end{matrix}

\quad

\begin{pmatrix} a & b \\ c & d \end{pmatrix}

\quad

\begin{bmatrix} a & b \\ c & d \end{bmatrix}

\quad

\begin{Bmatrix} a & b \\ c & d \end{Bmatrix}

\quad

\begin{vmatrix} a & b \\ c & d \end{vmatrix}

\quad

\begin{Vmatrix} a & b \\ c & d \end{Vmatrix}

\quad

\begin{smallmatrix} a & b \\ c & d \end{smallmatrix}

$$

donne

1.5.15 Matrices

( ) [ ] { }a

c

b

d

a

c

b

d

a

c

b

d

a

c

b

d

|

|||a

c

b

d

|

|||

∥∥∥a

c

b

d

∥∥∥ a

cbd

1.5.16 Alignement de formules

Page 17: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 17/62

Pour aligner plusieurs formules, on dispose des environnements {align} et {multline} (iln'est pas nécessaire d'utiliser les $$...$$ ). Ne jamais mettre de \\ sur la dernière ligne de cesenvironnements.

L'environnement {align} permet d'aligner plusieurs signes d'égalité à l'intérieur d'une mêmeformule:

\begin{align}

A & = B \\

& = C+D \\

& = E

\end{align}

donne

On peut au besoin mettre plusieurs équations en colonne:

\begin{align}

A & = B & E & = F & I & = J \\

& = C+C & & = G & & = K \\

& = D & & & &

\end{align}

donne

L'environnement {multline} permet de découper une formule trop grande en plusieursmorceaux sans contrôle précis de l'alignement:

\begin{multline}

A+B+C+D+E+F+G+H+I+J\\

+A+B+C+D+E+F+G+H+I+J\\

+A+B+C+D+E+F+G+H+I+J\\

+A+B+C+D+E+F+G+H+I+J

\end{multline}

donne

Le package de défini d'autres environnements, vous pouvez les utiliser (aprèsavoir lu la documentation du package et compris dans quels cas il faut utiliser un environnementplutôt qu'un autre). En revanche, l'utilisation de l'environnement {eqnarray} pour mettre enforme une formule sur plusieurs lignes, qu'on peut trouver dans certains vieux manuels, seraconsidéré comme une faute grave. Cet environnement a plusieurs défauts bien illustré dans cedocument: Avoid eqnarray! (http://tug.org/pracjourn/2006-4/madsen/madsen.pdf)

A = B

= C + D

= E

A = B

= C + C

= D

E = F

= G

I = J

= K

A + B + C + D + E + F + G + H + I + J

+ A + B + C + D + E + F + G + H + I + J

+ A + B + C + D + E + F + G + H + I + J

+ A + B + C + D + E + F + G + H + I + J

LT XAE

Page 18: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 18/62

On dispose de deux flèches extensibles, \xleftarrow[]{} et \xrightarrow[]{} . Pourmettre une formule dessus, on utilise l'argument obligatoire entre accolades tandis que pour mettreune formule dessous, on utilise l'argument optionnel entre crochets:

$$

f(x) \xrightarrow{\text{d'après }(H)} a

\quad

f(x) \xrightarrow[x\to0]{} a

\quad

f(x) \xrightarrow[x\to0]{\text{d'après }(H)} a

$$

donne

1.5.17 Flèches extensibles

f (x) a f (x) a f (x) a⎯ →⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯

d'après (H)

⎯ →⎯⎯⎯⎯x→0

⎯ →⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯

x→0

d'après (H)

Selon l'apparence voulue, il y a trois façon d'écrire les modules de congruence:

$a \equiv b \mod m$

$a \equiv b \pmod m$

$a \equiv b \pod m$

donnent

Il y a aussi la commande \bmod qu'on peut utiliser dans le contexte suivant $\gcd(n,m\bmod n)$ donne

1.5.18 Modules de congruences

a ≡ b mod m

a ≡ b (mod m)a ≡ b (m)

gcd(n,m mod n)

Les commandes \underset{en-dessous}{symbole} et \overset{au-dessus}{symbole} permettent de placer du matériel arbitraire en-dessous ou au-dessus de n'importe quelsymbole.

$$

A

\overset{\text{déf}}{=}

\frac{1}{n} \underset{n \to +\infty}{\in} o\left(\frac{1}{n^2}\rig

ht)

$$

donne

1.5.19 Placer au-dessus ou en-dessous

A o( )=déf 1

n∈

n→+∞

1

n2

1.6 Mode édition : les celulles Code

Page 19: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 19/62

Lorsqu'on ouvre un terminal, un programme interpréteur de commandes système est lancé etattend les commandes pour les exécuter. De la même façon, en arrière-plan d'un notebook, uninterpréteur de code a été lancé et attend lui aussi qu'on lui donne du code. Dans le coin supérieurdroit vous pouvez voir qu'il s'agit ici de l'interpréteur Python 3.

Un notebook est constitué de cellules successives. Les cellules pour écrire du code sont repérablespar le prompt In[ ] . Essayons :

In [4]:

Le texte 2 / 3 a été transmis à l'interpréteur Python 3. Il s'agit d'une expression Python 3 valide.L'interpréteur a donc pu l'évaluer. La valeur de l'expression (dont le type est ici un nombre flottant)est alors récupérée et représentée sous la forme du texte affiché à droite du prompt de sortie

N'oubliez pas que vous êtes dans un notebook. Vous pouvez donc modifier l'expression ci-dessuset la ré-exécuter en appuyant sur [Shift-ENTER] . Le numéro entre crochet est un compteur. Ilest incrémenté à chaque sollicitation de l'interpréteur.

In [5]:

L'exécution de l'instruction ci-dessus n'a produit aucun résultat en sortie. Cette instruction acependant eu un effet. Elle a modifié l'état de l'interpréteur. En interne, l'interpréteur a associé lavaleur de l'expression 2+2 (c'est-à-dire le type entier 4 ) au nom hauteur .

On peut alors exécuter :

In [6]:

Lorsque vous ouvrez un notebook vous le visualisez tel qu'il a été sauvegardé. Vous voyez enparticulier les résultats des séquences de code qui ont été exécutées. Cependant, à l'ouverture dunotebook, un nouvel interpréteur tout neuf est lancé. Vous devez donc exécuter à nouveau lescellules. Mais dans quel ordre? La réponse naturelle est "dans l'ordre où apparaissent lescellules"... mais cela suppose que la personne qui a réalisé le notebook a fait correctement leschoses.

Pour commenter une ou plusieurs lignes, les selectionner et appuyer sur [Ctrl-/] :

1.6.1 Les exceptions

Out[4]:

0.6666666666666666

Out[6]:

8

2 / 3

h = 2+2

h=2*h

h

Page 20: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 20/62

Dans certaines situations, l'interpréteur peut s'interrompre en levant une exception. Les exceptionsn'ont rien d'exceptionnelles. On en rencontre souvent, en particulier lorsque l'on commet deserreurs de programmation.

In [7]:

Pour comprendre ce qui a produit l'exception il faut :

identifier le nom de l'exception, ici IndexError ,lire le message associé, ici 'list index of range' ,identifier l'instruction qui l'a provoqué, ici l'évaluation de T[3] à la ligne 2.

Il se peut aussi que le code que l'on exécute ne se termine pas :

In [8]:

Lorqu'une cellule de code s'exécute le prompt comporte une étoile In[ *] . Pour interromprel'interpréteur, il suffit d'appuyer deux fois sur la touche I . Si cela s'avère nécessaire, il estégalement possible de redémarrer l'interpréteur. Pour cela il faut appuyer deux fois sur la touche 0 . L'interpréteur se retrouve alors dans son état initial.

Les programmes, quels qu'ils soient, lisent des données en provenance de sources variées(fichiers, réseaux, ports usb, etc). Ils envoient eux-mêmes des données vers diverses destinations.Dans tous les cas, cela se traduit par la lecture ou l'écriture de flux d'octets.

Dans un programme Python la fonction print permet d'écrire sur la sortie standard.

1.6.2 Entrée et sortie standard

In [9]:

Remarquez que l'exécution du code ci-dessus n'a retourné aucune valeur. Il n'y a pas de prompt Out[ ] . Remarquez aussi que chaque fonction print a également envoyé un caractère saut de

ligne sur la sortie standard.

Accueil s'écrit :

a

c

c

u

e

i

l

T = [18, 5, 3]

# T[3] # Décommenter la ligne pour voir l'exception

k = 1

# while k > 0: # Décommenter pour voir l'exception

# k = k + 1

print("Accueil s'écrit :")

for x in "accueil":

print(x)

Page 21: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 21/62

L'auto-complétion Lorsque vous commencez à saisir un nom connu de l'interpréteur, l'appui surla touche [TAB] complète le nom automatiquement. Si plusieurs noms sont possibles unmenu contextuel vous propose de choisir. Ceci économise de la frappe tout en évitant leserreurs d'orthographe dans les noms des variables.Les infobulles Lorsque le curseur de saisie est sur un nom connu de l'interpréteur (ouimmédiatement à droite), l'appui sur [Shift-TAB] affiche une infobulle qui donne undescriptif succinct de l'objet désigné par ce nom. C'est un moyen rapide de vérifier par exemplequels sont les arguments qui sont attendus par une fonction.Documentation en ligne Pour lire la documentation en ligne concernant un objet python(module, fonction, classe, etc), il suffit d'ajouter un ? juste après le nom et d'appuyer sur latouche [Enter] . Un pager s'ouvre alors avec la dite documentation.

1.6.3 L'aide en ligne IPython

In [10]:

Lorsque le texte de la cellule débute par un ! alors IPython en déduit que le reste du texte n'estpas du code python mais une commande système qui doit être exécutée par le Shell. Autrement ditIPython peut se substituer au terminal.

1.6.4 Les commandes systèmes

?abs

Page 22: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 22/62

In [11]:

1.6.5 Les commandes magiques de IPython

Si la commande magisue %matplotlib est appelée sans argument, la sortie d'une commandede traçage est affichée à l'aide du backend matplotlib par défaut dans une fenêtre séparée.

Alternativement, le backend peut être explicitement demandé en utilisant, par exemple:

1.6.5.1 %matplotlib inline & %matplotlib notebook

total 3604

-rw-rw-r-- 1 minnolina minnolina 36617 févr. 18 10:39 chevr

e1.png

-rw-rw-r-- 1 minnolina minnolina 29100 févr. 18 10:38 chevr

e2.png

-rw-rw-r-- 1 minnolina minnolina 32188 févr. 18 10:38 chevr

e3.png

-rw-rw-r-- 1 minnolina minnolina 32205 juil. 28 2015 erreu

rEuler.png

-rw-rw-r-- 1 minnolina minnolina 36739 févr. 18 11:14 frais

e.png

-rw-rw-r-- 1 minnolina minnolina 1173088 mars 8 16:29 M62-C

M1.ipynb

-rw-rw-r-- 1 minnolina minnolina 604731 mars 8 16:35 M62-C

M2.ipynb

-rw-rw-r-- 1 minnolina minnolina 207432 mars 8 13:20 M62-C

M3.ipynb

-rw-rw-r-- 1 minnolina minnolina 227565 mars 7 13:07 M62-T

P1.ipynb

-rw-rw-r-- 1 minnolina minnolina 75804 mars 7 10:18 M62-T

P2-NumVSFormel.ipynb

-rw-rw-r-- 1 minnolina minnolina 265506 mars 8 16:16 M62-T

P3-Eulers.ipynb

-rw-rw-r-- 1 minnolina minnolina 394900 févr. 15 11:43 M62-T

P4-schemas-1.ipynb

-rw-rw-r-- 1 minnolina minnolina 174883 févr. 19 21:57 M62-T

P4-schemas-2.ipynb

-rw-rw-r-- 1 minnolina minnolina 39717 févr. 15 17:03 M62-T

P5-PbLimites.ipynb

-rw-rw-r-- 1 minnolina minnolina 3719 févr. 18 10:24 M62-T

P6-Examen.ipynb

drwxrwxr-x 2 minnolina minnolina 4096 févr. 18 14:49 __pyc

ache__

-rw-rw-r-- 1 minnolina minnolina 31964 mars 8 12:11 R33-2

017-DM2-exo2-Verhulst-1.png

-rw-rw-r-- 1 minnolina minnolina 12954 avril 23 2018 tikzm

agic.py

-rw-rw-r-- 1 minnolina minnolina 1509 mars 4 13:31 Untit

led1.ipynb

-rw-rw-r-- 1 minnolina minnolina 12332 mars 7 11:44 Untit

led2.ipynb

-rw-rw-r-- 1 minnolina minnolina 192583 févr. 28 13:14 Untit

led.ipynb

# Liste le contenu du dossier courant

!ls -l

Page 23: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 23/62

%matplotlib inline : la sortie est affichée directement sous la cellule de code qui l’aproduite,%matplotlib notebook : la sortie est affichée directement sous la cellule de code qui l’a

produite et, de plus, permet des figures interactives.

1.6.5.2 %pylab inline

Importe les modules numpy et matplotlib . L'option inline indique que les figuresMatplotlib seront insérées dans le notebook lui-même plutôt que dans une fenêtre graphique à part. L'instruction %pylab inline exécute en particulier les deux instructions import numpy as np import matplotlib.pyplot as plt

In [12]:

In [13]:

Sauvegarde automatiquement le notebook tous les 300 secondes (=5 minues)

1.6.5.3 %autosave 300 […]

%who , %whos affichent les objets qui sont actuellement définis dans l'interpréteur Python. %reset efface les variables définie; %reset -f efface les variables définies sans demander

confirmation.

1.6.5.4 %who , %whos et %reset

Populating the interactive namespace from numpy and matplotli

b

%pylab inline

plot([1,2],[3,4]);

Page 24: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 24/62

In [14]:

In [15]:

In [16]:

Lorsque vous avez terminé la rédaction de votre document, vous pouvez le télécharger surl'ordinateur local dans le format qui vous convient. Choisir pour cela File/Download as...

Pour mettre vos notebooks en ligne : nbviewer (http://nbviewer.ipython.org/)

1.6.6 Exporter un notebook

2 Notions de base de Python

In [2]:

Le corps d'un bloc de code (boucles, sous-routines, etc.) est défini par son indentation: l'indentationest une partie intégrante de la syntaxe de Python.

2.1 Indentation

Le symbole dièse # indique le début d'un commentaire: tous les caractères entre # et la fin de laligne sont ignorés par l'interpréteur.

2.2 Commentaires

Dans la plupart des langages informatiques, le nom d'une variable représente une valeur d'un typedonné stockée dans un emplacement de mémoire fixe. La valeur peut être modifiée, mais pas letype. Ce n'est pas le cas en Python, où les variables sont typées dynamiquement.

2.3 Variables et affectation

T h k x

Interactive namespace is empty.

Autosaving every 300 seconds

%who

%reset -f

%who

# Enable inline plotting

%matplotlib inline

%autosave 300

Page 25: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 25/62

In [18]:

In [19]:

L'affectation b = 2 crée une association entre le nom et le nombre entier . La déclaration b*2.0 évalue l'expression et associe le résultat à ; l'association d'origine avec l'entier est

détruite. Maintenant se réfère à la valeur en virgule flottante . Il faut bien prendre garde au faitque l'instruction d'affectation ( = ) n'a pas la même signification que le symbole d'égalité ( ) enmathématiques (ceci explique pourquoi l'affectation de à , qu'en Python s'écrit x = 3 , enalgorithmique se note souvent ).

On peut aussi effectuer des affectations parallèles:

b 2

b 2

b 4.0=

3 x

x ← 3

In [20]:

Attention: Python est sensible à la casse. Ainsi, les noms n et N représentent différents objets.Les noms de variables peuvent être non seulement des lettres, mais aussi des mots; ils peuventcontenir des chiffres (à condition toutefois de ne pas commencer par un chiffre), ainsi que certainscaractères spéciaux comme le tiret bas _ (appelé underscore en anglais).

Une chaîne de caractères est une séquence de caractères entre guillemets (simples ou doubles).Les chaînes de caractères sont concaténées avec l'opérateur plus + , tandis que l'opérateur : estutilisé pour extraire une portion de la chaîne. Voici un exemple:

2.4 Chaîne de caractères (Strings)

2

4.0

128

256

256

128

b = 2 # b is an integer

print(b)

b = b*2.0 # b is a float

print(b)

a, b = 128, 256

print(a)

print(b)

a,b = b,a

print(a)

print(b)

Page 26: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 26/62

In [21]:

Une chaîne de caractères est un objet immuable, i.e. ses caractères ne peuvent pas être modifiéspar une affectation, et sa longueur est fixe. Si on essaye de modifier un caractère d'une chaîne decaractères, Python renvoie une erreur comme dans l'exemple suivant:

In [22]:

Une liste est une suite d'objets, rangés dans un certain ordre. Chaque objet est séparé par unevirgule et la suite est encadrée par des crochets. Une liste n'est pas forcement homogène: elle peutcontenir des objets de types différents les uns des autres. La première manipulation que l'on abesoin d'effectuer sur une liste, c'est d'en extraire et/ou modifier un élément: la syntaxe est ListName[index] . Voici un exemple:

2.5 Listes

In [23]:

En Python, les éléments d'une liste sont indexés à partir de .0

In [24]:

Si on tente d'extraire un élément avec un index dépassant la taille de la liste, Python renvoi unmessage d'erreur:

In [25]:

Press return to exit the program

Press return

[12, 10, 18, 7, 15, 3]

[12, 11, 18, 7, 15, 3]

Out[24]:

(12, 11, 18, 7, 15, 3)

string1 = 'Press return to exit'

string2 = 'the program'

print(string1 + ' ' + string2) # Concatenation

print(string1[0:12])# Slicing

s = 'Press return to exit'

#s[0] = 'p' # Décommenter pour voir l'exception

fraise = [12, 10, 18, 7, 15, 3] # Create a list

print(fraise)

fraise[2]

fraise[1] = 11

print(fraise)

fraise[0], fraise[1], fraise[2], fraise[3], fraise[4], fraise[5]

#fraise[6] # Décommenter pour voir l'exception

Page 27: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 27/62

On peut extraire une sous-liste en déclarant l'indice de début (inclus) et l'indice de fin (exclu),séparés par deux-points: ListName[i:j] , ou encore une sous-liste en déclarant l'indice dedébut (inclus), l'indice de fin (exclu) et le pas, séparés par des deux-points: ListName[i:j:k] . Cette opération est connue sous le nom de slicing (en anglais).

Un dessin et quelques exemples permettrons de bien comprendre cette opération fort utile:

In [26]:

In [27]:

In [28]:

In [29]:

In [30]:

Out[26]:

[18, 7]

Out[27]:

[18, 7, 15, 3]

Out[28]:

[12, 11]

Out[29]:

[12, 11, 18, 7, 15, 3]

Out[30]:

[18, 7, 15]

fraise[2:4]

fraise[2:]

fraise[:2]

fraise[:]

fraise[2:5]

Page 28: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 28/62

In [31]:

In [32]:

In [33]:

In [34]:

In [35]:

In [36]:

À noter que lorsqu'on utilise des tranches, les dépassements d'indices sont licites.

Voici quelques opérations et méthodes très courantes associées aux listes:

a.append(x) ajoute l'élément x en fin de la liste aa.extend(L) ajoute les éléments de la liste L en fin de la liste a , équivaut à a+La.insert(i,x) ajoute l'élément x en position i de la liste a , équivaut à a[i:i]=xa.remove(x) supprime la première occurrence de l'élément x dans la liste aa.pop([i]) supprime l'élément d'indice i dans la liste a et le renvoia.index(x) renvoie l'indice de la première occurrence de l'élément x dans la liste aa.count(x) renvoie le nombre d'occurrence de l'élément x dans la liste a

Out[31]:

[18, 7, 15, 3]

Out[32]:

[18, 7, 15, 3]

Out[33]:

[18, 15]

Out[34]:

[]

Out[35]:

[18, 7]

Out[36]:

3

fraise[2:6]

fraise[2:7]

fraise[2:6:2]

fraise[-2:-4]

fraise[-4:-2]

fraise[-1]

Page 29: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 29/62

a.sort() modifie la liste a en la trianta.reverse() modifie la liste a en inversant les élémentslen(a) renvoie le nombre d'éléments de la liste ax in a renvoi True si la liste a contient l'élément x , False sinonx not in a renvoi True si la liste a ne contient pas l'élément x , False sinonmax(a) renvoi le plus grand élément de la liste amin(a) renvoi le plus petit élément de la liste a

In [37]:

In [38]:

In [39]:

In [40]:

In [41]:

In [42]:

In [43]:

[2, 37, 20, 83, -79, 21]

[2, 37, 20, 83, -79, 21, 100]

[2, 37, 20, 83, -79, 21, 100, 17, 34, 21]

Out[40]:

2

[2, 37, 20, 83, -79, 100, 17, 34, 21]

Out[43]:

1

a = [2, 37, 20, 83, -79, 21] # Create a list

print(a)

a.append(100) # Append 100 to list

print(a)

L = [17, 34, 21]

a.extend(L)

print(a)

a.count(21)

a.remove(21)

print(a)

a.count(21)

Page 30: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 30/62

In [44]:

In [45]:

In [46]:

In [47]:

In [48]:

In [49]:

In [50]:

In [51]:

In [52]:

In [53]:

Out[44]:

-79

[2, 37, 20, 83, 100, 17, 34, 21]

Out[46]:

4

[21, 34, 17, 100, 83, 20, 37, 2]

[2, 17, 20, 21, 34, 37, 83, 100]

Out[51]:

8

[2, 17, 7, 20, 21, 34, 37, 83, 100]

a.pop(4)

print(a)

a.index(100)

a.reverse()

print(a)

a.sort()

print(a)

len(a) # Determine length of list

a.insert(2,7) # Insert 7 in position 2

print(a)

Page 31: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 31/62

In [54]:

In [55]:

In [56]:

In [57]:

ATTENTION: si a est une liste, la commande b=a ne crée pas un nouvel objet b maissimplement une référence (pointeur) vers a . Ainsi, tout changement effectué sur b serarépercuté sur a aussi! Pour créer une copie c de la liste a qui soit vraiment indépendante onutilisera la commande deepcopy du module copy comme dans les exemples suivants:

In [58]:

In [59]:

Qu'est-ce qui se passe lorsque on copie une liste a avec la commande b=a ? En effet, une listefonctionne comme un carnet d'adresses qui contient les emplacements en mémoire des différentséléments de la liste. Lorsque on écrit b=a on dit que b contient les mêmes adresses que a (ondit que les deux listes pointent vers le même objet). Ainsi, lorsqu'on modifie la valeur de l'objet, lamodification sera visible depuis les deux alias.

2.6 Matrices (sans NumPy )

[21, 17, 7, 20, 21, 34, 37, 83, 100]

[21, 17, -2, -5, -1978, 21, 34, 37, 83, 100]

[5.0, 2.0, 3.0]

[5.0, 2.0, 3.0]

[1.0, 2.0, 3.0]

[5.0, 2.0, 3.0]

a[0] = 21 # Modify selected element

print(a)

a[2:4] = [-2,-5,-1978] # Modify selected elements

print(a)

import copy

a = [1.0, 2.0, 3.0]

b = a # 'b' is an alias of 'a'

b[0] = 5.0 # Change 'b'

print(a) # The change is reflected in 'a'

print(b)

a = [1.0, 2.0, 3.0]

c = copy.deepcopy(a) # 'c' is an independent copy of 'a'

c[0] = 5.0 # Change 'c'

print(a) # 'a' is not affected by the change

print(c)

Page 32: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 32/62

Les matrices peuvent être représentées comme des listes imbriquées: chaque ligne est un élémentd'une liste. Par exemple, le code

In [60]:

définit a comme la matrice

La commande len (comme length) renvoie la longueur d'une liste. On obtient donc le nombre deligne de la matrice avec len(a) et son nombre de colonnes avec len(a[0]) :

3 × 3

.

1

4

7

2

5

8

3

6

9

In [61]:

In [62]:

In [63]:

In [64]:

In [65]:

Dans Python les indices commences à zéro, ainsi a[0] indique la première ligne, a[1] ladeuxième etc.

𝔸 =

a00

a10

a01

a11

a02

a12

2.7 Dictionnaires

[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

[4, 5, 6]

6

3

3

a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

print(a)

print(a[1]) # Print second row (element 1)

print(a[1][2]) # Print third element of second row

print(len(a))

print(len(a[0]))

Page 33: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 33/62

Un dictionnaire est une sorte de liste mais au lieu d'utiliser des index, on utilise des clés, c'est à diredes valeurs autres que numériques.

Pour initialiser un dictionnaire, on utile la syntaxe suivante:

In [160]:

Pour ajouter des valeurs à un dictionnaire il faut indiquer une clé ainsi qu'une valeur:

In [161]:

La méthode get permet de récupérer une valeur dans un dictionnaire et, si la clé est introuvable,de donner une valeur à retourner par défaut:

In [162]:

Pour vérifier la présence d'une clé on utilise in

In [163]:

In [164]:

Il est possible de supprimer une entrée en indiquant sa clé, comme pour les listes:

{'nom': 'engel', 'prenom': 'olivier'}

Olivier

Adresse inconnue

Out[163]:

True

Out[164]:

False

a={}

a["nom"] = "engel"

a["prenom"] = "olivier"

print(a)

data={}

data = {"name": "Olivier", "age": 30}

print(data.get("name"))

print(data.get("adresse", "Adresse inconnue"))

"nom" in a

"age" in a

Page 34: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 34/62

In [165]:

Pour récupérer les clés on utilise la méthode keysPour récupérer les valeurs on utilise la méthode valuesPour récupérer les clés et les valeurs en même temps, on utilise la méthode items quiretourne un tuple.

In [166]:

On peut utiliser des tuples comme clé comme lors de l'utilisation de coordonnées:

In [167]:

Comme pour les listes, pour créer une copie indépendante utiliser la méthode copy :

{'prenom': 'olivier'}

nom

prenom

engel

olivier

nom engel

prenom olivier

Out[167]:

{(3, 2): 12, (4, 5): 13}

del a["nom"]

print(a)

fiche = {"nom":"engel","prenom":"olivier"}

for cle in fiche.keys():

print(cle)

for valeur in fiche.values():

print(valeur)

for cle,valeur in fiche.items():

print(cle, valeur)

b = {}

b[(3,2)]=12

b[(4,5)]=13

b

Page 35: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 35/62

In [168]:

La fonction range crée un itérateur. Au lieu de créer et garder en mémoire une liste d'entiers,cette fonction génère les entiers au fur et à mesure des besoins:

range(n) renvoi un itérateur parcourant ;range(n,m) renvoi un itérateur parcourant ;range(n,m,p) renvoi un itérateur parcourant .

2.8 Fonction range

0, 1, 2, … , n − 1

n, n + 1, n + 2, … ,m − 1

n, n + p, n + 2p, … ,m − 1

In [169]:

Pour les afficher on crée une list :

In [170]:

In [171]:

In [172]:

{'k1': 'olivier', 'k2': 'engel'}

{'k1': 'olivier', 'k2': 'engel'}

{'k1': 'XXX', 'k2': 'engel'}

{'k1': 'olivier', 'k2': 'engel'}

range(0, 10)

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

[]

[0]

d = {"k1":"olivier", "k2":"engel"}

e = d.copy()

print(d)

print(e)

d["k1"] = "XXX"

print(d)

print(e)

A = range(0,10)

print(A)

A = list(A)

print(A)

print(list(range(0)))

print(list(range(1)))

Page 36: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 36/62

In [173]:

In [174]:

In [175]:

In [176]:

In [177]:

Pour afficher à l'écran des objets on utilise la fonction print(object1, object2, ...) quiconvertis object1, object2 en chaînes de caractères et les affiche sur la même ligne séparéspar des espace.

2.9 Fonction print

In [178]:

Le retour à la ligne peut être forcé par le caractère \n , la tabulation par le caractère \t .

In [179]:

Pour mettre en colonne des nombres on pourra utiliser l'opérateur % : la commande

[3, 4, 5, 6]

[0, 5, 10, 15]

[]

[0, -5, -10, -15]

[20, 15, 10, 5]

(12345, 6789) [2, 4, 6, 8]

a= (12345, 6789) b= [2, 4, 6, 8]

a= (12345, 6789)

b= [2, 4, 6, 8]

print(list(range(3,7)))

print(list(range(0,20,5)))

print(list(range(0,20,-5)))

print(list(range(0,-20,-5)))

print(list(range(20,0,-5)))

a = 12345,6789

b = [2, 4, 6, 8]

print(a,b)

print("a=", a, "\tb=", b)

print("a=", a, "\nb=", b)

Page 37: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 37/62

print('%format1, %format2,...' %(n1,n2,...) affiche les nombres n1,n2,...selon les règles %format1, %format2,... . Typiquement on utilise

wd pour un entierw.df pour un nombre en notation floating pointw.de pour un nombre en notation scientifique

où w est la largeur du champ total et d le nombre de chiffres après la virgule.

In [180]:

In [181]:

In [182]:

In [183]:

In [184]:

+ Addition- Soustraction* Multiplication/ Division** Exponentiation// Quotient de la division euclidienne% Reste de la division euclidienne

2.10 Opérations arithmétiques

1234.57

n = 9876

n = 009876

1234.568 9876

1.2346e+03 9876

a = 1234.56789

n = 9876

print('%7.2f' %a)

print('n = %6d' %n)

print('n = %06d' %n)

print('%12.3f %6d' %(a,n))

print('%12.4e %6d' %(a,n))

Page 38: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 38/62

In [185]:

In [186]:

In [187]:

Certains de ces opérations sont aussi définies pour les chaînes de caractères et les listes commedans l'exemple suivant:

In [188]:

In [189]:

In [190]:

Out[185]:

(100, 17, 83)

Out[186]:

(2, 17, 19)

Out[187]:

(4, 3, 3)

Hello Hello Hello

[1, 2, 3, 1, 2, 3, 1, 2, 3]

[1, 2, 3, 4, 5]

a = 100

b = 17

c = a-b

a,b,c

a = 2

c = b+a

a,b,c

a = 3

b = 4

c = a

a = b

b = c

a, b, c

s = 'Hello '

t = 'to you'

a = [1, 2, 3]

print(3*s) # Repetition

print(3*a) # Repetition

print(a + [4, 5]) # Append elements

Page 39: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 39/62

In [191]:

In [192]:

Il existe aussi les opérateurs augmentés:

On écrit Équivaut à

a += b a = a + b

a -= b a = a - b

a *= b a = a * b

a /= b a = a / b

a **= b a = a ** b

a %= b a = a % b

Les opérateurs de comparaison renvoient True si la condition est vérifiée, False sinon. Cesopérateurs sont

On écrit Ça signifie

<

>

<=

>=

==

!=

in

Attention: bien distinguer l'instruction d'affectation = du symbole de comparaison == .

Pour combiner des conditions complexes (par exemple et ), on peut combiner desvariables booléennes en utilisant les connecteurs logiques:

On écrit Ça signifie

and et

or ou

not non

Deux nombres de type différents (entier, à virgule flottante, etc.) sont convertis en un type communavant de faire la comparaison. Dans tous les autres cas, deux objets de type différents sontconsidérés non égaux.

2.11 Opérateurs de comparaison et connecteurs logiques

<

>

=

x > −2 < 5x2

Hello to you

print(s + t) # Concatenation

#print(3 + s) # Décommenter pour voir l'exception

Page 40: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 40/62

In [193]:

Supposons de vouloir calculer les images de certains nombres par une fonction polynomialedonnée. Si la fonction en question est un peu longue à saisir, par exemple

, il est rapidement fastidieux de la saisir àchaque fois que l'on souhaite calculer l'image d'un nombre par cette fonction.

3 Fonctions […]

f : x ↦ 2 − + 5 − + 9 + 7 + 8x − 1x7 x6 x5 x4 x3 x2

Supposons vouloir définir la fonction valeur absolue:

On a besoin d'une instruction qui opère une disjonction de cas. En Python il s'agit de l'instruction dechoix introduite par le mot-clé if . La syntaxe est la suivante:

if condition_1:

instruction_1.1

instruction_1.2

elif condition_2:

instruction_2.1

instruction_2.2

...

else:

instruction_n.1

instruction_n.2

où condition_1 , condition_2 ... représentent des ensembles d'instructions dont la valeur estTrue ou False (on les obtient en général en utilisant les opérateurs de comparaison). La

première condition condition_i ayant la valeur True entraîne l'exécution des instructionsinstruction_i.1 et instruction_i.2 . Si toutes les conditions sont fausses, les

instructions instruction_n.1 et instruction_n.2 sont exécutées.

Bien noter le rôle essentiel de l'indentation qui permet de délimiter chaque bloc d'instructions et laprésence des deux points après la condition du choix (mot clé if ) et après le mot clé else .

4 Structure conditionnelle […]

∣x∣ = { x

−xsi x ≥ 0,

sinon.

a>b? True

a==c? False

(a>b) and (a==c)? False

(a>b) or (a==c)? True

a = 2 # Integer

b = 1.99 # Floating

c = '2' # String

print('a>b?',a>b)

print('a==c?',a==c)

print('(a>b) and (a==c)?',(a>b) and (a==c))

print('(a>b) or (a==c)?',(a>b) or (a==c))

Page 41: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 41/62

Les structure de répétition se classent en deux catégories: les répétitions conditionnelles pourlesquelles le bloc d'instructions est à répéter autant de fois qu'une condition est vérifiée, et lesrépétitions inconditionnelles pour lesquelles le bloc d'instructions est à répéter un nombre donné defois.

5 Boucles […]

Un module est une collection de fonctions. Il y a différents types de modules: ceux qui sont inclusdans la version de Python comme random ou math , ceux que l'on peut rajouter comme numpyou matplotlib et ceux que l'on peut faire soi-même (il s'agit dans les cas simples d'un fichierPython contenant un ensemble de fonctions).

Pour importer un module, on peut utiliser la commande import ModuleName . Il est alorspossible d'obtenir une aide sur le module avec la commande help(ModuleName) . La liste desfonctions définies dans un module peut être affichée par la commande dir(ModuleName) . Lesfonctions s'utilisent sous la forme ModuleName.FunctionName(parameters) .

Il est également possible d'importer le contenu du module sous la forme from ModuleName import * et alors les fonctions peuvent être utilisées directement par FunctionName(parameters) .

Python offre par défaut une bibliothèque de plus de deux cents modules qui évite d'avoir àréinventer la roue dès que l'on souhaite écrire un programme. Ces modules couvrent des domainestrès divers: mathématiques (fonctions mathématiques usuelles, calculs sur les réels, sur lescomplexes, combinatoire\dots), administration système, programmation réseau, manipulation defichiers, etc. Ici on en présente seulement quelques-uns, à savoir ce dont on se servira dans lesprojets.

6 Modules

Dans Python seulement quelque fonction mathématique est prédéfinie:

abs(a) Valeur absolue de max(suite) Plus grande valeur de la suitemin(suite) Plus petite valeur de la suiteround(a,n) Arrondi à décimales prèspow(a,n) Exponentiation, renvoi sum(L) Somme des éléments de la suitedivmod(a,b) Renvoie quotient et reste de la division de par

cmp(a,b) Renvoie

Toutes les autres fonctions mathématiques sont définies dans le module math . Commementionné précédemment, on dispose de plusieurs syntaxes pour importer un module:

6.1 Le module math

a

a n

an

a b

−1

0

1

si a < b,

si a = b,

si a > b.

Page 42: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 42/62

In [233]:

In [234]:

Voici la liste des fonctions définies dans le module math :

3.141592653589793

1.2246467991473532e-16

0.0

3.141592653589793

1.2246467991473532e-16

0.0

import math

print(math.pi)

print(math.sin(math.pi))

print(math.log(1.0))

from math import *

print(pi)

print(sin(pi))

print(log(1.0))

Page 43: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 43/62

In [235]:

Out[235]:

['__doc__',

'__file__',

'__loader__',

'__name__',

'__package__',

'__spec__',

'acos',

'acosh',

'asin',

'asinh',

'atan',

'atan2',

'atanh',

'ceil',

'copysign',

'cos',

'cosh',

'degrees',

'e',

'erf',

'erfc',

'exp',

'expm1',

'fabs',

'factorial',

'floor',

'fmod',

'frexp',

'fsum',

'gamma',

'gcd',

'hypot',

'inf',

'isclose',

'isfinite',

'isinf',

'isnan',

'ldexp',

'lgamma',

'log',

'log10',

'log1p',

'log2',

'modf',

'nan',

'pi',

'pow',

'radians',

'sin',

'sinh',

'sqrt',

'tan',

'tanh',

import math

dir(math)

Page 44: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 44/62

Notons que le module définit les deux constantes ( pi ) et ( e ).π e

Ce module propose diverses fonctions permettant de générer des nombres (pseudo-)aléatoires quisuivent différentes distributions mathématiques. Il apparait assez difficile d'écrire un algorithme quisoit réellement non-déterministe (c'est-à-dire qui produise un résultat totalement imprévisible). Ilexiste cependant des techniques mathématiques permettant de simuler plus ou moins bien l'effet duhasard. Voici quelques fonctions fournies par ce module:

random.range(p,n,h) choisit un éléments aléatoirement dans la liste range(p,n,h)random.randint(a,b) choisit un entier aléatoirement dans l'intervalle random.choice(seq) choisit un éléments aléatoirement dans la liste seqrandom.random() renvoie un décimal aléatoire dans random.uniform(a,b) choisit un décimal aléatoire dans

6.2 Le module random […]

[a; b]

[0; 1[

[a; b]

Le tracé de courbes scientifiques peut se faire à l'aide du module matplotlib . Matplotlib est un package complet; pylab et pyplot sont des modules de matplotlib

qui sont installés avec matplotlib . Pylab associe les fonctions de pyplot (pour les tracés) avec les fonctionnalité du module numpy pour obtenir un environnement très proche de celui de MATLAB.

On peut écrire et exécuter des script Python (qui utilisent Matplotlib) en ligne à l'adressehttps://trinket.io/python/a8645625fd (https://trinket.io/python/a8645625fd) Pour l'utiliser, on peut importer le module pylab .

La référence complète de matplotlib est lisible à l'adresse:http://matplotlib.sourceforge.net/matplotlib.pylab.html(http://matplotlib.sourceforge.net/matplotlib.pylab.html) Il est en particulier recommandé de regarderles screenshots (captures d'écrans), qui sont donnés avec le code utilisé pour les générer.

Vous pouvez consulter aussi

http://apprendre-python.com/page-creer-graphiques-scientifiques-python-apprendre(http://apprendre-python.com/page-creer-graphiques-scientifiques-python-apprendre)https://www.courspython.com/introduction-courbes.html(https://www.courspython.com/introduction-courbes.html)

7 Dessiner des courbes avec le module matplotlib

Pour tracer le graphe d'une fonction , Python a besoin d'une grille de points oùévaluer la fonction, ensuite il relie entre eux les points par des segments. Plus les pointssont nombreux, plus le graphe est proche du graphe de la fonction . Pour générer les points on

7.1 1D

f : [a, b] → ℝ xi( , f ( ))xi xi

f xi

'tau',

'trunc']

Page 45: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 45/62

peut utiliser

l'instruction linspace(a,b,n+1) qui construit la liste de éléments

ou l'instruction arange(a,b,h) qui construit la liste de éléments

Voici un exemple avec une sinusoïde:

n + 1

[a, a + h, a + 2h, … , b = a + nh] avec h =b − a

nn = E( ) + 1b−a

h

[a, a + h, a + 2h, … , a + nh]

In [236]:

ou encore

%matplotlib inline

from matplotlib.pylab import *

x = linspace(-5,5,101) # x = [-5,-4.9,-4.8,...,5] with 101 elements

y = sin(x) # operation is broadcasted to all elements of the array

plot(x,y);

#show()

Page 46: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 46/62

In [237]:

On obtient une courbe sur laquelle on peut zoomer, modifier les marge et sauvegarder dansdifférents formats.

On peut même tracer plusieurs courbes sur la même figure. Par exemple, dans la figure suivante,on a tracé la même fonction: la courbe bleu correspond à la grille la plus grossière, la courbe rougecorrespond à la grille la plus fine:

7.1.1 Plusieurs courbes sur le même repère

from matplotlib.pylab import *

x = arange(-5,5,0.1) # x = [-5,-4.9,-4.8,...,5] with 101 elements

y = sin(x) # operation is broadcasted to all elements of the array

plot(x,y);

# show()

Page 47: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 47/62

In [238]:

Pour tracer plusieurs courbes sur le même repère, on peut les mettre les unes à la suite desautres en spécifiant la couleur et le type de trait, changer les étiquettes des axes, donner un titre,ajouter une grille, une légende etc.

Par exemple, dans le code ci-dessous "r-" indique que la première courbe est à tracer en rouge(red) avec un trait continu, et "g." que la deuxième est à tracer en vert (green) avec des points.

from matplotlib.pylab import *

a = linspace(-5,5,5)

fa = sin(a) # matplotlib importe numpy qui redefinie les fonctions de base

plot(a,fa,'b-',label="$f(a)$");

b = linspace(-5,5,101)

fb = sin(b)

plot(b,fb,'r-.',label="$f(b)$" );

legend();

Page 48: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 48/62

In [239]:

Quelques options de pylab :

Line style Color Symbols

- solid line b blue v triangle down symbols

-- dashed line r red > triangle right symbols

: dotted line m magenta + plus symbols

-. dash-dot line k black D diamond symbols

. points g green , pixels

o filled circles c cyan < triangle left symbols

^ filled triangles up y yellow s square symbols

w white x cross symbols

* star symbols

On peut déplacer la légende en spécifiant l'une des valeurs suivantes:

best , upper right , upper left , lower right , lower left , center right , center left , lower center , upper center , center :

from matplotlib.pylab import *

x = linspace(-5,5,101)

y1 = sin(x)

y2 = cos(x)

plot(x,y1,"r-",x,y2,"g.")

legend(['sinus','cosinus'])

xlabel('abscisses')

ylabel('ordonnees')

title('Comparaison de sin(x) et cos(x)')

grid(True)

Page 49: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 49/62

In [240]:

Out[240]:

[-3.141592653589793, 3.141592653589793, -1, 1]

from matplotlib.pylab import *

x = arange(-pi,pi,0.05*pi)

plot(x,sin(x),'co',x,cos(x),'mD')

legend(['sinus','cosinus'],loc='upper left')

axis([-pi, pi, -1, 1]) # axis([xmin, xmax, ymin, ymax])

Page 50: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 50/62

In [4]:

On génère deux fenêtres contenant chacune un graphe:

7.1.2 Plusieurs "fenêtres" graphiques

from matplotlib.pylab import *

a = linspace(-5,5,5)

fa = sin(a)

plot(a,fa,ls='--', lw=3, color="blue", label=r"$f(a)$")

b = linspace(-5,5,10)

fb = sin(b)

plot(b,fb,ls='--', lw=2.0, color="orange", label=r"$f(b)$")

c = linspace(-5,5,101)

fc = sin(c)

plot(c,fc,ls='-.', lw=0.5, color="green", label=r"$f(c)$")

plot([0], [0.5], lw=0.5, marker='o', color="cyan")

text(0, 0.6,r"$\sigma_i$", horizontalalignment='center', fontsize=20)

xlim(-5, 5)

ylim(-1, 1)

yticks([-1, -0.5, 0, 1])

xticks([-4, -2, 0, 2])

xlabel("$x$", fontsize=18)

ylabel("$y$", fontsize=18)

legend(bbox_to_anchor=(1.04,1),loc='upper left', ncol=1, fontsize=14, frame

Page 51: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 51/62

In [242]:

La fonction subplot(x,y,z) subdivise la figure sous forme d'une matrice (x,y) et chaquecase est numérotée, z étant le numéro de la case où afficher le graphe. La numérotation se fait degauche à droite, puis de haut en bas, en commençant par .

7.1.3 Plusieurs repères dans la même fenêtre

1

Out[242]:

[<matplotlib.lines.Line2D at 0x7f4701e3aa20>]

from matplotlib.pylab import *

x = arange(-pi,pi,0.05*pi)

figure(1)

plot(x, sin(x), 'r')

figure(2)

plot(x, cos(x), 'g')

Page 52: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 52/62

In [243]:

Pour afficher une animation on utilisera le module animation de matplotlib . Voici unexemple avec deux méthodes différentes : la première utilise la commande magique %matplotlib inline , la deuxième la commande magique %matplotlib notebook qui

permet d'intéragir avec l'animation.

7.1.4 Animations

Out[243]:

[<matplotlib.lines.Line2D at 0x7f4702bbdcc0>]

from matplotlib.pylab import *

x = arange(-pi,pi,0.05*pi)

figure(figsize=(10, 10), facecolor="#f1f1f1")

# axes coordinates as fractions of the canvas width and height

#left, bottom, width, height = 0.1, 0.1, 0.8, 0.8

#axes((left, bottom, width, height), facecolor="#e1e1e1")

subplot(4,3,1)

plot(x, sin(x), 'r')

subplot(4,3,5)

plot(x, cos(x), 'g')

subplot(4,3,9)

plot(x, x*x, 'b')

subplot(4,3,12)

plot(x, exp(-x*x), 'm')

Page 53: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 53/62

In [257]:

%reset -f

%matplotlib inline

from matplotlib.pylab import *

import matplotlib.animation as animation

from IPython.display import display, clear_output

fig = figure()

axis([0,3,-1,1])

line, = plot([],[],lw=2)

x = linspace(0,3,100)

animate = lambda i: line.set_data(x, cos(2*pi*(x-0.01*i)))

# CI

plot(x,cos(2*pi*x))

# Marche en temps

for i in range(len(x)):

animate(i)

clear_output(wait=True)

display(fig)

clear_output(wait=True)

Page 54: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 54/62

In [258]:

La représentation graphique de l’évolution d’une fonction de deux variables et n'est pas unetâche facile, surtout si le graphique en question est destiné à être imprimé. Dans ce type de cas, ungraphe faisant apparaître les lignes de niveaux de la fonction en question peut être une solutionintéressante et lisible. Commençons donc par considérer l'exemple simple d'une fonction de laforme:

7.2 2D

f x y

f (x, y) =sin( + )x2 y2

+x2 y2

%reset -f

%matplotlib notebook

%matplotlib notebook

from matplotlib.pylab import *

from matplotlib import animation

x = linspace(0,3,100)

# First set up the figure, the axis, and the plot element we want to animat

fig = figure() # initialise la figure

line, = plot([],[],lw=2)

axis([0,3,-1,1])

# Define the initialization function, which plots the background of each fr

# init = lambda : plot([],[])

init = lambda : plot(x,cos(2*pi*x))

# Define the animation function, which is called for each new frame:

animate = lambda i: line.set_data(x,cos(2*pi*(x-0.01*i)))

# call the animator. blit=True means only re-draw the parts that have chang

ani = animation.FuncAnimation(fig, animate, init_func=init, frames=100, bli

# Eventually

# from IPython.display import HTML, Image

# ani.save('animation.gif', writer='imagemagick', fps=60)

# Image(url='animation.gif')

Page 55: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 55/62

Le tracé de cette fonction en courbes de niveaux va nécessiter la création d’un maillagebidimensionnel permettant de stocker l’intervalle de chacune des variables. La fonction destinée àcela s’appelle meshgrid (incluse dans le module NumPy ). On construit donc le maillage enquestion sur le rectangle . La fonction meshgrid fait appel dans ce cas à deuxfonctions linspace pour chacune des variables. z est ici un objet array qui contient lesvaleurs de la fonction sur chaque nœud du maillage.

[−5; 5] × [−5; 5]

f

In [246]:

In [247]:

Pour tracer l’évolution de en lignes de niveaux on utilisera les fonctions contour et contourfavec comme arguments les variables x et y , les valeurs de z correspondantes (eteventuellement le nombre de lignes de niveaux choisit).

f

%matplotlib inline

from matplotlib.pylab import *

x=linspace(-2*pi,2*pi,200)

y=linspace(-2*pi,2*pi,200)

xx,yy = meshgrid(x,y)

z = sin(xx**2 + yy**2) / (xx**2 + yy**2)

imshow(z);

Page 56: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 56/62

In [248]:

In [249]:

In [250]:

Par défaut, ces courbes de niveaux sont colorées en fonction de leur altitude correspondante.z

h = contour(x,y,z)

h = contour(x,y,z,20)

h = contourf(x,y,z,20)

Page 57: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 57/62

S’il n’est pas possible d’utiliser de la couleur, on peut imposer une couleur uniforme pour le grapheet utiliser des labels sur les lignes de niveaux afin de repérer leurs altitudes. La fonction en questions’appelle clabel et prend comme principal argument la variable graphe précédente. La premièreoption inline=1 impose d’écrire les valeurs sur les lignes de niveaux, les deux options suivantesgérant la taille de la police utilisée et le format d’écriture des valeurs.

In [251]:

Pour visualiser un champ de vecteur on pourra utiliser streamplot :

Out[251]:

<a list of 15 text.Text objects>

x=linspace(-2,2,101)

y=linspace(-2,2,101)

xx,yy = meshgrid(x,y)

z = xx**2 + yy**2

graphe4 = contour(x,y,z,8,colors='grey')

clabel(graphe4,inline=1,fontsize=10,fmt='%1.4f')

Page 58: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 58/62

In [252]:

Quand on étudie les propriétés de convergence d'une méthode numérique, on trace souvent desgraphes représentant

l'erreur en fonction de , le pas de discrétisation (par exemple pour une formule dequadrature ou le calcul approchée de la solution d'une EDO);l'erreur en fonction de , le pas d'itération (par exemple pour les méthodes de recherche deszéros d'une fonction).

7.3 Représentations des erreurs: échelles logarithmique et semi-logarithmique

E h

E k

Pour ces graphes on a recours à des représentations en échelle logarithmique ou semi-logarithmique.

Utiliser une échelle logarithmique signifie représenter sur l'axe des abscisses et sur l'axe des ordonnées. Le but de cette représentation est clair: si alors

. En échelle logarithmique, représente donc la pente de laligne droite . Ainsi, quand on veut comparer deux méthodes, celle présentant la pentela plus forte est celle qui a l'ordre le plus élevé (la pente est pour les méthodes d'ordreun, pour les méthodes d'ordre deux, et ainsi de suite).

Il est très simple d'obtenir avec Python des graphes en échelle logarithmique: il suffit de taper loglog au lieu de plot .

(h)log10

(E)log10 E = Chp

(E) = (C) + p (h)log10 log10 log10 p

(E)log10

p = 1p = 2

Par exemple, ci-dessous à gauche on trace des droites représentant le comportement de l'erreur de

Out[252]:

<matplotlib.streamplot.StreamplotSet at 0x7f4702bf5dd8>

x=linspace(-2,2,101)

y=linspace(-2,2,101)

xx,yy = meshgrid(x,y)

z = xx**2 + yy**2

dx = 2*xx

dy = 2*yy

speed = sqrt(dx*dx+dy*dy)

streamplot(xx, yy, dx, dy, density=1.2, color=speed, linewidth=2*speed / sp

Page 59: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 59/62

deux méthodes différentes. La ligne rouge correspond à une méthode d'ordre un, la ligne bleu à uneméthode d'ordre deux. Sur la figure à droite on trace les mêmes données qu'à gauche mais avec lacommande plot , c'est-à-dire en échelle linéaire pour les axes et . Il est évident que lareprésentation linéaire n'est pas la mieux adaptée à ces données puisque la courbe seconfond dans ce cas avec l'axe des quand , bien que l'ordonnéecorrespondante varie entre , c'est-à-dire sur ordres de grandeur.

En générale, on utilise cette approche pour estimer l'ordre de convergence d'une méthodenumérique. Or, dans ces cas, on n'a pas exactement une droite. On peut alors calculer la droite demeilleure approximation au sens des moindres carrés et évaluer la pente de cette droite.

x y

E(h) = h2

x x ∈ [ ; ]10−6 10−2

x ∈ [ ; ]10−12 10−4 8

Page 60: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 60/62

In [268]:

Plutôt que l'échelle log-log, nous utiliserons parfois une échelle semi-logarithmique, c'est-à-dire logarithmique sur l'axe des et linéaire sur l'axe des . Cette représentation est parexemple préférable quand on trace l'erreur d'une méthode itérative en fonction des itérations ou plus généralement quand les ordonnées s'étendent sur un intervalle beaucoup plus grand

que les abscisses. Si avec alors

y x

E

k

E(k) = E(0)C kn C ∈]0; 1[

Pente estimee = 0.899635072418152

Pente estimee = 1.8774398761778017

import random

x = linspace(1.e-6, 1.e-1,100, endpoint=True)

y1 = [xi+random.uniform(-1.e-5,1.e-5) for xi in x]

y2 = [(xi+random.uniform(-1.e-5,1.e-5))**2 for xi in x]

figure(1, figsize=(10, 5))

# log x and y axis

subplot(121)

loglog(x,y1, linewidth=2, color='red',label='$E(h)=h$')

loglog(x,y2, linewidth=2,color='blue',label='$E(h)=h^2$')

axis([1.e-6, 1.e-1, 1.e-12, 1.])

xlabel('ln(h)')

ylabel('ln(E)')

legend(loc='best')

grid(True)

# linear x and y axis

subplot(122)

plot(x,y1, linewidth=2, color='red',label='$E(h)=h$')

plot(x,y2, linewidth=2,color='blue',label='$E(h)=h^2$')

axis([1.e-6, 1.e-1, 1.e-12, 0.1])

xlabel('h')

ylabel('E')

legend(loc='best')

grid(True)

show()

print("Pente estimee =",polyfit(log(x),log(y1),1)[0])

print("Pente estimee =",polyfit(log(x),log(y2),1)[0])

Page 61: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 61/62

, c'est-à-dire une droite si , une parabole si etc. La commande Python pour utiliser l'échelle semi-logarithmique est semilogy .

(E(k)) = (E(0)) + (C)log10 log10 kn log10 n = 1n = 2

Par exemple, ci-dessous on trace à gauche des courbes représentant le comportement de l'erreurde trois méthodes différentes. La ligne rouge correspond à une méthode d'ordre un, la parabolebleu à une méthode d'ordre deux. Sur la figure à droite on trace les mêmes données qu'à gauchemais avec la commande plot , c'est-à-dire en échelle linéaire pour les axes et . Il est évidentque la représentation linéaire n'est pas la mieux adaptée à ces données.

x y

In [254]:

x = linspace(0, 100,100, endpoint=True)

y1 = 10**(-(x))

y2 = 10**(-(x**2))

figure(1, figsize=(10, 5))

# linear x and semilog y axis

subplot(121)

semilogy(x,y1, linewidth=2, color='red',label='$E(k)=10^{-k}$')

semilogy(x,y2, linewidth=2,color='blue',label='$E(k)=10^{-k^2}$')

axis([0, 50, 1.e-10, 1.])

xlabel('k')

ylabel('log(E)')

legend(loc='best')

grid(True)

# linear x and y axis

subplot(122)

plot(x,y1, linewidth=2, color='red',label='$E(k)=10^{-k}$')

plot(x,y2, linewidth=2,color='blue',label='$E(k)=10^{-k^2}$')

axis([0, 50, 1.e-10, 1.])

xlabel('k')

ylabel('E')

legend(loc='best')

grid(True)

Page 62: Ta b l e o f C o n te n ts I P y th o n e t r a p p e l s ...faccanoni.univ-tln.fr/user/enseignements/20182019/M62-CM1.pdf1.2 Références 1.3 Manipulation du notebook 1.4 Mode édition

13/03/2019 M62-CM1

http://localhost:8888/notebooks/Dropbox/Notebook/Perso/M62-new/M62-CM1.ipynb 62/62