Vous êtes sur la page 1sur 133

Outils interactifs libres

d’aide à la création scientifique


Horatio Quadjovie1
sixquah@tg.refer.org

24 avril 2009

1
Copyright c 2005-2008 Quadjovie, Département de mathématiques, (FDS/UL, Togo), BP. 1515 Lomé,
Tél: 002289106688
(H. Quadjovie, FDS/UL, 2009) 2
Table des matières

Introduction 5

1 Survivre sous Linux 7


1.1 Linux sous Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2 Shell d’administration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.3 Accès aux applications de calculs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2 Le formateur de texte LATEX2ǫ 21


2.1 Prise en mains de LATEX2ǫ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.2 Préambule d’un texte d’entrée LATEX2ǫ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.3 Corps d’un texte d’entrée LATEX2ǫ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.3.1 Accents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.3.2 Tailles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.3.3 Paragraphes, commentaires et encadrements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.3.4 Espacements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.3.5 Fontes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.3.6 Environnements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.3.7 Mode mathématique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.3.8 Insertion de graphiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.3.9 Sectionnement d’un travail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.3.10 Bibliographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.3.11 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.3.12 Glossaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.4 Organigrammes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.5 Diagrammes en barres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.6 Confection de transparents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.7 Afficher un document LATEX 2ε sur le Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.8 Rédaction des actes d’un colloque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
2.9 Rédaction d’un curriculum vitæ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
2.10 Gestion de projet avec LATEX 2ε . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
2.10.1 Définition du projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.10.2 Mode illustration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
2.10.3 Beyond the TEXProject Native Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

3 Le traceur Gnuplot 59
3.1 Prise en mains de Gnuplot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.2 Tracer par défaut le graphique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.2.1 Scripts courants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.2.2 Définir ses propres variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
3.2.3 Fichiers de points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
3.3 Personnaliser le graphique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
3.3.1 Généralités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
3.3.2 Autres commandes de set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

3
TABLE DES MATIÈRES

4 Le logiciel de calcul numérique Scilab 69


4.1 Prise en mains de Scilab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
4.1.1 Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
4.1.2 Fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
4.2 Analyse matricielle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
4.3 Représentations graphiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
4.3.1 2D-courbes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
4.3.2 3D-courbes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
4.3.3 3D-surfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
4.4 Equations différentielles ordinaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
4.5 Interpolation de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
4.6 De scilab à octave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

5 Le logiciel de calcul algébrique Macaulay2 81


5.1 Installation manuelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
5.2 Prise en mains de Macaulay2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
5.3 Arithmétique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
5.4 Géométrie des schémas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
5.4.1 Variétés algébriques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
5.4.2 Morphismes de variétés algébriques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
5.5 De Macaulay2 à Singular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

6 Le simulateur Surface Evolver 87


6.1 Prise en mains de Surface Evolver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
6.2 Syntaxe et commandes Evolver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.3 Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.4 Exemples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

7 Le solveur Freefem 101


7.1 Freefem++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
7.1.1 Prise en mains de Freefem++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
7.1.2 Opérateurs de maillage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
7.1.3 Opérateurs de résolution des edp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
7.1.4 Exemples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
7.2 Freefem3d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
7.2.1 Prise en mains de Freefem3d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
7.2.2 Opérateurs de description et résolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
7.2.3 Opérateurs de visualisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
7.2.4 Exemples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110

8 Le logiciel de calcul statistique R 115


8.1 Prise en mains de R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
8.2 Statistique exploratoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
8.2.1 Statistique descriptive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
8.2.2 Analyse de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
8.3 Statistique inférentielle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
8.3.1 Régressions et modèles statistiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
8.3.2 Tests d’hypothèses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
8.3.3 Estimation d’intervalle de confiance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
8.3.4 Re-échantillonnage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
8.4 Prévision statistique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
8.5 Réseaux de neurones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127

9 Le système formel Maxima 129


9.1 Prise en mains de Maxima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
9.2 Primitives Maxima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
9.3 Scripts Maxima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132

Références bibliographiques 133

(H. Quadjovie, FDS/UL, 2009) 4


Introduction
Ce document décrit de manière syntaxique quelques commandes et applications utilitaires Unix très pratiques pour
la recherche mathématique : le shell de survie sous Linux, l’émulateur cygwin de fonctionnalités Linux sous Windows,
le gestionnaire de fichiers tkdesk, les éditeurs vi et emacs, le formateur de texte LATEX 2ε , le traceur gnuplot, le cal-
culateur numérique scilab, le système algébrique macaulay2, le simulateur surfaceevolver, les solveurs freefem++/3d,
le logiciel de statistique R et le système formel maxima. Ces outils permettent l’étude d’exemples compliqués et une
meilleure compréhension des modèles examinés. Ces programmes ne sont pas toujours livrés en standard avec toutes les
distributions Linux.

cygwin permet l’accès aux fonctionnalités d’appel et outils standards Linux (de développement entres autres). Une
distribution cygwin peut également servir de console d’entrée de commandes de shell reconnaissant les spécifica-
tions de chemins Microsoft et/ou Linux et permettant de configurer la plupart des logiciels basés sur le standard
GNU.
TkDesk est un gestionnaire de fichiers sous X-Window avec une interface très agréable, d’utilisation intuitive et offrant
un important degré de personnalisation.
LATEX2ǫ est l’outil de traitement de texte universellement utilisé par tous les scientifiques professionnels. LATEX 2ε est un
ensemble de macros permettant à un auteur de mettre en forme son texte et ses équations mathématiques, avec la
meilleure qualité typographique et en utilisant un format professionnel prédéfini. LATEX 2ε nécéssite quelqu’efforts
d’apprentissage dûs au fait que l’on est à la fois auteur, éditeur et typographe.
Gnuplot est un logiciel libre qui permet de construire des graphiques en 2D ou 3D et d’interpoler graphiquement des
bases de données (traceur de fichiers de points). Il possède, parmi de tels logiciels, les syntaxes les plus simples à
retenir et les plus proches de l’écriture courante. Il est assez puissant pour permettre le dépouillement presqu’en
temps réel de résultats de calculs.
Scilab est un logiciel de calcul numérique distribué librement par l’INRIA. Les polynômes et les matrices polynô-
miales peuvent être définis et la syntaxe utilisée pour les manipuler est identique à celle des vecteurs et matrices
constants. Scilab fournit une variété de primitives pour l’analyse des systèmes non-linéaires. La résolution des
systèmes dynamiques, la définition graphique et la simulation des systèmes hybrides interconnectés complexes,
peuvent s’effectuer numériquement. Scilab offre des facilités d’optimisation numérique dans les cas différentiables,
quadratiques et linéaires. Scilab a un espace de programmation où la création de fonctions et la librairie de fonc-
tions sont entièrement gérées par l’utilisateur. Ces fonctions sont des objets qui, une fois définis, doivent s’afficher
et être manipulables de la même manière que les matrices ou les suites. Enfin, Scilab supporte les données de
type chaînes de caractères et est un interface compatible avec les langages Fortran et C.
Macaulay2 est un outil interactif libre dédié à la création scientifique en géométrie algébrique et algèbre commutative.
Les algorithmes de calculs implémentés dans Macaulay2 permettent la création de tout type d’anneaux, les
opérations arithmétiques sur les anneaux et les matrices, les résolutions projectives de modules, la détermination
de la base de Gröbner, le calcul des séries de Hilbert sur les anneaux gradués ou les modules, le calcul de la
cohomologie des faisceaux cohérents etc.
Surface Evolver est un programme interactif libre conçu pour l’étude des surfaces en mouvement sous l’effet d’une
énergie totale que l’on souhaite minimiser et astreintes à des contraintes d’évolution. Cette énergie peut avoir
plusieurs composantes : tensions superficielles, énergie potentielle gravitationnelle ou énergies générées par les
diverses contraintes. Surface Evolver détermine le mouvement à chaque étape de l’évolution de la manière sui-
vante : la force sur chaque sommet est le gradient de l’énergie totale de la surface ; cette force est rendue conforme
aux contraintes du mouvement ; le déplacement actuel est calculé en multipliant la force par un facteur global
d’échelle.
Freefem++ est un logiciel libre conçu pour aider à la résolution numérique des équations aux dérivées partielles
en 2D par éléments finis triangulaires, avec maillage automatique et adaptatif. Il crée, édite et visualise une
triangulation (ensemble de triangles recouvrant un domaine polygonal correspondant au domaine d’étude Ω, avec
les propriétés : l’intersection de deux triangles ne peut être que vide, un sommet ou une arête entière ; les coins du

5
INTRODUCTION

domaine doivent être des sommets de la triangulation ; les coins du domaine approché doivent être sur la fontière
du domaine initial), représente graphiquement des fonctions sur une triangulation et résoud des edp.
Freefem3d est un logiciel libre conçu pour aider à la résolution numérique des équations aux dérivées partielles en 3D
par la méthode des éléments finis tétraédriques de Galerkin appliquée à la formulation variationnelle du problème,
avec maillage automatique et adaptatif. Il nécéssite la connaissance des logiciels povray pour décrire la géométrie
du domaine de résolution et les cœfficients de discrétisation, medit (sous Windows) et opendx (sous Unix) pour
visualiser graphiquement les solutions du système.
R est l’outil libre d’analyse de données universellement utilisé par tous les statisticiens professionnels. R est un langage
de programmation interactif interprété et orienté objet contenant une très large collection de méthodes statistiques
et des facilités graphiques importantes.
Maxima est un logiciel interactif libre dédié au calcul formel. Il est toujours livré avec une liste de tests donnant un
aperçu complet de ses diverses fonctionnalités.

Puisse la pratique de l’intuition scientifique, l’art de raisonner sur les figures de la pensée, amener les hommes à être
capables d’anticipation, en usant pleinement de leurs aptitudes symboliques, cognitives et imaginatives. Nous espérons
que ces algorithmes vont séduire et motiver, tout en exerçant à la dure discipline de la rigueur.

(H. Quadjovie, FDS/UL, 2009) 6


Chapitre 1

Survivre sous Linux


Le shell est un interpréteur de commande en mode texte, permettant à l’utilisateur de dialoguer avec le noyau. En
shell Linux, la séquence d’échappement standard est Ctrl-C. Pour quitter une commande on pourra presque toujours
utiliser Ctrl-C (sauf pour less et more, pour lesquels, on utilise q). Une option est toujours précédée d’un signe -. Une
option assez générale et bien utile est --help qui fournit généralement une aide sommaire sur les options disponibles
pour la commande. Exemples : ls --help ; cp --help. On notera que les options peuvent être cumulées. Ainsi, au lieu
de taper commande -l -a, on préfèrera commande -la. Toutes les commandes générant une fenêtre graphique doivent
être suivies du & pour pouvoir être exécutée en tâche de fond. L’exécution d’une commande se trouvant dans le reper-
toire courant s’opère par ./nom_commande. L’extinction en mode veille du disque dur de la machine peut être corrigée
dans /etc/default/acpi-support par ACPI-SLEEP=true et ACPI-HYBERNATE=true. La relance d’une connexion coupée
s’ordonne par /etc/initd/networking restart.

1.1 Linux sous Windows


Sous Windows, l’installation de l’émulateur cygwin permet l’accès aux fonctionnalités d’appel et outils standards Li-
nux (de développement entres autres). Une distribution cygwin peut également servir de console d’entrée de commandes
de shell reconnaissant les spécifications de chemins Microsoft et/ou Linux et permettant de configurer la plupart des
logiciels basés sur le standard GNU. Il est doté à l’installation de tous les compilateurs et convertisseurs et il permet
aussi de lancer les exécutables Windows, obtenus après compilation, depuis le shell Linux.

La distribution cygwin-X est une combinaison de l’émulateur cygwin et du mode graphique X (système client ser-
veur qui gère une partie du matériel, qui permet le copier/coller dans toutes les applications et qui gère l’affichage des
applications dans différentes fenêtres). La commande startx &, saisie depuis un terminal cygwin, génère une console
spéciale, à partir de laquelle toutes les applications dépendant d’une session X (telles que xfig, nedit, xdvi etc) peuvent
être activées.

Sous cygwin, il n’est pas prévue de partition swap (mémoire virtuelle ou d’échange en cas de débordement de la
mémoire vive), ni de partition /boot (gérant le système de démarrage) et ni de partition /root (le repertoire du chef).
Par contre, on dispose, en plus des traditionnelles, d’une partition /cygdrive où seront montés les autres disques (cd d:
est équivalent à cd /cygdrive/d/) ne se trouvant pas dans l’arborescence cygwin.

Comme sous Linux, les données seront conservées dans /home, les commandes exécutables dans /bin et les pro-
grammes dans /usr. Les deux commandes de base sont man nom_commande (pages de manuel. Pour obtenir l’aide de
less, taper h) et info nom_commande (défilement : espace, suivant : n, précédant : p, page parente : U, quitter la fenêtre
au bas de la page : Ctrl g).

1.2 Shell d’administration


apt : permet l’installation de packages sous Linux-Débian ou Linux-Ubuntu. Syntaxe : apt-cache search nom_pack
(pour savoir si le package est disponible dans les dépôts activés), apt-get install nom_pack (pour l’installer),
apt-get uninstall nom_pack (pour le supprimer de votre ordinateur), apt-get update nom_pack (pour le mettre
à jour) et apt-get upgrade nom_pack (pour supprimer les anciennes versions).

7
CHAPITRE 1. SURVIVRE SOUS LINUX 1.2. SHELL D’ADMINISTRATION

bash : permet de connaître ce que la machine tente de faire, lorsque qu’elle échoue dans le lancement d’un programme.
Syntaxe : bash -x nom_programme.

cat : par le script cat fichier1 ... fichierN > fichier_initial, reconstitue le fichier initial coupé par split ou
l’utilitaire winKoupe.

cd : (change directory) permet de changer de répertoire. Exemples : cd .. ; cd / ; cd /home/guest ; cd /usr/bin. Uti-


lisée sans argument (cd␣), il ramène au home directory de l’utilisateur.

chmod : (change modality) permet de modifier les permissions, en shell. Exemples : chmod u+r,g+w,o-r,o+x toto
(ajoute à l’utilisateur le droit de lecture, ajoute au groupe le droit d’écriture, enlève au reste du monde le droit
de lecture et leur ajoute le droit d’exécution sur le dossier toto). L’option -R permet d’appliquer les permissions
de façon récursive à tous les sous-dossiers ou sous-fichiers. Pour accorder toutes les permissions à tout le monde
chmod 777 toto

chown : (change owner) permet de modifier le propriétaire d’un fichier ou dossier. Exemples : chown -R nom_prop toto.
L’option -R permet d’appliquer les permissions de façon récursive à tous les sous-dossiers ou sous-fichiers.

convert : Syntaxe convert nom_fichier nom_resultat, pour convertir un fichier image sous un autre format.

cp : (copy) copie un fichier d’un emplacement vers un autre.


cp fichier_source r\’epertoire_destination
cp fichier_source fichier_destination
cp fichier_source1 fichier_source2 ... r\’epertoire_destination
Options : cp -r repertoire_source repertoire_destination (copie récursivement toute l’arborescence située
dans la source vers la destination). cp -i source destination (copie interactive ou sécurisée : vérifie si le fichier
ou répertoire existe déjà). Exemples :
cd /home/guest
cp /home/other_guest/biblio.tex .
cp *.tex article
cp -ri /home/other_guest/article .
cp -ri /home/other_guest/article/ article2
date : affiche la date du jour et l’heure.

df : affiche l’espace libre disponible sur le système.

dmesg : permet de consulter les messages de démarrage ou de lancement d’un programme. Syntaxe : dmesg | less.

dpkg-reconfigure : reconfigure les paquets déjà installés. Exemples, dpkg-reconfigure gnome-volume-manager per-
met de reconfigurer tout le système d’exploitation sous Linux-Debian ou Ubuntu. dpkg -i pmount.deb permet
de reconfigurer le montage automatique des supports externes sous Linux-Debian ou Ubuntu. On peut également
employer la forme dpkg -i --force-depends nom_prog.

du : affiche l’espace occupé par un repertoire ou un fichier sur le disque. Syntaxe : du chemin_repertoire/fichier.
Option : -s donne seulement un résumé.

echo : pour voir les chemins de recherche pour les différentes commandes. Syntaxe : echo $PATH.

export : pour enrichir le chemin de recherche pour une commande. Syntaxe : export PATH=chemin_rep_commande:$PATH.

fdisk : pour lister les disques montés. Syntaxe : fdisk -l. Pour partitionner un disque monté sur /dev/sda1,
saisir l’instruction : cfdisk /dev/sda1 et suivre les instructions. Pour formater fat32 un disque monté sur
/dev/sda1, taper : mkfs.vfat -n nom_disque /dev/sda1. Remarquer que sur un disque formaté fat32, il n’est
possible d’écrire que des données d’au plus 4 Go.

find : pour savoir si une commande existe. Syntaxe : find / -name nom_commande. Pour rechercher si un fichier existe.
Syntaxe : find chemin_dossier_rech nom_fichier.

(H. Quadjovie, FDS/UL, 2009) 8


CHAPITRE 1. SURVIVRE SOUS LINUX 1.2. SHELL D’ADMINISTRATION

free : affiche la mémoire libre disponible.

gzip, gunzip : compresse un fichier. gzip nom_fichier (compresse le fichier et le nomme en nom_fichier.gz) ou
gzip fichier nom_fichier_sortie (compresse le fichier et le nomme nom_fichier_sortie.gz). Pour décom-
presser un fichier, gunzip nom_fichier.gz. Options : gzip -n fichier (où n est un entier allant de 1 à 9 indiquant
le taux de compression -9 : compression maximale). Exemples :
gzip -9 test.tar
gunzip test.tar.gz
Pour les fichiers .zip, utiliser zip et unzip. Pour les fichiers .Z, utiliser compress et uncompress. Pour les
fichiers .bz2, utiliser bzip2 et bunzip2.

–help : affiche les options d’une commande. Syntaxe : nom_commande --help.

hwclock : initialise le jour et la date du système. Syntaxe : hwclock --set --date="11/31/2005 14:20:00".

ispell : vérifie l’orthographe des mots d’un fichier texte et suggère des graphies alternatives. Il ne corrige pas l’ortho-
graphe d’accord ou grammaticale. Syntaxe : ispell -d francais nom_fichier.ext. Lors de l’examen, A pour
accepter le mot pour le reste de la session ispell et Q pour quitter ispell et laisser le fichier intact.

kill : tue un processus en cours d’exécution. Syntaxe : kill -9 num_processus, le numéro PID du processus est obtenu
en tapant ps.

less, more : ces deux commandes permettent de voir le contenu (texte) d’un fichier. less fichier ; more fichier.
Pour parcourir le texte, utiliser les flèches haut et bas. Pour quitter ces modes, taper q. On les utilise souvent
pour la réalisation de tubes, c’est-à-dire la redirection d’une action provoquant un défilement trop rapide et dont
on a raté le début. Exemple : dmesg | less permet de consulter les messages de démarrage.

lpq : permet de connaître l’état de la file d’attente associée à l’imprimante. Syntaxe : lpq.

lpr : imprime tout fichier. Syntaxe : lpr nom_fichier. Option : -K n pour spécifier que n est le nombre de copies à
imprimer ; Par défaut le nombre de copies est 1.

lprm : retire un fichier en attente d’impression. Syntaxe : lprm ..., où ... est le numéro du processus d’impression
(obtenu grâce à la commande lpq). lprm -a all interrompt toutes les impressions en cours ; lprm (sans argument)
la dernière impression lancée.

ls : (list) donne la liste des fichiers contenus dans le répertoire actuel. Sans option, les fichiers dont le nom commence
par un . n’apparaissent pas. Options : ls -la (liste tous les fichiers (y compris ceux dont le nom commence par
un .) en précisant pour chacun d’eux leurs permissions, leur taille, leur date de création ...).

man : appelle une page de manuel. man commande. Exemple : man latex. L’instruction man commande | lpr imprime
la page de manuel correspondant à la commande.

mkdir : (make directory) crée un repertoire (ou dossier). mkdir nom_repertoire. Exemple : mkdir test.

mount : attache le contenu d’un lecteur à l’arborescence. mount chemin_lecteur. Exemple : mount /floppy sous De-
bian et mount /mnt/floppy sous Redhat. L’instruction umount chemin_lecteur démonte le contenu du lecteur
de l’arborescence. Lorsqu’on dispose des droits d’administrateur, l’instruction mount -t vfat /dev/sda1 /usb
permet de configurer le montage d’une clé USB formaté vfat, au point de montage usb créé préalablement à
la racine de l’arborescence, sur la première partition du disque sda. L’administrateur pourra alors autoriser le
propriétaire de la clé USB à pouvoir la monter lui-même en corrigeant le fichier /etc/fstab.

mv : (move) déplace un fichier d’un emplacement vers un autre. mv source destination. Il admet l’option ri (récursive
et sécurisée, comme pour cp). Exemples :
mv fichier1 fichier2
mv fichier repertoire

9 (H. Quadjovie, FDS/UL, 2009)


CHAPITRE 1. SURVIVRE SOUS LINUX 1.2. SHELL D’ADMINISTRATION

passwd : permet à un utilisateur de changer son mot de passe en saisissant passwd suivi de enter. L’administrateur
change le mot de passe d’un utilisateur ayant oublié son mot de passe par passwd nom_utilisateur.

ps : (processes statut) liste les processus en cours lancés par le noyau. Option : -e liste en plus les processus lancés par
les programmes installés ; aux | grep nom_prog liste seulement les processus relatifs à nom_prog.

pwd : (print which directory) donne le chemin du répertoire actuel.

rm : (remove) efface un fichier. rm nom_fichier. Options : rm -r nom_repertoire (efface un répertoire et son contenu).
rm -i nom_fichier (effacement interactif : demande une confirmation. A utiliser par exemple en combinaison
avec -r). rm -f nom_fichier (force l’effacement : aucune confirmation ne sera demandée). Exemples :
rm biblio.tex
rm -ri article
rm -rf article3
split : coupe un fichier en plusieurs fichiers pouvant tenir chacun sur une disquette. split -b 1m fichier. Les fichiers
créés sont par défaut xaa xab ..., x étant le préfixe par défaut. Le script split -b 1m fichier prefixe permet
de fixer soi-même le préfixe. Il admet les options -b=taille en b, k ou m, -l=nombre de lignes. On peut spé-
cifier la taille en octets, split -b 1400000 fichier pour que chaque partition ait une taille 1.4 Mo. Les fichiers
produits par split sous Unix peuvent être réunis sous Windows par l’utilitaire hjsplit (il faut pour cela renom-
mer tous les morceaux suivant la syntaxe : nom_fichier.ext.001,...,nom_fichier.ext.00N).

su : (switch user) permet l’accès aux fonctions multiutilisateurs du système. Exemples : su␣ permet d’accéder au compte
administrateur, su -nom_utilisateur permet d’accéder à un autre compte utilisateur. Une variante est la com-
mande sudo. Exemples d’utilisation : sudo passwd root permet de redéfinir le mot de passe root (depuis un
compte administrateur du système), sudo dpkg-reconfigure gnome-volume-manager --priority=medium per-
met de reconfigurer tout le système d’exploitation, gksudo synaptic permet de lancer l’interface graphique de
suppression et d’ajoût de logiciels. L’installation de Easy Ubuntu permet la configuration automatique de tout le
système et l’installation des paquets ncessaires à une utilisation courante : lecture de la plupart des sons, vidos
(MP3, WMA, AAC, DivX, XviD, AVI, MPEG, Real, ...) et des DVDs, et le navigateur web aura tous les plugins
nécessaires (Flash, Real, Java, ...).

tar : crée ou lit des archives (pouvant contenir des fichiers et des répertoires).
tar cvf nom_archive.tar repertoire1 ... fichier1 ...
tar zcvf nom_archive.tgz liste_fichiers_repertoires
tar xvf nom_archive.tar
tar tvf nom_archive.tar
tar zxvf nom_archive.tgz
Le 1er crée un fichier archive.tar contenant repertoire1 ... fichier1 ... ; le 2e crée une archive compressée
avec gzip ; le 3e extrait une archive, c’est-à-dire rend les fichiers archives ; le 4e lit une archive et donne la liste
des noms des fichiers contenus ; le 5e extrait une archive compressée. Dans toutes ces commandes, le v signifie
verbose (ou bavard), c’est-à-dire que tar affiche une liste des fichiers qu’il est en train d’archiver. Exemples :
tar cvf test.tar lock article
tar zcvf test.tgz lock article
tar ztvf test.tgz
Pour les fichiers .bzip2 substituer j à z.

touch : crée un fichier vide. Syntaxe : touch nom_fichier.extension.

uname : affiche les caractéristiques du système d’exploitation. Syntaxe : uname -a.

vim : pour activer l’éditeur de texte vim, puissant et toujours présent sur les systèmes Unix. A un instant donné, vim
est soit en mode commande, soit en mode insertion. En mode commande, les caractères tapés sont interprétés
comme des commandes d’édition. vim démarre dans ce mode par défaut, il faut donc lui indiquer (commande
i) que l’on veut insérer du texte. En mode insertion, les caractères sont insérés dans le texte édité. On peut
quitter ce mode en pressant la touche ESC (ou Echap sur certains claviers). On appelle vi depuis le shell par :
– vim fichier : édite fichier, (ou :e en mode commande vim).
– vim +n fichier : commence à la ligne n.
– vim -r fichier : récupère fichier après un crash.

(H. Quadjovie, FDS/UL, 2009) 10


CHAPITRE 1. SURVIVRE SOUS LINUX 1.3. ACCÈS AUX APPLICATIONS DE CALCULS

– vim -R fichier : ouvre fichier en lecture seule.


– vim -y fichier : ouvre fichier en mode facile.

Pour les mouvements du curseur (en mode commande), les touches actions flèches déplacent le curseur (ne sont
pas toujours bien configurées).
– ESPACE : permet d’avancer à droite.
– v : commence la sélection.
– D : coupe.
– Y : copie.
– p : colle.
– h : recule à gauche.
– CTRL-n : descend d’une ligne.
– CTRL-p : monte d’une ligne.
– CTRL-b : monte d’une page.
– CTRL-f : descend d’une page.
–nG : va à la ligne n (n est un nombre).

En mode commande, on a les actions suivantes :


– I : au début de la ligne.
– A : à la fin de la ligne.
– r : remplace le caractère sous le curseur.
– x : supprime un caractère à droite.
– X : supprime un caractère à droite.
– dd : éfface la ligne courante.
– /chaine : cherche la prochaine occurrence de la chaine.
– ?chaine : cherche la précédente occurrence de la chaine.

Pour quitter ou sauvegarder, (terminer la commande par la touche Entree) :


– :w : enregistre le fichier.
– :w nom_fichier : enregistre sous nom_fichier.
– :x : enregistre le fichier puis quitte vi.
– :qa! : quitte vi sans sauvegarder les changements.
– !!commande : exécute commande shell sans quitter l’éditeur.
– /texte : recherche une chaîne de caractères.
– :s/anc/nouv/g : recule à gauche.

wget : active un récupérateur réseau non interactif, pouvant servir à aspirer de façon récursive tout un site depuis un ter-
minal. Exemples : wget -r --level=n URL_site, avec une profondeur ne dépassant pas n ou wget -rkpE URL_site,
l’option r spécifiant un téléchargement récursif, l’option k pour faire pointer les liens HTML vers les fichiers lo-
caux, l’option p pour obtenir toutes les images nécessaires à l’affichage de la page HTML et l’option E pour
sauvegarder les documents HTML avec l’extension .html. Lorsque survient une coupure de la connexion, relancer
la commande de téléchargement en rajoutant l’option -c.

which : renvoit le chemin d’accès complet à un programme, which sh donne /bin/sh.

1.3 Accès aux applications de calculs


abiword : pour lancer l’éditeur de texte abiword. Syntaxe : abiword &.

acroread : pour lancer l’éditeur de fichier au format pdf non compressé, (à privilégier pour lancer l’impression d’un
document contenant des importations de fichiers graphiques). Syntaxe : acroread &.

bc : donne accès à un programme servant de calculatrice et très pratique pour toute sorte de calculs sur la console.

11 (H. Quadjovie, FDS/UL, 2009)


CHAPITRE 1. SURVIVRE SOUS LINUX 1.3. ACCÈS AUX APPLICATIONS DE CALCULS

bibus : outil pour chercher, éditer et organiser des références bibliographiques à insérer dans un document préparé à
l’aide de OpenOffice ou Microsoft Word. Il organise les citations selon des clés définies par l’utilisateur, recherche
directement sur les bases de données en ligne (PubMed, eTBLAST) et formate les références selon plusieurs styles
(importés ou créés) de journaux et revues. Pour installer bibus, ajouter son dépôt à la liste des sources et activer
la clé gpg avant de mettre à jour les dépôts, puis installer depuis synaptic :

code
1 deb http://switch.dl.sourceforge.net/sourceforge/bibus-biblio ./
2 deb-src http://switch.dl.sourceforge.net/sourceforge/bibus-biblio ./
3 wget -q http://switch.dl.sourceforge.net/sourceforge/bibus-biblio/pmartino.gpgkey -O-
4 sudo apt-key add -
5 sudo apt-get update
6 sudo apt-get install bibus

Pour la connexion de Bibus à OpenOffice.org, Bibus -> Aide -> Première connexion, puis cliquez sur le bouton
activer, ce qui lance OpenOffice. Acceptez alors l’utilisation des macros et dans le document ouvert, cliquez le
bouton « Accept UNO connections », avant de fermer complètement OpenOffice. Il est conseillé de réduire le niveau
de sécurité dans OpenOffice par : Outils > Options > OpenOffice.org > Sécurité > Sécurité des macros,
puis cliquez sur Niveau de sécurité moyen.

bluefish : pour lancer l’environnement de développement web bluefish. Syntaxe : bluefish &.

cal : affiche la calendrier du mois de l’année spécifiée. Il admet les options -y (pour l’année en cours) et -j (pour le
calendrier julien). cal numero_mois numero_annee.

carmetal : CaRMetal est un logiciel de géométrie dynamique qui permet de travailler sur des figures géométrique,
comme avec une règle et un compas et ainsi découvrir visuellement et ludiquement les règles de géométrie apprises
au collège. Parmi les nombreux aspects intéressants de CaRMetal, on peut distinguer les points suivants :
1. CaRMetal donne automatiquement un nom modifiable à chaque objet créé. Les points sont appelés P1 , P2 ,
P3 , ou A, B, C, les segments S1 , S2 , S3 . Le nom d’un objet peut aussi désigner une propriété numérique
de cet objet (S3 désigne un segment de la figure et sa longueur, poly1 désigne un polygone de la figure et
son aire algébrique). Ainsi, S3 et poly1 peuvent intervenir dans l’écriture de formules, de même que x(A)
et y(A) qui désignent respectivement l’abscisse et l’ordonnée du point A.
2. Les aires des polygones sont algébriques. Cette fonctionnalité, associée à celle exposée dans le paragraphe
suivant, permet en particulier de transformer CARMetal en logiciel de géométrie dans l’espace.
3. CaRMetal offre la possibilité de changer automatiquement l’allure des objets en fonction de certains para-
mètres numériques comme la longueur d’un segment, l’aire d’un polygone ou la valeur de n’importe quelle
fonction.
4. Il est possible d’écrire des formules avec des « si » et même écrire des formules qui contiennent des expressions
du type : (a < 1).(a > 0) qui vaut 1 si a est dans l’intervalle ]0; 1[ et 0 ailleurs.
5. Chaque fois qu’un objet est créé, ses propriétés sont listées dans l’inspecteur d’objets qui apparait au dessus
de la zone de travail. Par exemple, pour un point apparaissent les propriétés suivantes : son nom, sa couleur,
sa forme, ses coordonnées, est-ce un objet caché ou non ?, le nom du point est-il caché ou non ?
6. Chacune des propriétés d’un objet peut être modifiée dans l’inspecteur d’objets. Si l’objet est créé depuis
longtemps, on peut faire réapparaitre ses propriétés en cliquant droit dessus.
7. Dans CaRMetal, les objets tels les polygones, peuvent être créés, soit transparents, soit opaques. Par défaut,
les objets créés sont dans un même plan. Cependant CaRMetal offre aussi la possibilité de créer des objets
les uns en dessous des autres, dans des calques différents. Par exemple, si un triangle est dans le calque n˚1
et si un point est dans le triangle mais dans le calque n˚2 alors le triangle est au dessus du point et celui-ci
est caché si le triangle est opaque. Si le triangle est dans le calque n˚ 2 et le point dans le calque n˚ 1, alors
le point est au dessus du triangle et ne peut être caché. Le plan par défaut est au dessus de tous les calques.
C’est dans l’inspecteur d’objet que l’on peut ranger un objet dans un calque, en indiquant son numéro.
8. CaRMétal offre la possibilité de créer des macros et d’utiliser les macros déjà existantes. Pour utiliser ces
macros, une méthode consiste à faire apparaitre l’inspecteur de macros avec le menu affichage.

chemtool : pour lancer l’assistant permettant de dessiner des molécules organiques et de calculer leur masse. Syntaxe :
chemtool &

(H. Quadjovie, FDS/UL, 2009) 12


CHAPITRE 1. SURVIVRE SOUS LINUX 1.3. ACCÈS AUX APPLICATIONS DE CALCULS

djview : pour lancer la visionneuse de fichier au format djvu. Syntaxe : djview &

egroupware : pour installer un calendrier partagé aptitude install dovecot-imapd exim4 egroupware.

emacs : pour lancer l’éditeur emacs. Syntaxe : emacs &. Emacs est un éditeur de texte avec une interface graphique,
auto-documenté, reparamétrable à souhait et extensible et toujours présent sur les systèmes Unix. Ses commandes
et modes les plus utilisés pour entrer du texte, faire des corrections et sauvegarder un fichier, sont :
– emacs & : active Emacs.
– C-z : met Emacs en mode veille.
– C-x C-c : quitte Emacs.
– C-h (ou F1) : active l’aide.
– C-h t : donne lieu à un tutorial.
– C-x 1 : quitte l’aide.
– C-M-v : permet de se déplacer dans l’aide en ligne.
– C-h a : apropos.

– C-x C-f : lit un fichier.


– C-x < : se déplacer à gauche dans un fichier.
– C-x > : se déplacer à droite dans un fichier.
– C-g : suspend l’exécution d’une commande (est utile pour arrêter une recherche en cours).
– C-x C-s : enregistre un fichier.
– C-x i : insère le contenu d’un autre fichier dans la fenêtre courante.
– C-x C-v : remplace un fichier par un autre.
– C-x C-w : copie dans un fichier spécifié.

– M-x : récupère un fichier perdu lors d’un crash du système.


– C-x u (ou C-_) : annule l’action précédente.
– C-s : recherche en avant du curseur.
– C-r : recherche en arrière du curseur.
– C-M-s : recherche une expression régulière.
– C-M-r : recherche une expression régulière en arrière du curseur.

entité à déplacer en arrière en avant


caractère C-b C-f
mot M-b M-f
ligne C-p C-n
aller en début de ligne (or fin) C-a C-e
phrase M-a M-e
paragraphe M-\{ M-\}
page C-x [ C-x ]
fonction C-M-a C-M-e
aller en haut de la page courante (or en bas) M-< M->

entité à détruire en arrière en avant


caractère (effacer ou non) DEL C-d
mot M-DEL M-d
ligne (to end of) M-0 C-k C-k
phrase C-x DEL M-k

epigrass : pour l’analyse, la visualisation et la simulation de processus épidémiologiques localisés géographiquement.


Il nécessite l’installation des librairies : matplotlib, python-gdal et mysqldb.

eric4 : est une interface de développement pour le langage de programmation Python. Elle est développée en utilisant
les bindings PyQt du kit de développement Qt (pour le GUI) et l’éditeur de texte intégré QScintilla.

evolver : pour lancer le simulateur Surface Evolver, qui minimise l’énergie de surfaces triangulées soumises à des
tensions et contraintes de mouvement. Syntaxe : evolver fichier.fe.

13 (H. Quadjovie, FDS/UL, 2009)


CHAPITRE 1. SURVIVRE SOUS LINUX 1.3. ACCÈS AUX APPLICATIONS DE CALCULS

factor : pour décomposer en facteurs premiers un nombre entier naturel. Syntaxe : factor n.

ffmpeg : pour convertir les fichiers vidéos d’un format à un autre. Syntaxes :
– ffmpeg -i mavideo.flv mavideo.avi (FLV en AVI) ;
– ffmpeg -i mavideo.avi mavideo.flv (AVI en FLV) ;
– mencoder mavideo.wmv -ovc xvid -oac mp3lame -o mavideo.avi (WMV en MPEG-4 (Xvid)).
Pour l’installation, sudo aptitude install ffmpeg mencoder lame. Les librairies suivantes sont nécessaires :
libavformat-dev, libavcodec-dev. Pour connaître les codecs supportés ffmpeg -formats ou mencoder -ovc help.

ff3d : pour lancer le solveur freefem3d. Syntaxe : ff3d fichier.ff.

freefem++ : pour lancer le solveur freefem++. Syntaxe : freefem++ fichier.edp.

gambas : pour disposer d’un environnement de développement similaire à Visual Basic, qui permet de concevoir rapi-
dement des applications graphiques en utilisant le langage facile à apprendre BASIC. Gambas est fourni avec un
éventail d’exemples d’applications.

gcc : pour compiler un programme écrit en langage C. Syntaxe : gcc -Wall nom_fichier.c -o nom_fichier. L’option
-Wall affiche les erreurs de compilation bloquantes et les avertissements. Une manière simple d’exécuter le fichier
de sortie est de copier nom_fichier.exe dans les binaires de CygWin, puis de lancer la commande nom_fichier
depuis le terminal CygWin.

GCourrier : pour établir la traçabilité de flux de courriers et de factures dans une organisation. Il intègre des modules
de recherche, d’archivage, de transmission, d’historique, d’urgence de courriers, de génération d’accusé reception,
de pièces jointes, d’administration etc. Télécharger l’archive sur http://gcourrier.cliss21.com.
Un serveur local est installé par : apache2, mysql-server, php5 et phpmyadmin. On copie alors dans son localhost
(dossier www du serveur installé) le site gcourrier (http://localhost/nom_site), puis on crée une base de données
nommée gcourrier à l’aide de phpmyadmin et on déclare base=’gcourrier’ dans le fichier connexion.php. On se
logue alors sur le site http://localhost/gcourrier/install.php avec l’identifiant admin sans mot de passe (à
définir une fois connecté). On crée pour finir les services, comptes utilisateurs, fournisseurs etc.

gpc : pour compiler un programme écrit en langage C. Syntaxe : gpc nom_fichier.pas -o nom_fichier. Une manière
simple d’exécuter le fichier de sortie est de copier nom_fichier.exe dans les binaires de CygWin, puis de lancer
la commande nom_fichier depuis le terminal CygWin.

g77 : pour compiler un programme écrit en Fortran. Syntaxe : g77 nom_fichier.for -o nom_fichier. Une manière
simple d’exécuter le fichier de sortie est de copier nom_fichier.exe dans les binaires de CygWin, puis de lancer
la commande nom_fichier depuis le terminal CygWin.

gretl : pour lancer l’utilitaire d’analyse économtrique gretl. Ses fonctionnalités en mode graphique sont :
– la méthode des moindres carrées,
– les variables dépendantes discrètes ou tronquées,
– les statistiques descriptives,
– la méthode de Monte-Carlo et le bootstrap,
– l’exportation des résultats vers LATEX.
Il offre la possibilité de lancer le logiciel de statistique R et de soumettre des suggestions écrites dans d’autres
langages tels que fortran, c++, octave, matlab, gauss. Syntaxe : gretl &.

ghostview : pour lancer l’éditeur de fichier au format ps non compressé. Syntaxe : ghostview &.

gnome-art : pour lancer le sélecteur de thèmes pour les interfaces graphiques linux usuels. Syntaxe : gnome-art &.

gnuplot : pour lancer (dans le terminal) l’éditeur de graphiques (courbes, surfaces, interpolations) gnuplot. Syntaxe :
gnuplot.

grass62 : active un système information géographique d’analyse, de gestion de données géospatiales, de production de
cartographie. . . Syntaxe : grass62.

(H. Quadjovie, FDS/UL, 2009) 14


CHAPITRE 1. SURVIVRE SOUS LINUX 1.3. ACCÈS AUX APPLICATIONS DE CALCULS

gv : pour lancer l’éditeur geomview de fichiers aux formats pdf, ps, pdf.gz ou ps.gz. Syntaxe : gv &.

kile : pour lancer l’éditeur (tout un environnement) dédié à LATEX 2ε . Syntaxe : kile nom_fichier.tex &.

k3b : pour lancer le programme de gravure interfaçant cdrecord. Syntaxe : k3b &. Il offre des fonctions avancées telles
que : l’oversize burning (réduction de la zone d’indication de la fin du cd-R), la gravure de cd textes etc.

latex : compile un fichier au format .tex. Syntaxe : latex nom_fichier.tex ou elatex nom_fichier.tex. Lorsque la
compilation s’arrête sur une erreur à corriger, x interrompt la compilation ; r ignore les fautes tout en poursuivant
la compilation de tout le fichier source ; la touche enter ignore la faute et se positionne sur la faute suivante.

bardiag.sty : un style LATEX 2ε , pour la réalisation des diagrammes en barres 2D et 3D. Il nécessite les packages
bardiag.bar, bardiag.cfg et pstfp.sty.

combine : classe dédiée à l’assemblage en un document unique cohérent d’un groupe de textes individuels,
tels que ceux exigés pour les actes d’une conférence. Il s’utilise avec les packages keyval, frenchle, combcite,
combinet et combnat.

dvips : crée un fichier au format ps à partir d’un fichier au format dvi. Options : -p .. -l ... pour ne créer
que les pages qui vont de .. à ... ; Syntaxe : dvips nom_fichier.dvi -o. Pour des impressions en mode paysage
(dans le cas des transparents par exemple), utiliser l’option -t landscape.

flow : pour réaliser un organigramme dans un environnement picture à importer dans un fichier au format
.tex, à partir d’un script .flo compatible avec le package-LATEX 2ε flow. Syntaxe : flow nom_f.flo nom_f.pic.
Pour l’installation du compilateur, exécuter gcc flow.c -o flow.exe sous Cygwin et gcc flow.c -o flow sous
Linux, puis déposer l’exécutable produit (le rendre executable, si nécessaire) dans le dossier /bin sous Cygwin et
/usr/bin sous Linux.

htlatex : convertit un fichier .tex au format .html. Syntaxe : mk4ht htlatex nom_fichier.tex [ nom_f.cfg ],
où nom_f.cfg est un fichier de configuration. Il existe une interface graphique dédiée dénommée SimpleTeX4ht.

moderncv : classe déidée à l’écriture de deux styles de curriculum vitæ. Elle est configurable à souhait et est li-
vrée avec des exemples dont on peut s’inspirer. Les sauts de page sont indiqués par \closesection{}\pagebreak{}
et une rubrique libre par \section{}\closesection.

oolatex : convertit un fichier .tex au format .odt. Syntaxe : mk4ht oolatex nom_fichier.tex. Il existe une
interface graphique dédié dénommée SimpleTeX4ht.

pstplus : pour lancer l’assistant permettant l’écriture de script-LATEX 2ε pstricks en mode graphique. Syntaxe :
pstplus &. Il est conçu pour la réalisation de courbes 2D résolubles en y, de tableaux de variations, de la figure
correspondante à la détermination graphique des premiers termes d’une suite récurrente, de figures géométriques,
d’arbres pondérés, de graphes orientés pondérés, de diagrammes en boîtes et d’histogrammes.

TEXgraph : pour lancer le créateur de graphiques mathématiques (courbes, surfaces, constructions géomé-
triques 2D/3D. . .) destinés à être utilisés dans des documents LATEX 2ε . Syntaxe : startTeXgraph. Le principe
de TEXgraph est de créer des éléments graphiques, chacun portant un nom, défini à partir d’une expression
écrite dans le langage de TEXgraph, et possédant des attributs (couleur, épaisseur. . .). Certains éléments sont
prédéfinis, comme la grille, les axes, les courbes paramétrées, les courbes poly-béziers, les splines, les équations
différentielles etc. Mais on peut aussi créer ses propres éléments graphiques, écrire ses propres fonctions (ou
macros) dans des fichiers (et les importer), et faire du dessin à la souris. L’installation de TEXgraph requiert la
librairie libgdk-pixbuf. En tant que root (ou non), exécutez le script ./install.sh pour installer TEXgraph dans
/usr/local/share/TeXgraph. http://texgraph.forumpro.fr/index.htm est un forum de discussion sur TEXgraph
et on trouvera sur http://melusine.eu.org/syracuse/texgraph plusieurs animations réalisées avec TEXgraph et
swftools.

texmaker : pour lancer l’éditeur dédié à LATEX 2ε . Syntaxe : texmaker nom_fichier.tex &. Ses versions Linux
et Mac incorporent automatiquement le compilateur latex2html.

TEXProject.sty : style de document pour la rédaction de manuels de gestion de projet. Il nécessite les packages
TeXProject.sty, DraTeX.sty, AlDraTeX.sty et wotree.sty, qui sont chargés par : input TeXProject.sty. Il per-
met : le découpage et la description du projet en termes de sous-projets, de tâches, de ressources et de phases de

15 (H. Quadjovie, FDS/UL, 2009)


CHAPITRE 1. SURVIVRE SOUS LINUX 1.3. ACCÈS AUX APPLICATIONS DE CALCULS

projet, la représentation des composantes du projet telles que les dates, la main-d’œuvre, les dépendances, et la
visualisation du projet en réseau Pert (Program evaluation and review technique), en arbres hiérarchiques et en
diagrammes de Gantt.

umrand : pour activer l’extension-LATEX 2ε générant des motifs bordant les cadres (page de titre par exemple).
Syntaxe : \usepackage{umrand}. La définition des commandes suivantes \def\C{\char’}, \font\UA=umranda,
\font\UB=umrandb at 20pt et \font\G = umrandb at 20pt, permet l’accès aux fonctions d’encadrement RandBox,
LinienBox, MeanderBox, EinfachRand. . ..

xdvi : affiche le résultat de la compilation par la commande latex d’un fichier .tex. Syntaxe : xdvi fichier.dvi &.
L’option -s n. produit un affichage correspondant à la taille n..

Lazarus : un environnement de développement d’application (graphique et console) avec le langage Free Pascal.

Lodel : un outil de réalisation, de gestion et de mise en ligne de sites Web pour les périodiques scientifiques. Il permet
entre autres :

1. la conversion des textes d’un format traitement de texte à un format Web, via le styliste-Lodel (s’installe
comme un objet OLE) et Serv00 (se déclare par http://servoo.revues.org , login et mot de passe),
2. la gestion de l’hétérogénéité de types de publications,
3. l’offre de différents types d’accès au site créé, avec des droits différents, selon les types d’utilisateurs :
visiteur, rédacteur, éditeur, administrateur, administrateur Lodel,
4. l’existence de plusieurs statuts de publication : publié, publié protégé, brouillon, différé, prêt à être publier,
5. la génération automatique de l’ensemble des métadonnées dont les publications ont besoin pour être cor-
rectement identifiées, indexées et référencées, notamment par les moteurs de recherche.

Un serveur local est installé par : apache2, mysql-server, php5 et phpmyadmin. On copie alors dans son localhost
(dossier www du serveur installé) le site Lodel (http://localhost/nom_site), puis on déclare successivement :

1. la base Mysql (localhost, root, -),


2. le compte Servoo (URL, login, mot de passe),
3. le compte administrateur (login, mot de passe),
4. le modèle éditorial (prédéfini ou chargé après téléchargement).

Macaulay2 : un outil interactif libre dédié à la création scientifique en géométrie algébrique et algèbre commutative.
Syntaxe : M2. Les algorithmes de calculs implémentés dans Macaulay2 permettent la création et la manipulation
de tout type d’anneaux, les opérations arithmétiques sur les anneaux et les matrices, les résolutions projectives
de modules, la détermination des bases de Gröbner, le calcul des séries de Hilbert sur les anneaux gradués ou les
modules, le calcul de la cohomologie des faisceaux cohérents etc. Pour installer Macaulay2, ajouter au dépôt :
deb http://www.math.uiuc.edu/Macaulay2/Repositories/Ubuntu stable main.

medit : pour visualiser un maillage, et éventuellement des solutions associées. Syntaxe : medit nom_fichier_recup.

moodle : est un logiciel permettant la mise en ligne de parcours d’apprentissage collaboratif, favorisant un cadre de
formation socio-constructiviste. Un serveur local est installé par : apache2, mysql-server, php5 et phpmyadmin.
On copie alors dans son localhost (dossier www du serveur installé) le site moodle (http://localhost/nom_site),
puis on déclare successivement :

1. à partir de http://localhost/nom_site/install.php
2. la base Mysql (localhost, root, root),
3. le super utilisateur (login, mot-de-passe),
4. la mise à jour de la base,
5. le dépôt du fichier de francisation de l’interface : http://localhost/nom_site/lang/fr_utf8 ,
6. la lecture de la documentation sur http://docs.moodle.org/fr/Accueil.

nedit : pour lancer l’éditeur de texte brut nirvana editor. Syntaxe : nedit &.

(H. Quadjovie, FDS/UL, 2009) 16


CHAPITRE 1. SURVIVRE SOUS LINUX 1.3. ACCÈS AUX APPLICATIONS DE CALCULS

OpenERP : pour la gestion intégrée, flexible et modulaire (PGI/ERP) dans tous secteurs pour l’ensemble des fonctions
d’organisation et de gestion des petites, moyennes et grandes entreprises : gestion commerciale, gestion des stocks
et des achats, comptabilité générale et analytique, logistique, production, relation client et fournisseur, ressources
humaines, finance, projet, portail client/fournisseur, gestion électronique de document (GED/DMS). OpenERP
offre un cadre de développement, c’est-à-dire des services techniques informatiques :
1. un serveur de base de données objet pour représenter et mémoriser les objets de gestion et les rendre
accessibles via le réseau ;
2. un workflow qui contrôle l’évolution des objets suivant une procédure ;
3. des formulaires et écrans pour l’interaction avec l’utilisateur ;
4. des états imprimables des objets.
Un module OpenERP est la définition, dans le framework OpenERP, d’une gestion informatisée d’un domaine :
soit d’une spécialité (la compta, la gestion de production), soit d’une activité (la confection, l’agro-alimentaire) ;
sans compter bien-sûr un module de base pour le b.a.ba de la gestion : les utilisateurs, les tiers, les produits, les
sociétés, etc. Il est donc impossible de dire ce que fait précisément OpenERP sans dire dans quel module. Par
exemple, le module ventes permet de définir ses clients, ses prix de produits, d’enregistrer des commandes, de les
imprimer, de les approvisionner et de les faire évoluer jusqu’à satisfaire le client.

Pour installer OpenERP, ajouter son dépôt à la source liste et activer la clé gpg avant de mettre à jour les dépôts
par apt-get update, puis suivre les instructions suivantes :

code
1 deb http://ftp.de.debian.org/debian sid main (depôt instable)
2 deb http://ubuntu.roomandspace.com/ hardy main
3 pg --keyserver pgpkeys.mit.edu --recv-key 1EF6441A18EA94C9
4 gpg -a --export 1EF6441A18EA94C9 | sudo apt-key add -
5
6 sudo apt-get install postgresql-8.3
7
8 sudo apt-get install python-xml python-libxml2 python-libxslt1 python-psycopg python-imaging
9 python-pyparsing python-reportlab graphviz postgresql python-tz python-pyopenssl
10 gs-gpl python-matplotlib python-setuptools xpdf phppgadmin python-turbogears
11 fetchmail phppgadmin python-turbogears fetchmail python-psycopg2 python-lxml
12 build-essential python2.4-dev python-pychart python-pydot
13
14 sudo apt-get install openerp-server openerp-client
15
16 sudo su postgres -c openerp-server
17 openerp-client (depuis un terminal)

Pour installer le serveur et le client GTK manuellement, exécuter les commandes python setup.py build et
sudo python setup.py install dans les dossiers dézippés correspondants téléchargés sur le site officiel de Ope-
nERP. Il existe une riche documentation sur OpenERP sur http://brochures.sisalp.fr.

planner : pour lancer le planificateur de projet planner. Syntaxe : planner &.

pmb : est un système informatisé de gestion de bibliothèques (circulation, catalogage, autorités, éditions, diffusion sélec-
tive de l’information DSI, administration), avec une interface PHP/MySQL libre et opensource et téléchargeable
sur http://www.sigb.net. Un serveur local est installé par : apache2, mysql-server, php5, phpmyadmin et yaz,
ainsi que tous les modules PHP liés à barcode et image (php-image-barcode, php5-imagick, php5-recode, barcode
etc). On copie alors dans son localhost (dossier www du serveur installé) le site pmb (http://localhost/nom_site),
puis on déclare successivement :
1. à partir de http://localhost/nom_site/tables/install.php
2. la base Mysql (localhost, root, -),
3. le compte PMB (bibli, bibli, bibli),
4. le jeu d’exemples (à cocher),
5. le super utilisateur (admin, admin) pour la 1re connexion,
6. la mise à jour de la base (administration, outils, Maj base),

17 (H. Quadjovie, FDS/UL, 2009)


CHAPITRE 1. SURVIVRE SOUS LINUX 1.3. ACCÈS AUX APPLICATIONS DE CALCULS

7. le changement de l’identifiant et du mot de passe administrateur (administration, utilisateurs, super user),


8. le téléchargement de la documentation sur http://www.pmbservices.fr/doc_download.php , puis à décom-
presser dans pmb/doc.
Les principales fonctionnalités sont :
1. circulation : prêts de documents et réservations,
2. catalogage : notices, paniers et étagères,
3. autorités : gestion des auteurs,
4. éditions : codes barres
5. diffusion sélective de l’information DSI : diffusion, bannettes, équations et classement,
6. administration : lecteurs, comité de gestion, importations, sauvegarde et conversions
R : pour lancer (dans le terminal) l’environnement, R, de manipulation de données, de calculs et de facilités graphiques.
Syntaxe : R. Il s’installe depuis synaptic à partir de r-base, r-base-dev, r-base-latex et r-base-html. L’ins-
truction : install.packages(’nom_packages’, dependencies=TRUE), où nom_packages est mis pour Rcmdr, ade4,
ou ade4TkGUI, permet depuis la console-R, d’installer diverses interfaces graphiques pour le logiciel R. Pour les
lancer library(Rcmdr) et ade4TkGUI(F,F).

regina : pour le calcul en théorie des surfaces normales utilisant les procédures et algorithmes d’analyses topologiques
sur les variétés tri-dimensionnelles.

scenari : une suite logicielle libre de conception et d’utilisation de chaînes éditoriales numériques permettant la création
de documents multimédia à usage professionnel. Une chaîne éditoriale est un procédé technologique et méthodo-
logique, issu de la recherche en ingénierie documentaire. L’approche consiste à réaliser un modèle de document,
à assister les tâches de création du contenu et à automatiser leur mise en forme. L’intérêt est de réduire les coûts
de production et de maintenance des contenus, et de mieux contrôler leur qualité.

Pour installer Scenari, ajouter son dépôt à la liste des sources et activer la clé gpg avant de mettre à jour les
dépôts, puis installer depuis synaptic :

code
1 deb http://scenari-platform.org/deb nom_de_distrib main
2 gpg --keyserver subkeys.pgp.net --recv 57137EFADFD726C0
3 gpg --export --armor 57137EFADFD726C0 | sudo apt-key add -

scilab : pour lancer le logiciel de calcul numérique scilab. Syntaxe : scilab &.

scribus : pour lancer le logiciel scribus PAO de conception et de réalisation de magazines, bulletins, publicités, bro-
chures, calendriers et de création de documents PDF intelligents (formulaires, boutons, mots de passe, etc), en
y incorporant directement les script Java. Syntaxe : scribus &. Il fonctionne essentiellement par importation de
textes (.txt), d’images ou d’éléments graphiques dans des blocs indépendants (images, textes et polygones).

spip : est un système de publication sur Internet, adapté à tous types de site Web, avec une interface PHP/MySQL
libre et opensource. Un serveur local est installé par : apache2, mysql-server, php5 et phpmyadmin. On copie alors
dans son localhost (dossier www du serveur installé) le site spip (http://localhost/nom_site), puis on déclare
successivement :
1. à partir de http://localhost/nom_site/ecrire
2. la base Mysql (localhost, root, -),
3. le super utilisateur (surnom, login, mot-de-passe),
4. le téléchargement du squelette sur http://www.spip-contrib.net.

startx : pour ouvrir une session X. Syntaxe : startx.

taskjuggler : est un logiciel de gestion de projet et un assistant à toutes les étapes du projet : estimation, assignation de
ressources, planification des coûts et revenus, gestion des risques, gestion des communications, gestion courante,
du déroulement et des échéances. Des manuels d’utilisation et des gabarits de départ y sont implémentés pour
aider à sa prise en mains. Taskjuggler comprend :

(H. Quadjovie, FDS/UL, 2009) 18


CHAPITRE 1. SURVIVRE SOUS LINUX 1.3. ACCÈS AUX APPLICATIONS DE CALCULS

– des lignes de temps et la possibilité de créer différents scénarios pour un même projet
– des diagrammes
– la gestion des ressources, des contraintes et des coûts, avec des filtres de tâches et la programmation des horaires
– la gestion des responsabilités et des contacts
– l’analyse de risque, etc.

tkdesk : pour lancer le gestionnaire de fichiers sous X-Window tkdesk. Syntaxe : tkdesk &. La version légère de tkdesk
comprend une seule colonne. Elle est moins gourmande en ressources et on en vient souvent à l’utiliser pour les
actions courantes. Les opérations que l’on veut effectuer sur les différents fichiers peuvent être appelées de la
barre de menu, de la barre icône, ou du menu popup (déclenché par un clic du bouton droit sur le nom du
fichier, il propose les options les plus complètes, mettre une image en fond d’écran, ouvrir le fichier dans emacs ou
Netscape, suivant son extension...). De façon générale, on peut facilement copier, déplacer, supprimer, créer des
liens (symboliques ou pas), etc. Il est possible, entre autre, de choisir l’option Info, qui vous donnera accès à une
boite de dialogue vous indiquant le chemin d’accès du fichier, la date de dernière modification, le propriétaire,
son groupe, ses permissions, le nombre de liens hards pointant vers lui, son type. Vous pouvez même taper une
annotation, qui sera alors sauvegardée. Vous pouvez évidemment faire des recherches de fichiers basées sur leurs
annotations (avec expression régulière de plus). Il est aussi possible de compresser, éditer, d’exécuter. Et lorsque
la sélection est un repertoire, vous pouvez le traverser. C’est-à-dire que le sous-menu contiendra les noms de ses
sous-repertoires, et ainsi de suite, en cascade, jusqu’à ce que vous trouviez votre destination (c’est la navigation
rapide dans une arborescence). Les fichiers System et Sounds servent respectivement à paramétrer les couleurs,
les polices utilisées et autres paramètres de base pour le premier et à configurer la gestion des événements sonores
pour le deuxième. Quelques sons sont fournis.

tkdesk possède un éditeur intégré très ergonomique, qui gère les multiples buffers (même repartis sur plusieurs
fenêtres). On peut sélectionner le texte avec la touche shift enfoncée et en déplaçant les flèches, on copie avec
Ctrl-C, on coupe avec Ctrl-X et on colle avec Ctrl-V. Lors de l’édition des fichiers de configuration, la touche
F5 permet la sauvegarde et la prise en compte immédiate des modifications. La touche F6 a le même effet, à
ceci près que l’éditeur ferme ensuite le fichier (et passe automatiquement au prochain fichier, si on a lancé la
commande "éditer tous les fichiers de configuration"). Il faut noter aussi qu’il est possible de "lâcher" sur la barre
d’application des fichiers "attrapés" sur le gestionnaire de fichier (c’est le Drag&Drop). On peut donc envoyer une
image vers xv, ou un texte dans l’éditeur, ou encore un exécutable sur le bouton de l’aide, TkDesk ouvrira alors la
page man correspondante. Le fichier de configuration "AppBar" permet d’y ajouter de nouvelles icônes, que l’on
peut repartir en plusieurs colonnes. À ces icônes seront affectés des menus permettant l’exécution de programmes,
l’ouverture d’un répertoire, la redirection de la sortie d’un programme vers l’éditeur de texte, l’évaluation de la
taille d’un répertoire, l’exécution périodique d’un programme, etc.

vmware player : émule une machine virtuelle ou une image (.wmx) d’un système d’exploitation. Syntaxe : vmplayer &
et on suit les instructions.

winefish : pour lancer l’éditeur dédié à LATEX 2ε , basé sur l’environnement de développement web bluefish. Syntaxe :
winefish &.

xfig : active l’éditeur de dessin xfig. Syntaxe : xfig &.

xmakemol : active l’interface graphique du logiciel de visualisation et de manipulation d’atomes, de molécules et de


systèmes chimiques en dimension trois XMakemol. Syntaxe : xmakemol & ou xmakemol nom_fichier.xyz &. Un
exemple de fichier .xyz est :

code
1 3
2 La molecule d’eau (axes sur l’oxygene sont dessines a l’aide de vecteurs)
3 O 0.0 0.0 0.00 atom_vector 1 0 0 atom_vector 0 1 0 atom_vector 0 0 1
4 H 0.77 0.0 -0.59
5 H -0.77 0.0 -0.59
6
7 3
8 Tri-oxygene (ellipses donnees par des coordonnees et des angles d’Euler)
9 O -4.0 0.0 0.0 ellipse 1.0 2.0 2.0 0.0 90.0 0.0
10 O 0.0 0.0 0.0 ellipse 2.0 1.0 2.0 0.0 90.0 90.0
11 O 4.0 0.0 0.0 ellipse 2.0 2.0 1.0 0.0 0.0 0.0
12

19 (H. Quadjovie, FDS/UL, 2009)


CHAPITRE 1. SURVIVRE SOUS LINUX 1.3. ACCÈS AUX APPLICATIONS DE CALCULS

13 2
14 Na 0.0 0.0 0.0 crystal_origin 0.0 0.0 0.0 crystal_images 5 5 5
15 Cl 2.5 2.5 2.5 crystal_vector 1 5.0 0.0 0.0 crystal_vector 2 0.0 5.0 0.0 crystal_vector 3 0.0 0.0
16
17 4
18 Avec une boite autour de la molecule d’eau
19 O 0.00000000 0.00000000 0.00000000 render_tube
20 H 0.76923955 0.00000000 -0.59357141 bbox_xyz -1.0 1.0 -0.5 0.5 -1.0 0.5
21 H -0.76923955 0.00000000 -0.59357141
22 C 2.33370000 -2.58660000 -0.59480000 render_ball_and_stick

L’unité de longueur est l’angström ; les 1res lignes de chaque panneau (4 panneaux dans l’exemple ci-dessus)
indiquent le nombre d’atomes constituant la molécule, la 2e ligne est un commentaire de description et les lignes
suivantes définissent le symbole et les coordonnées de chaque atome. Il est possible de tracer des vecteurs (3 au
maximum) s’appuyant sur un atome. Des animations peuvent être générées en mouvant d’un panneau à un autre
grâce au menu Control.

xpdf : active le lecteur de fichiers .pdf. Syntaxe : xpdf &.

(H. Quadjovie, FDS/UL, 2009) 20


Chapitre 2

Le formateur de texte LATEX2ǫ

Aujourd’hui LATEX 2ε s’impose comme l’outil de traitement de texte universellement utilisé par tous les scientifiques
professionnels. LATEX 2ε est un ensemble de macros permettant à un auteur de mettre en forme son texte et ses équa-
tions mathématiques, avec la meilleure qualité typographique et en utilisant un format professionnel prédéfini. LATEX 2ε
nécéssite quelqu’efforts d’apprentissage dûs au fait que l’on est à la fois auteur, éditeur et typographe. Ce petit guide se
propose donc de résumer l’utilisation du programme LATEX 2ε et d’aider le débutant en introduisant quelques-unes des
commandes les plus courantes.

Historique 1977 TEX Donald KNUTH


1978 Plain TEX Donald KNUTH
1982 LATEX2.09 Leslie LAMPORT
1994 LATEX 2ε Frank MITTELBACH
Futur LATEX3 Equipe ProjetLATEX3

2.1 Prise en mains de LATEX2ǫ


Au lieu d’avoir un environnement intégré éditant le texte (une interface utilisateur), on dispose (choix délibéré du
concepteur) plutôt de différents programmes qui produisent un fichier d’entrée, qui compilent ce dernier pour générer
un ensemble de fichiers parmi lesquels le fichier de sortie qui prévisualise le document LATEX 2ε produit. Les principales
étapes de la production sont :
1./ on crée un fichier texte nom_fichier.tex (texte d’entrée), ayant l’extension .tex et la structure d’un document
LATEX 2ε , dans le repertoire de travail à l’aide d’un gestionnaire de fichiers (tkdesk, windows explorer...) ;
2./ ensuite, à partir du terminal, on se positionne dans le repertoire de travail avec la commande pwd et l’instruction
cd chemin_repertoire ;
3./ puis on compile le fichier d’entrée avec l’instruction latex nom_fichier.tex (ou elatex nom_fichier.tex). Si la
commande latex signale des erreurs, on arrête la compilation en tapant x puis enter, on corrige l’erreur dans
le fichier d’entrée, et on recompile. Lorsqu’il n’y a plus de message d’erreurs stoppant la compilation, le fichier
de sortie nom_fichier.dvi est alors produit dans le repertoire de travail (Au moins deux compilations sont
nécessaires pour stabiliser les références croisées). La distribution MikTeX propose la commande de compilation
améliorée texify en lieu et place de latex ;
4./ l’instruction xdvi nom_fichier.dvi & permet de visualiser le document LATEX 2ε produit dans une fenêtre gra-
phique. La distribution MikTeX propose la commande de visualisation améliorée yap en lieu et place de xdvi ;
5./ l’instruction dvips nom_fichier.dvi -o convertit nom_fichier.dvi au format postscript (visualisable avec gv ou
ghostview). L’option -t landscape doit être utilisé pour un document écrit en mode paysage et -p .. -l ...
pour que le fichier postscript ne contienne que les pages allant de .. à ... ;
6./ l’instruction ps2pdf nom_fichier.ps convertit nom_fichier.ps au format portable (visualisable avec acroread, gv,
xpdf ou dclick sur icône).
Il est possible d’éffectuer toutes ces étapes à partir d’éditeurs tels que texmaker, texniccenter, crimson, kile,
texmacs ou lyx (les trois derniers ne se lancent qu’en mode graphique X). Ils aident l’auteur à se concentrer uniquement
sur le texte, en saisissant à sa place et par simple click les commandes de mise en forme du document produit ou celles
générant les divers symboles ou caractères spéciaux.

21
CHAPITRE 2. LE FORMATEUR DE TEXTE L
ATEX2ǫ 2.2. PRÉAMBULE D’UN TEXTE D’ENTRÉE L
ATEX2ǫ

2.2 Préambule d’un texte d’entrée LATEX2ǫ


Un document d’entrée LATEX 2ε est un fichier au format .tex, dans lequel toutes les commandes LATEX 2ε commencent
par \ et dont le contenu a la structure :
code
1 \documentclass[liste_options]{nom_classe}
2 ... % "Pr\’eambule"
3 \begin{document}
4 ... % "Corps du document"
5 \end{document}

La commande \documentclass indique le type de document que vous voulez produire. Ses principales options
sont : 11pt, 12pt, french (pour faire respecter les règles de typographie française, celles de l’anglais l’étant par défaut),
twoside (pour une impression recto-verso), a4 (règle la marge pour une impression au format A4), openright (pour
que les pages impaires soient imprimées en recto), landscape (pour une orientation en mode paysage, le mode portrait
étant activé par défaut) et ses principales classes sont article (pour les mini-rapports ; ne gère pas les chapitres),
report (pour les documents plus longs découpés en chapitres), book (pour les livres écrits en recto-verso), beamer (pour
les diaposives vidéoprojetées), letter (pour écrire des lettres), moderncv (pour les cirricula vitæ). Le préambule d’un
document LATEX 2ε est l’endroit où sont saisies les instructions non destinées à être imprimées mais qui influenceront le
style du document entier produit, telles que :

\title{...} : spécifie le titre du document.


\author{...} : cite les auteurs du document.
\date{...} : fixe ou ajuste (avec \today) la date de production du document.
\pagestyle{headings} : met automatiquement le numéro de page et autres informations dans l’en-tête, les pieds de
page sont laissés vides.
\usepackage{liste_extensions} : charge les packages (ou extensions séparées par une virgule) comme fontenc (avec
l’option T1, pour activer l’actuel codage LATEX 2ε des caractères, en particulier <<...>> (ou \og ... \fg) pro-
duit «...»), inputenc (avec l’option latin1 sous Linux, ansinew sous Windows et applemac sous Mac OS, pour
utiliser les lettres accentées du clavier dans le document d’entrée), babel (avec l’option francais, pour adapter
aux conventions typographiques de la langue française), latexsym (pour charger tous les symboles LATEX 2ε ),
graphicx (avec l’option dvips, pour importer des graphismes), color (avec l’option usenames, pour l’utilisation
des couleurs), hyperref (avec l’option colorlinks, pour insérer automatiquement les marques hypertextes dy-
namiques coloriées dans le document produit), lscape (pour définir l’environnement landscape), pifont (pour
définir l’environnement de listes dinglist), multicol (avec \begin{multicols}{nbre_col} ...\end{multicols})
pour produire le texte en plusieurs colonnes sur chaque page, vmargin (pour régler les marges et le format de
papier avec les commandes \setpapersize{A4} et \setmarginsrb{mg}{mh}{md}{mb}{he}{hse}{hp}{hsp}, où m
est mis pour marge, g pour gauche, h pour haut, d pour droite, b pour basse, e pour en-tête, s pour sépara-
tion et p pour pied de page), theorem (avec dans le préambule \theoremstyle{break} pour un changement de
ligne après le titre du théorème), shapepar (avec \diamondpar{texte}, \squarepar{texte}, \heartpar{texte} et
\shapepar\nutshape{texte}, pour produire un paragraphe ayant la forme d’un losange, d’une carré, d’un cœur
ou de la tête d’un boulon respectivement),. . .
\textheight22cm : fixe la hauteur du texte à 22cm.
\textwidth15cm : fixe le largeur du texte à 15cm.
\voffset-0.5cm : déplace texte verticalement (- indique le haut).
\hoffset-1cm : déplace le texte horizontalement (- indique la gauche).
\oddsidemargin3.5cm : fixe la marge gauche pour les pages recto (portant un numéro impair).
\evensidemargin2cm : fixe la marge gauche pour les pages verso (portant un numéro pair).
\def \IR {{\rm I \! R}} : définit les commandes en mode mathématique.
\newtheorem{defi}{\sc{D\’efinition}}[chapter] : définit un environnement mettant en relief l’énoncé d’une asser-
tion (ici une définition).
\newcommand{\cqfd}{\mbox{}\nolinebreak\hfill\rule{2mm}{2mm}} : définit les commandes dans les modes mathéma-
tique et texte.
\renewcommand{\headrulewidth}{0.2cm} : redéfinit une commande déjà existante dans les modes mathématique et
texte.
\setlength{\unitlength}{1mm} : spécifie l’unité de mesure de l’environnement picture.
\linespread{2} : réalise le document en double interligne.
\graphicspath{{/home/comlan/Documents/mosaique/}} : indique le repertoire contenant les graphismes à importer.

(H. Quadjovie, FDS/UL, 2009) 22


CHAPITRE 2. LE FORMATEUR DE TEXTE L
ATEX2ǫ 2.3. CORPS D’UN TEXTE D’ENTRÉE L
ATEX2ǫ

2.3 Corps d’un texte d’entrée LATEX2ǫ


C’est l’endroit où sont saisies (à l’endroit convenable) les instructions destinées à être imprimées, à savoir le texte
du document et les commandes de formatage. Les principales commandes de hiérarchisation du document sont :

\frontmatter : gère les numéros des pages d’avant-propos (pour la classe book).

\maketitle : affiche le titre, les auteurs et la date dans le document de sortie (compose la page de garde).

\tableofcontents : produit et affiche la table des matières dans le document de sortie.

\listoffigures : produit et affiche la liste des figures dans le document de sortie.

\listoftables : produit et affiche la liste des tables dans le document de sortie.

\chapter*{titre_preface} : confectionne une préface (avant-propos, remerciements) avec titre non numéroté.

\mainmatter : retour à une pagination usuelle (pour la classe book).

\begin{abstract} ... \end{abstract} : produit le résumé ...

\part{titre_partie} : sectionne le document en parties et gère automatiquement la numérotation.

\chapter{titre_chapitre} : sectionne le document en chapitres et gère automatiquement la numérotation.

\section{titre_section} : sectionne le document en sections et gère automatiquement la numérotation.

\subsection{titre_sous-section, niveau 1} : sectionne le document en sous-sections et gère automatiquement la


numérotation.

\subsubsection{titre_sous-section, niveau 2} : sectionne le document en sous-sous-sections et gère automatique-


ment la numérotation.

\paragraph{titre_paragraphe} : sectionne le document en paragraphes.

\subparagraph{titre_sous-paragraphe} : sectionne le document en sous-paragraphes.

\backmatter : fin de la pagination usuelle (pour la classe book).

\appendix : indique le début des annexes (chaque annexe commençant par chapter) et gère automatiquement leur
numérotation par des lettres A, B, C. . .

Les autres commandes de bases sont explicitées dans les sections qui suivent.

2.3.1 Accents
Mode texte Mode mathématique
á \’a \acute{a}
à \‘a \grave{a}
â \^a \hat{a}
ä \"a \ddot{a}
ã \~a \tilde{a}
ȧ \.a \dot{a}
ǎ \v a \check{a}
ā a \=a \bar{a} ou \overline{a}
ă \u a \breve{a}
a \b a \underline{a}
¯
a
⁀ \t a \stackrel{\frown}{a}
a̋ \H a
a. \d a
a̧ \c a

23 (H. Quadjovie, FDS/UL, 2009)


CHAPITRE 2. LE FORMATEUR DE TEXTE L
ATEX2ǫ 2.3. CORPS D’UN TEXTE D’ENTRÉE L
ATEX2ǫ

2.3.2 Tailles
Mode texte Mode mathématique

{\Huge ...} Huge {\displaystyle ...}

{\huge ...} huge {\textstyle ...}


{\LARGE ...} LARGE {\scriptstyle ...}
{\Large ...} Large {\scriptscriptstyle ...}
{\large ...} large
{\normalsize ...} normalsize
{\small ...} small
{\footnotesize ...} footnotesize
{\scriptsize ...} scriptsize
{\tiny ...} tiny

Pour une modification de taille sur plusieurs paragraphes, utiliser : \begin{nom_taille} ... \end{nom_taille}.

2.3.3 Paragraphes, commentaires et encadrements


On a les trois possibilités :

Je suis \\ en bonne sant\’e Je pense, Je pense,\\

donc je suis. donc je suis.

La 1re commence une nouvelle ligne et non un paragraphe, la 2e commence un nouveau paragraphe et la 3e laisse une
ligne blanche et commence un nouveau paragraphe. % met en commentaire, \footnote{...} met la note ... en bas de
la page où elle apparaît, \marginpar{texte_marge} met la note dans la marge à hauteur de la ligne où elle apparaît
et \thanks{...} met la note ... en bas de la page de titre (à utiliser exclusivement pour les auteurs). Lorsque l’appel
de note est inopérante dans un environnement, il faut placer son paramètre n à l’endroit par \footnotemark[n] et le
contenu de la note en dehors de l’environnement par \footnotetext{texte_note}. La commande \fbox{...} encadre
..., \fboxrule0.5mm fixe l’épaisseur du trait d’encadrement à 0.5cm et \fboxsep2mm fixe l’écartement entre le cadre et
son contenu à 2mm.

Il est possible de personnaliser les en-têtes et les pieds de pages en chargeant l’extension fancyhdr, en saisissant
dans le préambule les instructions définissant les contenus :

code
1 \pagestyle{fancy}
2 \fancyfoot[C]{\thepage}
3 \fancyfoot[RO]{\bf\tiny (UL, 2005)}
4 \fancyfoot[LE]{\bf\tiny (UL, 2005)}
5 \fancyhead[L]{\bf\tiny\leftmark}
6 \fancyhead[R]{\bf\tiny\rightmark}
7 \renewcommand{\headrulewidth}{0.01cm}
8 \renewcommand{\headwidth}{\textwidth}
9 \renewcommand{\headheight}{3cm}

où C désigne le centre de l’espace réservé pour composer l’en-tête ou le pieds de page ; L sa partie gauche ; R sa partie
droite ; O indique sa validité pour les pages recto ; E indique une spécification pour les pages verso ; \leftmark affiche
le numéro et le titre du chapitre courant ; \rightmark affiche le numéro et le titre de la section courante ; \headheight
fixe la hauteur de l’espace réservé à l’en-tête à la valeur indiquée ; \headwidth fixe l’épaisseur du trait séparant l’en-tête
et le corps du document à la valeur indiquée ; \headrulewidth fixe l’épaisseur du trait séparant l’en-tête et le corps du
document à la valeur indiquée.

(H. Quadjovie, FDS/UL, 2009) 24


CHAPITRE 2. LE FORMATEUR DE TEXTE L
ATEX2ǫ 2.3. CORPS D’UN TEXTE D’ENTRÉE L
ATEX2ǫ

2.3.4 Espacements
Mode texte Mode mathématique
\␣ \; ֒→ a b grand
\hspace{2cm} \: ֒→ a b moyen
\vspace{3cm} \, ֒→ a b petit
\\[5cm] \! ֒→ ab négatif
\hfil \quad ֒→ a b cadratin
\vfil \qquad ֒→ a b 2 cadratins
\hfill
\vfill

\hspace{longueur} : espace horizontal ignoré en fin de ligne.


\vspace{longueur} : espace horizontal ignoré en fin de page.
\hspace*{longueur} : espace horizontal.
\vspace*{hauteur} : espace vertical.
\hfil : espace horizontal élastique.
\vfil : espace vertical élastique.
\hfill : sur une ligne, repousse à la marge gauche tout ce qui se trouve à sa gauche et fait de même à sa droite.
\vfill : sur une page, repousse en haut de page tout ce qui se trouve au dessus et fait de même pour ce qui est
après.
\- : indique, à l’intétrieur d’un mot, l’emplacement de césure correcte (lorsqu’un mot n’est pas correctement coupé
en fin de ligne par LATEX 2ε ).

Les unités de longueurs reconnaissables par LATEX 2ε sont :

sp le scaled point, la plus petite unité de TEX


pt le point (=0,351 mm)
bp le big point, le point postscript
dd le point Didôt (= 0,376 mm)
mm le milimètre
pc le pica (= 4,218 mm)
cc le cicéro (= 4,531 mm)
cm le centimètre
in le inch (= 25,4 mm)
ex la hauteur d’un x minuscule
em la largeur du M majuscule

Les redéfinitions de longueurs s’opèrent par :


\newlength{\nom} (déclare \nom comme une longueur),
\setlength{\nom}{val_longueur} (fixe la valeur de \nom à val_longueur),
\addtolength{\nom}{val_longueur} (ajoute val_longueur à \nom),
\settowidth{\nom}{texte} (fixe la valeur de \nom à la largeur de texte),
\settoheight{\nom}{texte} (fixe la valeur de \nom à la hauteur de texte) et
\settodepth{\nom}{texte} (fixe la valeur de \nom à la profondeur de texte).

Les noms de longueurs courants sont : linespread (espacement entre deux lignes), parindent (longueur de l’alinéa),
parskip (espacement entre deux paragraphes), arraystretch (espacement entre deux lignes d’un tableau) et arraycolsep
(espacement entre deux colonnes d’un tableau).

La redéfinition des macros spécifiques à une langue s’opère par \renewcommand*{\nom_macro}{nouveau_nom}, où


\nom_macro est pris parmi : \abstractname, \appendixname, \bibname, \chaptername, \contentsname, \figurename,
\indexname, \listfigurename, \listetablename, \pagename, \partname, \prefacename, \refname ou \tablename.

2.3.5 Fontes
Il est possible de changer la police par défaut en chargeant dans le préambule l’une des extensions lmodern, fourier,
mathpazo, bookman, helvet, pslatex, newcent, avant, chancery, mathtime, mathptm, mathptmx, charter, euler, pifont
ou utopia. La famille (son allure), la série (son poids et sa largeur), la forme d’une fonte se gèrent dans le corps d’un
document LATEX 2ε par :

25 (H. Quadjovie, FDS/UL, 2009)


CHAPITRE 2. LE FORMATEUR DE TEXTE L
ATEX2ǫ 2.3. CORPS D’UN TEXTE D’ENTRÉE L
ATEX2ǫ

À court terme À long terme


\textrm{} {\rmfamily } romain
\textsf{} {\sffamily } sans sérifications
\texttt{} {\ttfamily } machine à écrire
\textbf{} {\bfseries } gras
\textit{} {\itshape } italique
\textsl{} {\slshape } penché
\textsc{} {\scshape } petites capitales
\textcircled{...} • ou u
Le court terme ne s’applique que sur une ligne de texte, tandis que le long terme a court sur plusieurs lignes de texte.
Citons quelques caractères spéciaux (le symbole e s’obtient par \euro sous l’extension \eurosym) :
\o ֒→ ø \O ֒→ Ø \aa ֒→ å \AA ֒→ Å \dag ֒→ † \ddag ֒→ ‡ \# ֒→ # \$ ֒→ $
\ae ֒→ æ \AE ֒→ Æ \oe ֒→ œ \OE ֒→ Œ \S ֒→ § \& ֒→ & \copyright ֒→ c \pounds ֒→ £
Le package color permet de colorier le texte avec les 8 couleurs par défaut :

black blue cyan green magenta red white ← white yellow

En saisissant dans le préambule les instructions \usepackage[usenames]{color} ou \input{dvipsnam.def}, on a accès


aux 68 couleurs dont les noms suivent :
Apricot Aquamarine Bittersweet Black
Blue BlueGreen BlueViolet BrickRed
Brown BurntOrange CadetBlue CarnationPink
Cerulean CornflowerBlue Cyan Dandelion
DarkOrchid Emerald ForestGreen Fuchsia
Goldenrod Gray Green GreenYellow
JungleGreen Lavender LimeGreen Magenta
Mahogany Maroon Melon MidnightBlue

Mulberry NavyBlue OliveGreen Orange


OrangeRed Orchid Peach Periwinkle
PineGreen Plum ProcessBlue Purple
RawSienna Red RedOrange RedViolet
Rhodamine RoyalBlue RoyalPurple RubineRed
Salmon SeaGreen Sepia SkyBlue
SpringGreen Tan TealBlue Thistle
Turquoise Violet VioletRed White ← White
WildStrawberry Yellow YellowGreen YellowOrange

Le coloriage d’un texte, d’une boîte, de toutes les pages, de la bordure d’une boîte et la composition de nouvelles couleurs
se font alors respectivement par les syntaxes :

\textcolor{nom_couleur}{...} ou {\color{nom_couleur} ...} change la couleur du texte


\colorbox{nom_couleur_fond}{...} crée une boîte de couleur
\pagecolor{nom_couleur} fixe la couleur de toutes les pages suivantes
\fcolorbox[nom_couleur_cadre]{nom_couleur_fond}{...} crée une boîte de couleur encadrée
\definecolor{nouv_nom}{rgb}{p1,p2,p3}
\definecolor{nouv_nom}{cmyk}{p1,p2,p3,p4}
rgb : désigne les noms des couleurs combinées : red, green and blue ;
cmyk : est mis pour cyan, magenta, yellow and black ;
p1,...,p4 : sont les pourcentages dans le mélange des couleurs.

2.3.6 Environnements
\begin{nom_environnement} ... \end{nom_environnement} est la structure de tout environnement et les plus cou-
rants sont : titlepage (pour composer soi-même la page de garde sur une feuille séparée), center (pour centrer), minipage
(pour composer une page miniature à l’intérieur d’une page), \flushleft (pour justifier les lignes à gauche), \flushright
(pour justifier les lignes à droite), array (pour construire des tableaux avec contenus en mode mathématique), tabular
(pour construire des tableaux avec contenus en mode texte), verbatim (pour afficher comme saisi en entrée, verbatim*
marque les espaces), enumerate (pour les listes numérotées), itemize (pour les listes marquées), description (comme

(H. Quadjovie, FDS/UL, 2009) 26


CHAPITRE 2. LE FORMATEUR DE TEXTE L
ATEX2ǫ 2.3. CORPS D’UN TEXTE D’ENTRÉE L
ATEX2ǫ

dans un dictionnaire), verse (pour la poésie), equation (pour numéroter automatiquement les équations), figure (pour
titrer et labelliser un dessin importé), picture (pour définir et gérer un espace de positionnement d’objets importés
ou non ; l’unité de mesure doit être définie par \setlength{\unitlength}{1cm} dans le préambule), thebibliography
(pour confectionner la bibliographie), list (pour lister avec un symbole), table (référencement des tables), slide (pour
délimiter le contenu d’un transparent). Syntaxes :

---------------------------------------------------------------------
\begin{list}{$\clubsuit$}{} ; \begin{minipage}[p]{6cm}
\item ... ...
... \end{minipage}
\end{list}
---------------------------------------------------------------------
\begin{table}[b] ; \begin{picture}(12,6)[h]
\centering \put(1,4){...}
... ...
\label{ref} \end{picture}
\caption{titre}
\end{table}
---------------------------------------------------------------------
\left\{\begin{array}[h]{c@{,}lr|p{6cm}|}
... & ... & ... & ... \\
\hline ... & ... & ... & ... \\
\cline{1-3} ... & ... & ... & ... \\
\multicolumn{2}{r|}{...} & ... & ... \\
... & ... & ... & ...
\end{array}\right.
---------------------------------------------------------------------
z}|{ z}|{ z}|{ z}|{
\multicolumn agglomère en un seul plot plusieurs colonnes et prend |c|l|r|c| comme suit |c| l| r| c| ; l’ins-
truction p{...} fixe à ... la largeur de la colonne correspondante et compose la colonne en mode paragraphe haut ;
@{declaration} remplace l’espace inter-colonnes par declaration ; \left et \right ajuste les délimiteurs, (, ), [, ],
\{, \}, au contenu du tableau ; l’option t (qui indique que le haut du tableau soit positionné sur la ligne de texte) peut
être remplacée par b (qui indique que le bas du tableau soit positionné sur la ligne de texte) ou ommise (dans ce cas,
le tableau est centré sur la ligne de texte) ; | trace une ligne verticale de longueur la hauteur du tableau ; \hline trace
une ligne horizontale de longueur la largeur du tableau ; cline{1-3} trace un segment horizontal couvrant les colonnes
1 à 3 du tableau. L’ajout d’une barre oblique dans la première case d’un tableau se réalise en chargeant l’extension
slashbox, puis en saisissant la commande \backslashbox{..}{...} dans la 1re cellule. On peut aussi :
• fixer l’épaisseur du trait d’encadrement à 0.5mm avec \arrayrulewidth0.5mm.
• en chargeant l’extension array, avoir accès aux instructions m{...} (qui fixe à ... la largeur de la colonne
correspondante et compose la colonne en mode paragraphe centré), et b{...} (qui fixe à ... la largeur de la colonne
correspondante et compose la colonne en mode paragraphe bas).
• redéfinir les puces des environnements itemize ou enumerate en saisissant après la commande \begin{document}
l’instruction \renewcommand{\labelitemi}{nouv_commande} ou \renewcommand{\labelenum1}{nouv_commande}.
• colorier des pannels et lignes d’un tableau, à l’aide des packages colortbl et array qui définissent les commandes
\columncolor et \rowcolor. La syntaxe d’utilisation est :

code
1 \begin{tabular}{!{\color{green}\vline} >{\color{red}\columncolor[gray]{.7}}l|l !{\color{blue}\vline}}
2 ... & ... \\
3 \rowcolor[gray]{.9} ... & ... \\
4 ... & ...
5 \end{tabular}

qui produit :

... ...
... ...
... ...

Un document multicolonne s’obtient à l’aide du package multicol et sa mise en page s’opère de la façon suivante :

27 (H. Quadjovie, FDS/UL, 2009)


CHAPITRE 2. LE FORMATEUR DE TEXTE L
ATEX2ǫ 2.3. CORPS D’UN TEXTE D’ENTRÉE L
ATEX2ǫ

code
1 \usepackage{multicol}
2 \setlength{\columnsep}{...} % largeur de l’espace inter-colonnes
3 \setlength{\columnseprule}{...} % trait vertical de separation
4 \begin{document}
5 \begin{multicols}{nbre_col}[\section{titre}] % 1 < nbre_col < 10
6 ...
7 \end{multicols}

L’extension fancyvrb définit un environnement Verbatim configurable à souhait. Voici quelques paramètres usuels :

\begin{Verbatim}[numbers=left,frame=lines,framesep=3mm,label=\fbox{\emph{code}},rulecolor=\color{Blue}]
....
\end{Verbatim}

qui produit :
code
1 ....
2 ....
3 ....

2.3.7 Mode mathématique


Les formules mathématiques sont saisies entre $...$ lorsque ... doit être inséré sur une ligne de texte et par $$ ...$$
lorsque ... doit être centré sur une ligne séparée. Les fontes mathématiques courantes sont :

\mathcal{...} CALLIGRAPHIE
\mathfrak{...} Euler Fraktur (nécessite le package amsfonts)
\mathbb{...} BLACKBOARD (nécessite le package amsfonts)
\mathversion{bold}$...$\mathversion{normal} ∀x ∈ R

Les environnements mathématiques usuels sont theorem (pour énoncer les définitions, théorèmes, lemmes. . .), equation
(pour numéroter automatiquement une assertion) et eqnarray (pour des formules sur plusieurs lignes numérotées au-
tomatiquement et saisies comme dans l’environnement array à trois colonnes). Ils peuvent tous être réferencés par la
commande \label{nom_reference} et cités dans le corps du document par \ref{nom_reference}, de même que la page
où ils apparaissent par \pageref{nom_reference}. Leur syntaxe est :
code
1 \begin{theorem} \label{nom_reference} ... \end{theorem}

Il est possible de redéfinir l’environnement theorem, en saisissant dans le préambule \newtheorem{..}{...}[....], où ..


est le nom de l’environnement, ... est l’annotation qui le désignera et .... la subdivision de référence pour la numérotation.
Exemple :
code
1 \newtheorem{defi}{\textsc{D\’efinition}}[chapter]

définit l’environnement nommé defi, dont le titre sera Définition suivi de numero_chapitre.numero_definition. Pour
la numérotation, on peut aussi procéder par exemple comme suit :
code
1 \newtheorem{defi}{\textsc{D\’efinition} \thechapter.\thesection.}

qui produira : Définition suivi de numero_chapitre.numero_section.numero_definition. On peut aussi définir le


compteur \thedefi de l’environnement defi de la manière suivante :
code
1 \newcommand{\thedefi}{\arabic{chapter}.\arabic{section}.\arabic{defi}}

(H. Quadjovie, FDS/UL, 2009) 28


CHAPITRE 2. LE FORMATEUR DE TEXTE L
ATEX2ǫ 2.3. CORPS D’UN TEXTE D’ENTRÉE L
ATEX2ǫ

Notons aussi les déclarations : \theoremheaderfont{\rmfamily} et \theorembodyfont{\itshape}. Tous les compteurs


peuvent être reinitialisés avec la commande setcounter{defi}{0} et désactivés par renewcommand{\thenom_env}{}. No-
tons pour la pagination \setcounter{page}{1} et \pagenumbering{...}, où ... peut être arabic, roman, Roman, alph,
Alph. Les nombres ordinaux s’obtiennent par \primo, \secundo, \tertio, \quando={n}, \no, \No, \ier{}, \iere{},
\ieme{}, \up{...}. On a aussi \nombre{...} pour insérer automatiquement des espaces insécables dans les réels.

Les lettres grecques s’écrivent exactement comme dans l’alphabet grec : \alpha ֒→ α ; \beta ֒→ β ; \gamma ֒→ γ ;
\Gamma ֒→ Γ ; \phi ֒→ φ ; \varphi ֒→ ϕ ; \Phi ֒→ Φ ; \psi ֒→ ψ ; \Psi ֒→ Ψ ; \epsilon ֒→ ǫ ; \varepsilon ֒→ ε ;
\theta ֒→ θ ; \vartheta ֒→ ϑ ; \Theta ֒→ Θ ; \pi ֒→ π ; \varpi ֒→ ̟ ; \rho ֒→ ρ ; \varrho ֒→ ̺ ; \sigma ֒→ σ ;
\varsigma ֒→ ς ; \upsilon ֒→ υ ; \Upsilon ֒→ Υ ; \omega ֒→ ω ; \Omega ֒→ Ω. . .

Les opérateurs binaires : \times ֒→ × ; \circ ֒→ ◦ ; \cup ֒→ ∪ ; \cap ֒→ ∩ ; \wedge ֒→ ∧ ; \vee ֒→ ∨ ; \ast ֒→ ∗ ;
\pm ֒→ ± ; \cdot ֒→ · ; \setminus ֒→ \ ; oplus ֒→ ⊕ ; \otimes ֒→ ⊗ ; \div ֒→ ÷ ; \neg ֒→ ¬ ; \models ֒→|=. . .

Les symboles de relation : \le ֒→≤ ; \ge ֒→≥ ; \in ֒→∈ ; \ni ֒→∋ ; \ll ֒→≪ ; \gg ֒→≫ ; \subset ֒→⊂ ; \supset
֒→⊃ ; \perp ֒→⊥ ; \ne ֒→6= ; \equiv ֒→≡ ; \sim ֒→∼ ; \simeq ֒→≃ ; \approx ֒→≈ ; a\equiv b \pmod{n} ֒→ a ≡ b
(mod n) ; \mid ֒→| ; \| ֒→ k . . .

Les flèches : \rightarrow ֒→→ ; (left, up, down, ne, se, nw, sw, updown, hookright, hookleft) ; \Rightarrow ֒→⇒ ;
\mapsto ֒→7→. . .

Les fonctions : \arcsin ֒→ arcsin


√ ; \sinh ֒→ sinh ; \arg\sinh ֒→ arg sinh ; \liminf ֒→ lim inf ; \sup ֒→ sup ; \deg
֒→ deg ; \sqrt{x+y} ֒→ x + y. . .

. .
Les symboles divers : \Im ֒→ ℑ ; \wp ֒→ ℘ ; \hbar ֒→ ~ ; \ldots ֒→ . . . ; \cdots ֒→ · · · ; \vdots ֒→ .. ; \ddots ֒→ . . ;
\forall ֒→ ∀ ; \exists ֒→ ∃ ; \not\exists ֒→6 ∃ ; \neg ֒→ ¬ ; \partial ֒→ ∂ ; \infty ֒→ ∞ ; \emptyset ֒→ ∅ ; \sum
P Q R H
֒→ ; \prod ֒→ ; \int_a^b f(x)\,dx ֒→ ab f (x) dx ; \oint ֒→ ; \langle ֒→ h ; \rangle ֒→i ; \left et \right
pour adapter les délimiteurs (, ), \{, \}, [, ] et . (invisible) à un contenu ; (\bigl,\bigr) ou (\Bigl,\Bigr) ou
(\biggl,\biggr) ou (\Biggl,\Biggr) pour fixer soi-même la taille du délimiteur. . .

Quelques constructions mathématiques : \widetilde{abc} f ; \widehat{abc} ֒→ abc


֒→ abc c ; \underline{abc} ֒→
−→ √
n abc
abc ; \overrightarrow{abc} ֒→ abc ; \sqrt[n]{abc} ֒→ abc ; \frac{abc}{xyz} ֒→ xyz ; \stackrel{f}{\mapsto}
f
֒→7→ ; \rule[2mm]{5cm}{0.5mm} ֒→ ; \overbrace{1 \cdots 1}^{n\ fois}
n f ois
z }| {
֒→ 1 · · · 1 ; \underbrace{1 \cdots 1}_{n\ fois} ֒→ 1 · · · 1 ; \lim\limits_{x\to x_0} f ֒→ lim f ; f’ ֒→ f ′ ;
| {z } x→x0
n f ois
P √
n k ` x´
\sum\limits_{0<i<n} ֒→ ; \root n \of {abc} ֒→ abc ; {k\atop ij} ֒→ ij
; {x\choose y} ֒→ y
;
ˆ ˜ 0<i<n
{x\brack y} ֒→ xy
...

Diagrammes : Ils se construisent à l’aide de la commande xymatrix du package \usepackage[all]{xy}. La commande


\ar se place dans la cellule d’où part la flèche, ^ place le texte au-dessus, _ place le texte en-dessous, | place le
texte sur la flèche et \hole ajoute un petit cercle au centre de la flèche. Plusieurs types de flèches sont disponibles
dans le package, dont des arguments pour incurver vers le haut ou le bas la flèche. Exemple :

code
1 \xymatrix{A \ar[d]^f \ar[dr]_g \ar[drr]|h & & \\ B & C \ar[r]|\hole & D}

produit :
A @P@PPPP
@@ PP
f @ hPPPP
g @
 @ PPP
B C /' D

29 (H. Quadjovie, FDS/UL, 2009)


CHAPITRE 2. LE FORMATEUR DE TEXTE L
ATEX2ǫ 2.3. CORPS D’UN TEXTE D’ENTRÉE L
ATEX2ǫ

2.3.8 Insertion de graphiques


On charge le package graphicx avec l’option dvips, on spécifie (lorsque le graphique ne se trouve pas dans le
repertoire de travail) le chemin d’accès ... au graphique par \graphicspath{{/chemin_rep1}{/chemin_rep2}} dans le
préambule et à l’endroit voulu et on insère le dessin par :
code
1 \begin{figure}[h]
2 \centering
3 \includegraphics[width=3cm,height=3cm,angle=-90]{sphere.ps}
4 \caption{La sph\‘ere $S^2$}
5 \label{Sph}
6 \end{figure}

L’option h (ici) peut être remplacée par p (page séparée), t (haut de page) ou b (bas de page). La commande
figure~\ref{Sph} (saisie à l’endroit voulue) permet de faire référence à la figure correspondante dans le document.
Pour inclure un graphique plusieurs fois dans un document LATEX 2ε , il est conseillé (pour qu’il ne soit pas chargé
plusieurs fois) de le mettre en boîte dans le préambule, puis de l’appeler par :
code
1 \newsavebox{\nom_commande_de_sauvegarde}
2 \sbox{\nom_commande_de_sauvegarde}{\includegraphics{nom_graphique.eps}}
3 \begin{document}
4 \usebox{\nom_commande_de_sauvegarde}
5 \scalebox{h_scale}[v_scale]{\usebox{\nom_commande_de_sauvegarde}}
6 \resizebox{largeur}{!}{\usebox{\nom_commande_de_sauvegarde}}
7 \rotatebox{angle}{\usebox{\nom_commande_de_sauvegarde}}
8 \raisebox{hauteur}{\usebox{\nom_commande_de_sauvegarde}}

L’insertion d’un graphique dans la marge à côté d’un paragraphe s’opère par :
code
1 \usepackage{floatflt}
2 \begin{document}
3 \begin{floatingfigure}{largeur}
4 ...
5 \caption{titre}
6 \label{nom_graphique}
7 \end{floatingfigure}

Notons que l’instruction \hangindent=4cm force un retrait de 4cm par rapport à la marge gauche de tout un paragraphe,
et donc permet de disposer un graphique et un paragraphe côte à côte.

On peut substituer des séquences LATEX 2ε à des annotations alpha ou eqn1 figurant sur un graphique à l’aide de :
code
1 \usepackage{psfrag}
2 ...
3 {\psfrag{alpha}{$\alpha$}
4 \psfrag{eqn1}{$\int_0^\infty\frac{x^2yz}{x^\alpha}{\rm d}x$}
5 \includegraphics{figure.eps}}

2.3.9 Sectionnement d’un travail


Le fichier principal a la structure :
code
1 \includeonly{chap5}
2 \begin{document}
3 \include{intro}

(H. Quadjovie, FDS/UL, 2009) 30


CHAPITRE 2. LE FORMATEUR DE TEXTE L
ATEX2ǫ 2.3. CORPS D’UN TEXTE D’ENTRÉE L
ATEX2ǫ

4 \include{chap1}
5 \include{chap2}
6 \include{chap3}
7 \include{chap4}
8 \include{chap5}

Le travail est sectionné en six fichiers intro.tex, chap1.tex, chap2.tex, chap3.tex, chap4.tex et chap5.tex, plus
le fichier principal qui servira à la compilation. Ces six fichiers ne doivent contenir que le texte de chaque section (pas de
préambule, pas de \begin{document}, pas de \end{document}). La commande \includeonly{chap5} dans le préambule
stipule que seul le chapitre 5 doit être compilé tout en gardant les numérotations contenues dans le document principal
(comme si tout le document avait été compilé).

2.3.10 Bibliographie
Elle est réalisée dans le corps du document par :

code
1 \begin{thebibliography}{99}
2 \addcontentsline{toc}{chapter}{Bibliographie}
3 \bibitem[designation_reference_1]{nom_label_1} references1
4 \bibitem[designation_reference_2]{nom_label_2} references2
5 ...
6 \end{thebibliography}

La commande \cite{nom_label} permet de faire référence à l’ouvrage correspondant au label nom_label. La deuxième
ligne affiche Bibliographie dans la table des matières au format des chapitres. La syntaxe pour introduire une table
intermédiaire au niveau de chaque chapitre est la suivante :

code
1 \usepackage{minitoc}
2 \begin{document}
3 \dominitoc
4 \tableofcontents
5 ...
6 \chapter{titre_chapitre_1}
7 \minitoc
8 ...
9 \chapter{titre_chapitre_dernier}
10 \minitoc

Lorsqu’on dispose de bases de données bibliographiques, il est possible de générer automatiquement la bibliographie à
partir de celles-ci en utilisant le programme BibTEX. Une base de données bibliographiques est un fichier d’extension
.bib qui contient des entrées des types :

code
1 @BOOK @ARTICLE
2 { cle_ouvrage , { cle_ouvrage ,
3 AUTHOR = "..." , AUTHOR = "..." ,
4 TITLE = "..." , TITLE = "..." ,
5 PUBLISHER = "..." , JOURNAL = "..." ,
6 YEAR = "..." [ , YEAR = "..." [ ,
7 VOLUME = "..." , VOLUME = "..." ,
8 SERIES = "..." , NUMBER = "..." ,
9 ADDRESS = "..." , PAGES = "..." ,
10 EDITION = "..." , MONTH = "..." ,
11 MONTH = "..." , NOTE = "..." ]
12 NOTE = "..." ] }
13 }

31 (H. Quadjovie, FDS/UL, 2009)


CHAPITRE 2. LE FORMATEUR DE TEXTE L
ATEX2ǫ 2.3. CORPS D’UN TEXTE D’ENTRÉE L
ATEX2ǫ

code
1 @INPROCEEDINGS @MANUAL
2 { cle_ouvrage , { cle_ouvrage ,
3 AUTHOR = "..." , TITLE = "..." [ ,
4 TITLE = "..." , AUTHOR = "..." ,
5 BOOKTITLE = "..." , ORGANIZATION = "..." ,
6 YEAR = "..." [ , ADDRESS = "..." ,
7 EDITOR = "..." , EDITION = "..." ,
8 VOLUME = "..." , MONTH = "..." ,
9 SERIES = "..." , YEAR = "..." ,
10 PAGES = "..." , NOTE = "..." ]
11 ADDRESS = "..." , }
12 MONTH = "..." ,
13 ORGANIZATION = "..." ,
14 PUBLISHER = "..." ,
15 NOTE = "..." ]
16 }

Un ouvrage de la base de données (composée par les fichiers nom_fichier1,nom_fichier2,...) est alors cité dans
le document d’entrée par \cite{cle_ouvrage} et la bibliographie est composée à l’endroit voulue en y saisissant les
instructions :

code
1 \addcontentsline{toc}{chapter}{Bibliographie}
2 \bibliographystyle{nom_style}
3 \bibliography{nom_fichier1,nom_fichier2,...}
4 \nocite{cle_ouvrage_non_cite1,cle_ouvrage_non_cite2,...) ou \nocite{*}

où la commande \nocite insère dans la bibliographie un ouvrage non cité dans le document LATEX 2ε , et nom_style peut
prendre les valeurs plain (pour trier les ouvrages dans l’ordre alphabétique et les étiqueter par des nombres), unsrt
(pour trier les ouvrages dans l’ordre de leur citation et les étiqueter par des nombres), alpha (pour trier les ouvrages
dans l’ordre alphabétique et les étiqueter par des chaînes de caractères formées à partir du nom de l’auteur et de l’année
de publication) et abbrv (pour trier les ouvrages dans l’ordre alphabétique et les étiqueter par des nombres, mais les
prénoms, noms de mois et de journaux sont abrégés). Pour citer chaque référence suivant sa langue et gérer plusieurs
auteurs, utiliser les instructions :

code
1 \usepackage{babelbib}
2 \usepackage[german,english,french]{babel} % la dernière langue citée en option, étant celle du document
3 ...
4 \begin{document}
5 \bibliographystyle{babplain-fl [,babalpha-fl,babunsrt-fl,bababbrv-fl]}

et dans le fichier .bib, utiliser pour chaque référence l’une des syntaxes suivantes, selon la circonstance :

code
1 author = {prénom particule nom},
2 author = {prénoms1 particule1 nom1 and prénoms2 particule2 nom2 and ... and others},
3 author = {particule nom, prénom},
4 author = {particule nom, extension, prénom},
5 ...
6 language = {nom_langue_reference},
7 url = {lien-URL-reference},

Il ne reste plus qu’à compiler le document d’entrée par latex fichier.tex, puis par BibTEX avec bibtex fichier, et
enfin deux fois par latex fichier.tex. Il existe de nombreux autres styles de bibliographie et de types d’entrées dans
un fichier .bib.

(H. Quadjovie, FDS/UL, 2009) 32


CHAPITRE 2. LE FORMATEUR DE TEXTE L
ATEX2ǫ 2.4. ORGANIGRAMMES

2.3.11 Index
On charge le package makeidx et la commande \makeindex dans le préambule ; ensuite on réalise chaque entrée de
l’index en saisissant \index{mot_entree} juste après le mot à faire entrer dans l’index ; puis on saisit la commande
\printindex à l’endroit où l’on veut insérer l’index ; enfin on compile le document d’entrée comme suit :
code
1 latex nom_fichier.tex
2 makeindex nom_fichier.idx
3 latex nom_fichier.tex

pour afficher l’index dans le document final. Les exemples de clés d’index sont :

Exemples Résultats Commentaires


\index{Energie} Energie, 10 Entrée normale
\index{Energie!Cin\’etique} Cinétique, 12 Sous-entrée de ’Energie’
\index{Energie@\textsf{Energie}} Energie, 10 Entrée formatée
\index{Energie|textbf} Energie, 10 Numéro de page formaté

2.3.12 Glossaire
On charge le package \usepackage[cols=3,toc=true,hyper=true]{glossary} et la commande \makeglossary dans
le préambule ; ensuite on réalise chaque entrée du glossaire en saisissant \glossary{name={...},description={...}}
juste après le mot à faire entrer dans l’index ou \xglossary{name={...},description={...}}{mot_a_indexer}. Puis on
saisit la commande \printglossary à l’endroit où l’on veut insérer le glossaire ; enfin on compile le document d’entrée
comme suit :
code
1 latex nom_fichier.tex
2 makeindex -t nom_fichier.glg -o nom_fichier.gls -s nom_fichier.ist nom_fichier.glo
3 latex nom_fichier.tex

pour afficher l’index dans le document final.

2.4 Organigrammes
Ils sont confectionnés dans un environnement picture à importer dans un fichier .tex, à partir d’un script .flo
compatible avec le package-LATEX 2ε flow. La syntaxe d’utilisation est : flow nom_f.flo nom_f.pic. Pour l’installation
du compilateur, exécuter gcc flow.c -o flow.exe sous Cygwin et gcc flow.c -o flow sous Linux, puis déposer l’exé-
cutable produit (le rendre exécutable, si nécessaire) dans le dossier /bin sous Cygwin et /usr/bin sous Linux. Dans un
script .flo (qui se termine par une ligne blanche), les commentaires sont précédés du symbole %, toutes les commandes
sont saisies après un retour chariot sans alinéa et les contenus des boîtes après un retour chariot suivi d’un
alinéa. L’unité de mesure est spécifiée dans le fichier .tex récepteur par \setlength{\unitlength}{2em}. Par défaut,
une boîte de l’organigramme a pour dimensions 4 et 2, hormis les losanges qui ont pour diagonales 4 et 4. La longueur
par défaut d’un trait de connexion est de 1. La fin d’un trait de contournement d’une ou de plusieurs boîtes est indiquée
par *.
Les boîtes.
Box [x y] : rectangle de longueur x et de largeur y.
Oval [x y] : rectangle à coins arrondis de longueur x et de largeur y.
Tilt [x y] : parallélogramme de longueur x et de hauteur y.
Text [x y] : cadre invisible de longueur x et de largeur y.
Choice [A B C D x y] ou Choice [A . C . x y] : losange à diagonales x et y, et à sommets annotés (pré-
ordonnés).
Les directions.
SetTrack none [arrow line] : connecte les boîtes par rien, une flèche ou un trait respectivement.
Right : aligne les boîtes qui le suivent horizontalement vers la droite.
Left : aligne les boîtes qui le suivent horizontalement vers la gauche.
Up : aligne les boîtes qui le suivent verticalement vers le haut.
Down : aligne les boîtes qui le suivent verticalement vers le bas (c’est la disposition par défaut).

33 (H. Quadjovie, FDS/UL, 2009)


CHAPITRE 2. LE FORMATEUR DE TEXTE L
ATEX2ǫ 2.4. ORGANIGRAMMES

Les positionnements.
TxtPos P1 P2 [~ ~] : positionne le contenu d’une boîte, avec P1 (pour les lignes de texte) et P2 (pour tout le
contenu) mis pour [l], [r], [c]. Le symbole ~ définit un alinéa en début ou fin de ligne.
Tag : stocke en mémoire le positionnement et la taille de la boîte qui le précède dans l’organigramme.
ToTag : retourne récursivement à la position repérée par Tag.
Les traits de contournement.
Right n [*] : segment de longueur n orienté vers la droite.
Left n [*] : segment de longueur n orienté vers la gauche.
Up n [*] : segment de longueur n orienté vers le haut.
Down n [*] : segment de longueur n orienté vers le bas.
Les redimensionnements.
Scale m n : multiplie les dimensions de la boîte qui le suit par m et n respectivement.
Skip m n p q : redéfinit par m et n, les inter-espaces (horizontal et vertical) entre boîtes et multiplie les dimensions
des segments de contournements par p (pour Right et Left) et q (pour Up et Down).
Un exemple.
Toutes les possibilités de tracé y sont représentées :
code
1 Box
2 Contenu 1
3 Oval
4 Contenu 2
5 Tag
6 Box
7 Contenu 3
8 Down 1
9 Box
10 Contenu 4
11 Choice . . Y N
12 Contenu 5
13 Tag
14 Down 1
15 Choice . . Y N
16 Contenu 6
17 Tag
18 Down 1
19 Choice . N . Y
20 Contenu 7
21 Tag
22 Oval
23 Contenu 8
24 ToTag
25 Left 3
26 Up 2
27 Box
28 Contenu 9
29 Box
30 Contenu 10
31 Up 10
32 Right 5 *
33 ToTag
34 Right 1
35 Box
36 Contenu 11
37 Down 2
38 Left 6 *
39 ToTag
40 Right
41 Box
42 Contenu 12
43 Tilt

(H. Quadjovie, FDS/UL, 2009) 34


CHAPITRE 2. LE FORMATEUR DE TEXTE L
ATEX2ǫ 2.4. ORGANIGRAMMES

44 Contenu 13
45 Box
46 Contenu 14
47 Down 2
48 Left 15 *
49 ToTag
50 SetTrack none
51 Down 2
52 Right 8
53 TxtPos [l] [l]
54 Text
55 \textbf{Contenu 15} :
56 exemple d’organigramme
57 avec le package flow
58 sous {\color{DarkOrchid} \LaTeXe}.

35 (H. Quadjovie, FDS/UL, 2009)


CHAPITRE 2. LE FORMATEUR DE TEXTE L
ATEX2ǫ 2.5. DIAGRAMMES EN BARRES

Contenu 1

? 
Contenu 2
 
? Contenu 15 :
exemple d’organigramme
Contenu 3 avec le package flow
sous LATEX 2ε .
-
?
Contenu 4

?
@
@
Y
Contenu 5 @ - - -
Contenu 12  Contenu 13  Contenu 14
@  
@
@ N

?
@
Contenu 10 @
Y -
Contenu 6 @ Contenu 11
6 @
@
Contenu 9 @ N

6
?
@
@
N
Contenu 7 @
@
@
@ Y
? 
Contenu 8
 

2.5 Diagrammes en barres


code
1 \documentclass{nom_classe}
2 ...
3 \usepackage[dvips]{graphicx}
4 \usepackage[usenames]{color}
5 \usepackage[colorlinks]{hyperref}
6 \usepackage{bardiag}
7

(H. Quadjovie, FDS/UL, 2009) 36


CHAPITRE 2. LE FORMATEUR DE TEXTE L
ATEX2ǫ 2.6. CONFECTION DE TRANSPARENTS

8 \CenterWallPaper{1.05}{entete.eps}
9 \wpXoffset-2.5cm
10 \wpYoffset-2cm
11 ...
12 \begin{document}
13 ...
14 \begin{figure}[!htbp]
15 \centering
16
17 \renewcommand{\ActiveBarPrimitive}{\barTDRect}
18 \renewcommand{\frameTD}{1}
19 \renewcommand{\tdx}{0.5}
20 \renewcommand{\tdy}{6}
21
22 \def\onecol{green}
23 \def\twocol{blue}
24 \def\threecol{red}
25 \def\fourcol{yellow}
26 \def\fivecol{brown}
27 \def\sixcol{pink}
28
29 \newpsstyle{diagframestyle}{linewidth=1pt,linecolor=black,fillcolor=white}
30
31 %\bardiagrambegin{diagheight}{diagwidth}{bottomheight}{dbar}{dx}{xunit}{yunit}
32 \bardiagrambegin{17}{500}{3.5cm}{1}{7}{0.7cm}{0.015cm}
33
34 \renewcommand{\barlabelangle}{30}
35
36 \baritem{En poste (6)}{6}{\onecol}
37 \subbaritem{Anciens (1)}{1}{\twocol}
38 \subbaritem{Comptes-services (49)}{49}{\threecol}
39 \subbaritem{Comptes-syst\‘eme (15)}{15}{\fourcol}
40 \subbaritem{Mentions-AUF (4)}{4}{\fivecol}
41 \subbaritem{Enfants-UL (3)}{3}{\sixcol}
42 \baritem{Organismes (9)}{9}{\onecol}
43 \subbaritem{Comptes non-expir\’es-UL}{179}{\twocol}
44 \subbaritem{\textcolor{red}{Comptes expir\’es-UL}}{461}{\threecol}
45 \subbaritem{Etudiants-FOAD (11)}{11}{\fourcol}
46 \subbaritem{Visiteurs (3)}{3}{\fivecol}
47 \subbaritem{Retrait\’es-UL (3)}{3}{\sixcol}
48 \baritem{En poste (9)}{9}{\onecol}
49 \subbaritem{Anciens (4)}{4}{\twocol}
50 \subbaritem{Universit\’e de Kara (2)}{2}{\threecol}
51
52 \bardiagramend{\begin{tabular}{x-annotation}{y-annotation}
53 \end{figure}
54 ...
55 \end{document}

2.6 Confection de transparents


Les classes fournies avec LATEX 2ε sont slides et seminar (qui s’utilise avec les packages semcolor, pstricks,
fancybox, fancyhdr, thumbpdf, slidesec), avec les syntaxes :
code
1 \documentclass[landscape,french]{slides}
2 \usepackage[dvips]{graphicx}
3 \usepackage[usenames]{color}
4 \usepackage{thumbpdf,babel}
5 \input{dvipsnam.def}
6 \pagecolor{nom_couleur}

37 (H. Quadjovie, FDS/UL, 2009)


CHAPITRE 2. LE FORMATEUR DE TEXTE L
ATEX2ǫ 2.6. CONFECTION DE TRANSPARENTS

7 ...
8 \begin{document}
9 \begin{slide} ... \end{slide}
10 ...
11 \begin{note} ... \end{note}
12 \end{document}

code
1 \documentclass[a4,landscape,french]{seminar}
2 \usepackage[dvips]{graphicx}
3 \usepackage[usenames]{color}
4 \usepackage{pstricks,fancybox,fancyhdr,semcolor,slidesec,thumbpdf,babel}
5 \input{dvipsnam.def}
6 \input{seminar.bug}
7 \input{seminar.bg2}
8 \slidewidth15cm
9 \slideheight10cm
10 \slidesmag{taille} % taille entre -5 et 9, le d\’efaut est 4
11 \slideframe{style_encadrement}
12 \newcommand{\SlideColours}[1]{\slideframe[\psset{fillcolor=#1,fillstyle=solid}]{scplain}}
13 \SlideColours{nom_couleur_de_fond}
14 \newslideframe{IMAGE}{\boxput{\rput(0,0){\includegraphics[...]{nom_image_de_fond.eps}}}{#1}}
15 \slideframe*{IMAGE}
16 \graphicspath{{/chemin1_graphiques}{/chemin2_graphiques}}
17 \setslidelength{\unitlength}{...}
18 \renewcommand{\slidestretch}{2} % doubler l’interligne
19 \slidepagestyle{fancy}
20 \renewcommand{\headrulewidth}{0.0cm}
21 \renewcommand{\headwidth}{\textwidth}
22 \fancyfoot[C]{\thepage}
23 \fancyfoot[R]{\bf\tiny nom_auteur, affiliation_auteur}
24 ...
25 \begin{document}
26 \begin{slide}
27 \slideheading{titre_section}
28 \slidesubheading{titre_sous-section}
29 ...
30 \end{slide}
31 \begin{slide*} ... \end{slide*}
32 \begin{slide*}[15cm,10cm] ... \end{slide*}
33 ...
34 \begin{note} ... \end{note}
35 \end{document}

L’astérisque (slide*) permet d’inclure des transparents en mode portrait. Les styles d’encadrements sont : none, plain,
shadow, double, oval (ou scplain, scshadow et scdouble, lorsque l’extension semcolor est chargée). La nouvelle com-
mande \SlideColours permet de choisir la couleur de fond des transparents. Et IMAGE permet de définir une image en
toile de fond des transparents. Il faut prendre soin :
• qu’il n’y ait pas de commandes de hiérarchisation (pour la classe slides),
• qu’il n’y ait pas de commandes créant des flottants (pour la classe slides),
• qu’il n’y ait pas de commandes gérant des sauts de pages (pour la classe slides)
• et de compiler comme suit :
code
1 latex nom_fichier.tex
2 dvips -t landscape nom_fichier.dvi -o
3 ps2pdf nom_fichier.ps

Il est également possible de produire des transparents avec un affichage incrémental comme avec PowerPoint, avec la
classe beamer, qui nécéssite l’installation des extensions pgf (pour la gestion des graphiques) et xcolor (pour la gestion
des couleurs). La syntaxe d’utilisation est la suivante :

(H. Quadjovie, FDS/UL, 2009) 38


CHAPITRE 2. LE FORMATEUR DE TEXTE L
ATEX2ǫ 2.6. CONFECTION DE TRANSPARENTS

code
1 \documentclass[[trans | handout],xcolor=dvipsnames,bigger,hyperref=colorlinks]{beamer}
2 \title[...]{...}
3 \subtitle[...]{...}
4 \author[...]{...}
5 \institute{...}
6 \date{... \\ \pgfimage[width=3cm,height=3cm,angle=00]{nom_sans_extension}}
7 \titlegraphic{\includegraphics[...]{...}}
8 \subject{...}
9 \keywords{...}
10
11 \usetheme{JuanLesPins}
12 %\usetheme[hideothersubsections,width=...,height=...,left]{Goettingen}
13 \usecolortheme{orchid}
14 \usefonttheme[onlysmall]{structurebold}
15 \useinnertheme{rounded}
16 \useoutertheme{shadow}
17
18 \pgfdeclareimage[height=96mm,width=128mm]{nombidon}{ploum}
19 \setbeamertemplate{background}{\pgfuseimage{nombidon}}
20 \logo{\includegraphics[height=...,width=...,angle=...]{sixtu.ps}}
21
22 \setbeamercolor{title}{fg=,bg=Blue!30}
23 \setbeamercolor{author}{fg=BrickRed}
24 %\setbeamercolor{background canvas}{bg=...}
25 \setbeamercovered{transparent}
26 %\setbeamercovered{highly dynamic}
27 \setbeamertemplate{itemize item}{$\clubsuit$}
28 \setbeamertemplate{background canvas}[vertical shading][bottom=white!10,top=yellow!10]
29 %\setbeamertemplate{background canvas}[horizontal shading][left=white!10,right=yellow!10]
30 \setbeamerfont{headline}{family=\sf,series=\bf}
31 \setbeamersize{headline}{\tiny}
32
33 %\AtBeginSection[]{\frame{\frametitle{Sommaire}\tableofcontents[current]}}
34
35 \usepackage{pgf,fancybox,colortbl,multimedia}
36 \input{dvipsnam.def}
37
38 \begin{document}
39 \begin{frame} \titlepage \end{frame}
40 \begin{frame}{...} \tableofcontents[pausesections,pausesubsections] \end{frame}
41 \part{...}
42 \section{...}
43 \subsection{...}
44 \begin{frame}[t,c,l,r,fragile,label=identifiant_feuillet]
45 \frametitle{... \dotfill \insertpagenumber} \framesubtitle{...}
46 \tableofcontents[pausesections]
47
48 \begin{itemize}[<+-| @alert+>]
49 \item<n> ... \item<n-> ... \item<n-m> ... \pause ... \item ...
50 \uncover<n-m>{...} \only<n-m>{...} \invisible<n-m>{} \alt<n-m>{}
51 \end{itemize}
52
53 \begin{block}{...} ... \end{block}
54 \begin{alertblock}{...} ... \end{alertblock}
55 \begin{exampleblock}{...} ... \end{exampleblock}
56
57 \begin{columns}[T]
58 \begin{column}{3cm} ... \end{column}
59 \begin{column}{7cm} ... \end{column}
60 ...
61 \end{columns}

39 (H. Quadjovie, FDS/UL, 2009)


CHAPITRE 2. LE FORMATEUR DE TEXTE L
ATEX2ǫ 2.6. CONFECTION DE TRANSPARENTS

62
63 \alert{...}
64 \structure{...}
65
66 \begin{definition} ... \end{definition}
67 \begin{theorem} ... \end{theorem}
68 \begin{lemma} ... \end{lemma}
69 \begin{example} ... \end{example}
70 \begin{examples} ... \end{examples}
71 \begin{corollary} ... \end{corollary}
72 \begin{proof} ... \qedhere \end{proof}
73
74 \label{identifiant_feuillet}
75 \hyperlink{identifiant_feuillet}{\beamerbutton{...}}
76 \hyperlink{identifiant_feuillet}{\beamergotobutton{...}}
77 \hyperlink{identifiant_feuillet}{\beamerreturnbutton{...}}
78 \hyperlink{identifiant_feuillet}{\beamerskipbutton{...}}
79
80 \begin{tabular}{lcccc}
81 Class & A & B & C & D \\\hline
82 X & 1 & 2 & 3 & 4 \pause\\
83 Y & 3 & 4 & 5 & 6 \pause\\
84 Z & 5 & 6 & 7 & 8
85 \end{tabular}
86
87 \begin{tabular}{lc<{\onslide<2->}c<{\onslide<3->}c<{\onslide<4->}c<{\onslide}c}
88 Class & A & B & C & D \\
89 X & 1 & 2 & 3 & 4 \\
90 Y & 3 & 4 & 5 & 6 \\
91 Z & 5 & 6 & 7 & 8
92 \end{tabular}
93
94 \end{frame}
95
96 \appendix
97 \end{document}

Les thèmes de présentations disponibles sont :

Antibes Bergen Berkeley Berlin Boadilla Boxes Copenhagen


Darmstadt default Dresden Frankfurt Goettingen Hannover Ilmenau
JuanLesPins Luebeck Madrid Malmoe Marburg Montpellier PaloAlto
Pittsburgh Rochester Singapore Szeged Warsaw AnnArbor

Les couleurs associées à ces thèmes de présentations se définissent par :

albatross beetle crane default dolphin


dove fly lily orchid rose
seagull seahorse sidebartab structure whale
wolverine

Les fontes associées à ces thèmes de présentations se déclarent par :

default professionalfonts serif structurebold structureitalicserif structuresmallcapsserif

Les corps du transparent associés à ces thèmes de présentations se déclarent par :

circles default inmargin rectangle rounded

Les bordures du transparent associées à ces thèmes de présentations se définissent par :

default infolines miniframes shadow sidebar


smoothbars smoothtree split tree

(H. Quadjovie, FDS/UL, 2009) 40


CHAPITRE 2. LE FORMATEUR DE TEXTE L
ATEX2ǫ 2.7. AFFICHER UN DOCUMENT L
ATEX 2ε SUR LE WEB

L’extension extsize définit les options (8pt, 9pt, 10pt, 14pt, 17pt, 20pt) de \documentclass fixant la taille des caractères.
Les commandes \section, \subsection (à placer à l’extérieur de l’environnement frame) servent uniquement à créer
le sommaire visible dans la bande de navigation. L’option hideothersubsections n’affiche dans la barre de navigation
que les sous-sections de la section courante, les autres étant cachés. L’environnement block permet de donner un titre
à un ensemble de lignes d’un transparent. L’instruction \pause sépare les couches à afficher successivement sur le
même transparent et \item<n-> induit l’affichage du contenu sur le ne transparent et les suivants. Les codes verbatim
doivent être insérés dans \begin{frame}[fragile] ... \end{frame}. Pour obtenir une version imprimée, utiliser le
mode \mode<handout>. Pour obtenir une version rétro-projetée, utiliser le mode \mode<trans>. Les autres outils utilisés
dans l’affichage incrémental sont : \only, \uncover, \alt, \temporal et les arguments optionnels ajoutés entre < et >
par la classe beamer à toutes les commandes LATEX 2ε . Il faut compiler comme suit : pdflatex nom_fichier.tex ou
code
1 latex nom_fichier.tex
2 dvips -t landscape -P pdf nom_fichier.dvi -o
3 ps2pdf nom_fichier.ps

2.7 Afficher un document LATEX 2ε sur le Web


Le convertisseur TEX4ht, est à ce jour, le seul traducteur html qui peut revendiquer comprendre tout code LATEX
et qui est totalement paramétrable par l’utilisateur. Par défaut, la conversion s’opère par l’instruction :
code
1 mk4ht htlatex nom_fichier.tex

et les liens hypertextuels par :


• url{http://www.tg.refer.org} pour le référencement de sites Internet,
• href{mailto:sixquah@tg.refer.org}{Horatio} pour les contacts,
• href{/home/wissel/nom_fichier.pdf}{nom_fichier.pdf} pour permettre les téléchargements de fichiers.

Pour une bonne gestion des formules par le moteur TEX4ht, les environnements mathématiques doivent être spécifiés
par \(...\) et \[...\] en lieu et place de $...$ et $$...$$ respectivement.

On peut aisément modifier l’apparence du document html produit,


• soit en insérant des balises html (éléments, attributs ou caractères html) dans le fichier .tex à l’aide des
commandes \HCode{<elt attr=valeur>} ... \HCode{</elt>}, \HChar{nombre} ou \HPage{titre} ... \EndHPage{},
◦ \HChar{156} pour œ
◦ \HChar{160} pour un blanc
◦ \HCode{<B>}...\HCode{</B>} pour le gras
◦ \HCode{<I>}...\HCode{</I>} pour l’italique
◦ \HCode{<CODE>}...\HCode{</CODE>} pour le tel écrit tel écran
◦ \HCode{<CENTER>}...\HCode{</CENTER>} pour centrer
◦ \HCode{<HR width=... size="...">} pour le trait horizontal formaté
◦ \HCode{<BR>}
◦ \HCode{<BUTTON>}...\HCode{</BUTTON>}
◦ \HCode{<FONT face="verdana">}..\HCode{</FONT>} pour la police de caractère
◦ \HCode{<FONT size="6">}...\HCode{</FONT>} pour la taille de la police
◦ \HCode{<FONT color=Orange>}...\HCode{</FONT>} pour la couleur
◦ \HPage{titre} ... \ExitHPage{Retour} \EndHPage{} pour définir un lien hypertexte vers une page
affichant ... avec un bouton Retour.
• soit au moyen d’un fichier de paramétrage que l’on peut nommer nom_fichier.cfg et ayant, par exemple, la
structure :
code
1 \Preamble{html,2,frames,jpg,info}
2
3 \Configure{crosslinks}{gauche}{droite}{suiv}{prec}{}{debut}{fin}{accueil}
4
5 \Configure{frames}{\HorFrames[frameborder="NO"]{*,3*} \Frame[ name="tex4ht-menu" ]{tex4ht-toc}%
6 \Frame[ name="tex4ht-main" ]{tex4ht-body}\EndFrames}{...\let\contentsname=\empty \tableofcontents}
7

41 (H. Quadjovie, FDS/UL, 2009)


CHAPITRE 2. LE FORMATEUR DE TEXTE L
ATEX2ǫ 2.8. RÉDACTION DES ACTES D’UN COLLOQUE

8 \Configure{tableofcontents}{avant}{fin}{apres}{\HCode{<H3><FONT size="1">}}{\HCode{</FONT></H3>}}
9
10 \begin{document}
11
12 \Css{div.author {font-family: ...;}}
13
14 \Css{H1 {font-family: ...; color: ...; font-size: ...; background: ...;}}
15 \Css{H2 {font-family: ...; color: ...; font-size: ...; background: ...;}}
16 \Css{H3 {...}} % correspond a section
17 \Css{H4 {...}} % correspond a subsection
18 \Css{H5 {...}}
19 \Css{H6 {...}}
20 \Css{BODY {...}}
21
22 \EndPreamble

Dans ce cas, la compilation se fait par :


code
1 mk4ht htlatex nom_fichier.tex nom_fichier.cfg

2.8 Rédaction des actes d’un colloque


La classe combine est dédiée à l’assemblage en un document unique cohérent d’un groupe de textes individuels, tels
que ceux exigés pour les actes d’une conférence. Il s’utilise avec les packages keyval, frenchle, combcite, combinet et
combnat. Dans l’exemple qui suit, sont chargés dans le préambule du document maître tous les préambules (sans les
appels de \maketitle) des fichiers contenant les contenus des communications à citer (dans l’environnement papers
par \import{...}). L’alinéa de la liste des communications dans la table des matières est réglé par toctitleindent.
Chaque article est rangé dans son propre dossier et le chemin d’importation des figures dans un article s’indique par
nom_dossier_art/nom_fig. La présentation des actes à l’aide de combine est configurable à souhait.
code
1 \documentclass[11pt]{combine}
2 \title{...}
3 \author{...}
4 \date{...}
5
6 \usepackage[T1]{fontenc}
7 \usepackage[usenames]{color}
8 \usepackage[dvips]{graphicx}
9 \usepackage{fancyvrb,fancyhdr,keyval,combcite,amsfonts,amsmath,frenchle}
10
11 \textwidth15cm
12 \textheight20cm
13 \hoffset-1cm
14
15 \pagestyle{fancy}
16 \fancyfoot[C]{\bf\scriptsize (RAMA, actes du colloque Abidjan-2006)}
17 \fancyfoot[R]{\thepage}
18 \fancyhead[L]{}
19 \fancyhead[R]{}
20 \newcommand{\titlehead}[1]{\fancyhead[C]{\bf\scriptsize #1}}
21 \renewcommand{\headrulewidth}{0.0cm}
22 \renewcommand{\headwidth}{\textwidth}
23
24 \setlength{\toctitleindent}{1.5em}
25
26 \begin{document}
27 %\pagestyle{combine}
28 \maketitle

(H. Quadjovie, FDS/UL, 2009) 42


CHAPITRE 2. LE FORMATEUR DE TEXTE L
ATEX2ǫ 2.9. RÉDACTION D’UN CURRICULUM VITÆ

29
30 \vspace{1cm}
31
32 \begin{center}
33 \includegraphics[height=10cm,width=10cm,angle=00.0]{daniel.eps}
34 \end{center}
35
36 \clearpage
37 \tableofcontents
38
39 \clearpage
40 \section{Avant-propos}
41 \label{intro}
42 [ ... ]
43
44 \section{Remerciements}
45 \label{remer}
46 [ ... ]
47
48 \begin{papers}
49
50 \coltoctitle{titre_art1}
51 \coltocauthor{auteur_art1}
52 \titlehead{auteur_art1, titre_art1}
53 %\published{Publi\’e dans ...}
54 \label{art1}
55 \import{nom_dossier_art1/art1}
56
57 \coltoctitle{titre_art2}
58 \coltocauthor{auteur_art2}
59 \titlehead{auteur_art2, titre_art2}
60 %\published{Publi\’e dans ...}
61 \label{art2}
62 \import{nom_dossier_art1/art2}
63
64 ...
65
66 \end{papers}
67
68 \end{document}

2.9 Rédaction d’un curriculum vitæ


La classe moderncv est déidée à l’écriture de deux styles de curriculum vitæ. Elle est configurable à souhait et est
livrée avec des exemples dont on peut s’inspirer. Les sauts de page sont indiqués par \closesection{}\pagebreak{} et
une rubrique libre par \section{}\closesection. Syntaxe :
code
1 \documentclass[10pt,french]{moderncv}
2 \moderncvstyle[nocolor,roman]{casual}
3 \usepackage{amsfonts,babel}
4
5 \photo[64pt]{six2}
6 \firstname{\Huge prenom}
7 \familyname{ nom}
8 \title{Curriculum Vit\ae}
9 \address{\scriptsize ...}
10 \phone{...}
11 \email{...}
12 \extrainfo{\httplink{...}}
13 \quote{\Huge Curriculum Vit\ae}

43 (H. Quadjovie, FDS/UL, 2009)


CHAPITRE 2. LE FORMATEUR DE TEXTE L
ATEX2ǫ 2.10. GESTION DE PROJET AVEC L
ATEX 2ε

14
15 \def\ConTeXt{C\kern-.0333emo\kern-.0333emn\kern-.0667em\TeX\kern-.0333emt}
16 \definecolor{see}{rgb}{0.5,0.5,0.5}
17
18 \begin{document}
19 \maketitle
20 \makequote
21
22 \section{Centres d’int\’er\^ets}
23 \cvitem{}{}
24
25 \section{Instruction}
26 \cventry{annee}{diplome}{transcription}{institution}{note}{mention}
27
28 \section{These / memoire}
29 \cvitem{titre}{...}
30 \cvitem{superviseur(s)}{...}
31 \cvitem{description}{\footnotesize ...}
32
33 \section{Autres qualifications}
34 \cventry{date}{}{}{}{}{}
35
36 \section{Exp\’erience professionnelle}
37 \cventry{date $\to$}{responsabilite}{}{}{}{}
38
39 \section{Comp\’etences informatiques}
40 \cvcomputer{OS}{...}{administration}{...}
41 \cvcomputer{bureautique}{...}{diapositives}{...}
42 \cvcomputer{sciences}{...}{graphes}{...}
43 \cvcomputer{stylique web}{...}{exerciseurs}{...}
44 \cvcomputer{IST}{...}{base de donn\’ees}{...}
45
46 \section{Travaux d’\’etudes et de recherches}
47 \cventry{}{}{}{}{}{}
48
49 \section{Conf\’erences}
50 \cventry{}{titre_conference}{}{}{}{}
51 \cvlistitem{}
52 \cvlistdoubleitem{}{}
53
54 \section{Projets principaux}
55 \cventry{annee}{titre_projet}{}{}{}{}
56
57 \section{Langues}
58 \cvlanguage{...}{Langue d’usage}{Parl\’ee, \’ecrite, lue et comprise}
59
60 \section{}\closesection
61 \hfill \begin{tabular}{r} Lom\’e, le \today \\
62 \includegraphics[width=3cm,height=1.5cm,angle=00.0]{signature.eps} \\
63 \underline{Pr\’enom \textsc{Nom}} \end{tabular}
64
65 \end{document}

2.10 Gestion de projet avec LATEX 2ε


TEXProject est un outil conçu pour la rédaction de manuels de gestion de projet avec LATEX 2ε . Il nécessite les
packages TeXProject.sty, DraTeX.sty, AlDraTeX.sty et wotree.sty, qui sont chargés par : \input TeXProject.sty,
dans le préambule de la source .tex. Le programme TEXProject permet la définition en langage scripturale du projet
et de rendre compte de la planification du projet selon la méthode du diagramme de Gantt (découpage du projet en
tâches, visualisation des dépendances, et gestion des ressources).

(H. Quadjovie, FDS/UL, 2009) 44


CHAPITRE 2. LE FORMATEUR DE TEXTE L
ATEX2ǫ 2.10. GESTION DE PROJET AVEC L
ATEX 2ε

2.10.1 Définition du projet


Elle s’opère dans l’environnement \newproject ... \endnewproject et à l’aide des instructions suivantes :

\defproject{label}{nom}{liste-elts}{liste-pre}{description}
\defmilestone{label}{nom}{date}{liste-pre}{description} % phases
\deftask{label}{nom}{debut}{fin}{liste-contr:role}{liste-pre}{description} % taches

code
1 \newproject
2
3 \defmilestone{m1}{Announcement}
4 {27/02/95}
5 {}
6 {You read the WWW announcement.}
7
8 \deftask{t1.1}{FTP}
9 {28/02/95}{01/03/95}
10 {you:10}
11 {}
12 {You ftp the .sty files, manuals and examples.}
13
14 \deftask{t1.2}{Test}
15 {01/03/95}{02/03/95}
16 {you:60}
17 {t1.1}
18 {You test the system locally.}
19
20 \deftask{t1.3}{Installation}
21 {02/03/95}{03/03/95}
22 {system~engineer:30}
23 {t1.2}
24 {You ask your system engineer to install the package for your center.}
25
26 \defproject{t1}{Package}
27 {t1.1,t1.2,t1.3}
28 {m1}
29 {You get and install the package.}
30
31 \deftask{t2.1}{Manual}
32 {01/03/95}{04/03/95}
33 {you:10}
34 {t1.1}
35 {You review the manual and examples.}
36
37 \deftask{t2.2}{Ask}
38 {27/02/95}{04/03/95}
39 {you:5,someone:5}
40 {}
41 {You communicate with others.}
42
43 \deftask{t2.3}{Experiment}
44 {03/03/95}{04/03/95}
45 {you:30}
46 {t1.2}
47 {You set up a small example.}
48
49 \defproject{t2}{Help}
50 {t2.1,t2.2,t2.3}
51 {m1}
52 {You get to know the system.}
53
54 \defmilestone{m2}{Usage}

45 (H. Quadjovie, FDS/UL, 2009)


CHAPITRE 2. LE FORMATEUR DE TEXTE L
ATEX2ǫ 2.10. GESTION DE PROJET AVEC L
ATEX 2ε

55 {04/03/95}
56 {t1}
57 {You can use TeXProject.}
58
59 \defproject{texproject}{TeXProject}
60 {m1,t1,t2,m2}
61 {}
62 {Welcome to TeXProject.}
63
64 \endnewproject

Tous les éléments de définition du projet sont reutilisables dans la rédaction du projet avec LATEX 2ε , à l’aide des
primitives :

\annotation{label} \name{label}
\resource{label} \effort{label}
\effort{label,contributeur} \contributions{label}
\start{label} \finish{label}

code
1 Le projet s’appelle \name{texproject}.
2 Il d\’ebute le \start{texproject} et s’ach\‘eve le \finish{texproject}.
3 Il implique les ressources suivantes : \resource{texproject}.
4 Il mobilise un nombre total de \effort{texproject} personnes-minutes.
5 L’apport de \verb|you| est de \effort{texproject,you} minutes.

Le projet s’appelle TeXProject.


Il débute le 27/02/95 et s’achève le 04/03/95.
Il implique les ressources suivantes : you, system engineer, someone.
Il mobilise un nombre total de 150 minutes.
L’apport de you est de 115 minutes.

Les différentes représentations du projet se réalisent dans l’environnement \Draw ... \EndDraw et avec l’aide
des commandes (Al)DraTEX suivantes :

\TreeAlign(H,-1,0)(0,0,0) : pour les arbres horizontaux,


\TreeSpace(C,h_space,v_space) : pour les arbres compacts,
\ArrowHeads(1) : pour des arêtes fléchées,
\Scale(h-scale,v_scale) : pour réduire ou agrandir,
\effortlimits(nbre) : ,
\shedulelimits(nbre) : ,
\treenodestyle{\name{#1}} : pour définir les éléments d’information usités,
\pertnodestyle{\name{#1}} : pour définir les éléments d’information usités,
\contributorsproject{label}{nom}{liste-composantes}{description}.

2.10.2 Mode illustration


Arbres hiérarchiques
La structuration du projet est obtenue par : treediagram(label).

code
1 \Draw
2 \Scale(0.8,1)
3 \TreeSpace(C,3,20)
4 \treediagram(texproject)
5 \EndDraw

(H. Quadjovie, FDS/UL, 2009) 46


CHAPITRE 2. LE FORMATEUR DE TEXTE L
ATEX2ǫ 2.10. GESTION DE PROJET AVEC L
ATEX 2ε

TeXProject

Announcement Package Help Usage

FTP Test Installation Manual Ask Experiment

code
1 \Draw
2 \TreeAlign(H,-1,0)(0,0,0)
3 \treediagram(texproject)
4 \EndDraw

Announcement

FTP

Package Test

Installation
TeXProject
Manual

Help Ask

Experiment

Usage

Graphes de PERT
La représentation du projet en réseau PERT (formalisation des tâches sur les nœuds de l’arbre) s’effectue par :
\pertdiagram(label).
code
1 \Draw
2 \pertdiagram(texproject)
3 \EndDraw

Announcement Help

Package

Usage

code
1 \Draw
2 \ArrowHeads(1)
3 \adjustpert(t1,30 & m2,-30 )
4 \pertdiagram(texproject)
5 \EndDraw

47 (H. Quadjovie, FDS/UL, 2009)


CHAPITRE 2. LE FORMATEUR DE TEXTE L
ATEX2ǫ 2.10. GESTION DE PROJET AVEC L
ATEX 2ε

Announcement Help

Package

Usage

code
1 \Draw
2 \pertnodestyle{\annotation{#1}}
3 \pertdiagram(texproject)
4 \EndDraw

You read You get to know


the WWW the system.
announcement.

You get and install


the package.

You can use


TeXProject.

code
1 \Draw
2 \ArrowHeads(1)
3 \pertlimits(,1)
4 \pertdiagram(texproject)
5 \EndDraw

Announcement Help

Package

Usage

Help Announcement

code
1 \Draw
2 \ArrowHeads(1)
3 \Define\externalnode(1){
4 \filtercommand\name{#1}
5 \Node(#1)(--\putcommand--)}
6 \pertlimits(,1,\externalnode,\par$\bigoplus$\par)
7 \pertdiagram(texproject)
8 \EndDraw

(H. Quadjovie, FDS/UL, 2009) 48


CHAPITRE 2. LE FORMATEUR DE TEXTE L
ATEX2ǫ 2.10. GESTION DE PROJET AVEC L
ATEX 2ε

Help
Announcement

Package

Usage
L

Announcement
Help

Ressources, rôles et avancées

La commande effortchart(label) permet la visualisation des ressources qui interviennent sur le projet, leurs rôles
d’affectation et leurs avancées dans la réalisation des tâches attribuées.

code
1 \Draw
2 \Scale(1,0.8)
3 \effortchart(texproject)
4 \EndDraw

someone

Help
you

you

Package
system engineer

0 35 70.0

code
1 \Draw
2 \Scale(1,0.6)
3 \effortchart(texproject,,,,2)
4 \EndDraw

49 (H. Quadjovie, FDS/UL, 2009)


CHAPITRE 2. LE FORMATEUR DE TEXTE L
ATEX2ǫ 2.10. GESTION DE PROJET AVEC L
ATEX 2ε

Experiment you

someone
Ask
you

Manual you

Installation system engineer

Test you

FTP you

0 30 60

code
1 \Draw
2 \Scale(1,0.6)
3 \effortlimits(2)
4 \effortchart(texproject,,,,2)
5 \EndDraw

Experiment you

someone
Ask

0 30 60
you

Manual you

0 30 60

Installation system engineer

Test you

0 30 60

FTP you

0 30 60

code
1 \Draw
2 \Scale(1,0.7)
3 \effortstyle(A,3,7,0,0,12)
4 \effortchart(texproject,02/03/95,03/03/95,,3)
5 \EndDraw

(H. Quadjovie, FDS/UL, 2009) 50


CHAPITRE 2. LE FORMATEUR DE TEXTE L
ATEX2ǫ 2.10. GESTION DE PROJET AVEC L
ATEX 2ε

Experiment you

someone
Ask
you

Manual you

Installation system engineer

Test you

0 30 60

Détail des affectations


La programmation temporaire du projet est schématisée par : \schedulechart(label).

code
1 \Draw
2 \schedulechart(texproject,,,,99) % \schedulestyle(A,2.5,7.5,3,0,$\otimes$,70)
3 \EndDraw

Announcement ⊗

FTP

Test

Installation

Manual

Ask

Experiment

Usage ⊗

27/02/95 04/03/95

code
1 \Draw
2 \schedulelimits(3)
3 \schedulechart(texproject,,,,99)
4 \EndDraw

51 (H. Quadjovie, FDS/UL, 2009)


CHAPITRE 2. LE FORMATEUR DE TEXTE L
ATEX2ǫ 2.10. GESTION DE PROJET AVEC L
ATEX 2ε

Announcement ⊗

FTP

Test

27/02/95 04/03/95

Installation

Manual

Ask

27/02/95 04/03/95

Experiment

Usage ⊗

27/02/95 04/03/95

Contributeurs

code
1 \Draw
2 \TreeAlign(H,-1,0)(0,0,0)
3 \treediagram(c)
4 \EndDraw

FTP

Test

you Manual

Ask

contributors Experiment

system engineer Installation

someone Ask

code
1 \Draw
2 \schedulechart(c)
3 \EndDraw

(H. Quadjovie, FDS/UL, 2009) 52


CHAPITRE 2. LE FORMATEUR DE TEXTE L
ATEX2ǫ 2.10. GESTION DE PROJET AVEC L
ATEX 2ε

you

system engineer

someone

27/02/95 04/03/95

Tag and Set Operations


code
1 \newcommand\getparent[1]{
2 \sapply{p,up,{#1}}
3 \sapply{p,\name}
4 }
5 \newcommand\V[5]{\sapply{all,merge,all,{#1}}}
6 \newcommand\Vii[7]{\sapply{all,merge,all,{#1}}}
7 \sapply{all,merge,{},{}}
8 \rapply{texproject,\V,\V,\Vii}
9 \sapply{all,subtract,all,{texproject}}
10 \sapply{foo,defproject,all,,}

code
1 \Draw
2 \TreeAlign(H,-1,0)(0,0,0)
3 \treediagram(foo,1)
4 \EndDraw

Announcement

Package

FTP

Test

Installation

Help

Manual

Ask

Experiment

Usage

53 (H. Quadjovie, FDS/UL, 2009)


CHAPITRE 2. LE FORMATEUR DE TEXTE L
ATEX2ǫ 2.10. GESTION DE PROJET AVEC L
ATEX 2ε

code
1 \Draw
2 \Scale(1,1.2)
3 \ArrowHeads(1)
4 \pertnodestyle{\getparent{#1}:\break\hfil\name{#1}}
5 \pertdiagram *(foo)
6 \EndDraw

TeXProject : Packageyou : Helpyousomeone : Helpyou :


Announcement FTP Ask Manual

TeXProject :
TeXProject : Packageyou :
Package
Help Test

TeXProject :
Packagesystem Helpyou :
Usage
engineer : Experiment
Installation

code
1 \Draw
2 \Scale(1,1.2)
3 \ArrowHeads(1)
4 \pertnodestyle{\getparent{#1}:\break\hfil\name{#1}}
5 \pertdiagram(foo)
6 \EndDraw

TeXProject : TeXProject : Helpyousomeone :


Announcement Help Ask

TeXProject : Packageyou :
Package FTP

Packageyou : Helpyou :
Test Manual

Packagesystem
engineer :
Installation

Helpyou :
Experiment

TeXProject :
Usage

code
1 \Draw
2 \sapply{all,merge,all,{texproject}}
3 \sapply{foo,defproject,all,,}
4 \effortchart(foo)
5 \EndDraw

(H. Quadjovie, FDS/UL, 2009) 54


CHAPITRE 2. LE FORMATEUR DE TEXTE L
ATEX2ǫ 2.10. GESTION DE PROJET AVEC L
ATEX 2ε

system engineer

TeXProject someone
you

Experiment you

someone
Ask
you

Manual you

someone
Help
you

Installation system engineer

Test you

FTP you

you
Package
system engineer

0 57.5 115.0

code
1 \Draw
2 \schedulechart(foo)
3 \EndDraw

Announcement ⊗

Package

FTP

Test

Installation
Help

Manual

Ask
Experiment

Usage ⊗

27/02/95 04/03/95

2.10.3 Beyond the TEXProject Native Features


Tree Diagrams
code
1 \Draw
2 \treenodestyle{\annotation{#1}\break \start{#1}\quad\hfill\finish{#1}}
3 \font\sevenrm=cmr7 \sevenrm

55 (H. Quadjovie, FDS/UL, 2009)


CHAPITRE 2. LE FORMATEUR DE TEXTE L
ATEX2ǫ 2.10. GESTION DE PROJET AVEC L
ATEX 2ε

4 \baselineskip=9pt
5 \treestyle(,,,,85)
6 \TreeAlign(H,-1,0)(0,0,0)
7 \TreeSpace(,5,10) \treediagram(texproject)
8 \EndDraw

You read the WWW


announcement.
27/02/95 27/02/95

You ftp the .sty files,


manuals and examples.
28/02/95 01/03/95

You get and install You test the


the package. system locally.
28/02/95 03/03/95 01/03/95 02/03/95

You ask your system


engineer to install the
package for your center.
Welcome to TeXProject. 02/03/95 03/03/95
27/02/95 04/03/95
You review the
manual and examples.
01/03/95 04/03/95

You get to know You communicate


the system. with others.
27/02/95 04/03/95 27/02/95 04/03/95

You set up a
small example.
03/03/95 04/03/95

You can use


TeXProject.
04/03/95 04/03/95

Schedule Charts
code
1 \newproject \minmaxdates{0/0/0//100/0/0}
2 \defproject{tasks}{}{a,b,c,d}{}{}
3 \deftask{a}{task 1}{0/0/0}{3/0/0}{}{}{}
4 \deftask{b}{task 2}{2/0/0}{6/0/0}{}{}{}
5 \deftask{c}{task 3}{1/0/0}{2/0/0}{}{}{}
6 \deftask{d}{task 4}{5/0/0}{7/0/0}{}{}{}
7 \endnewproject

code
1 \Draw \Scale(1,0.5) \schedulestyle(,,,,3,,)
2 \schedulechart(tasks)
3 \MoveToLoc(SW) \Move(-5pt\du,0) \MarkLoc(sw)
4 \MoveToLoc(NE) \Move( 5pt\du,0) \MarkLoc(ne) \CSeg\DrawRect(ne,sw)
5 \namesaxis(sw,ne)(W-0)
6 \nonamesaxis(sw,ne)(W-1)
7 \font\sevenrm=cmr7 \sevenrm
8 \Axis(SW,NE)(N0,& week~1 && week~2 && week~3 && week~4 &&
9 week~5 && week~6 && week~7 & )

(H. Quadjovie, FDS/UL, 2009) 56


CHAPITRE 2. LE FORMATEUR DE TEXTE L
ATEX2ǫ 2.10. GESTION DE PROJET AVEC L
ATEX 2ε

10 \Axis(SW,NE)(N-1,&&&&&&& )
11 \EndDraw

week 1 week 2 week 3 week 4 week 5 week 6 week 7

task 1

task 2

task 3

task 4

57 (H. Quadjovie, FDS/UL, 2009)


CHAPITRE 2. LE FORMATEUR DE TEXTE L
ATEX2ǫ 2.10. GESTION DE PROJET AVEC L
ATEX 2ε

(H. Quadjovie, FDS/UL, 2009) 58


Chapitre 3

Le traceur Gnuplot

Gnuplot est un logiciel libre qui permet de construire des graphiques en 2D ou 3D et d’interpoler graphiquement
des bases de données (traceur de fichiers de points). Il possède, parmi de tels logiciels, les syntaxes les plus simples à
retenir et les plus proches de l’écriture courante. Il est assez puissant pour permettre le dépouillement presqu’en temps
réel de résultats de calculs. Les graphes implicites ne peuvent être, pour l’heure, directement tracés par gnuplot.

3.1 Prise en mains de Gnuplot


On crée le repertoire de travail avec un gestionnaire de fichiers (tkdesk, file manager, windows explorer...). On
active Gnuplot avec la commande gnuplot ou dclick sur icône. On se positionne dans le repertoire de travail avec les
commandes pwd pour connaître le repertoire dans lequel on se trouve et cd "nom_rep" ou cd ’chemin_rep’ pour se
positionner dans le repertoire dans lequel on désire classer le graphique. Le graphique tracé, on enregistre le script avec
save "fichier.gnu" et on exporte le graphique avec :
code
1 set terminal postscript eps color ou set terminal latex ou set terminal table
2 set output "fichier.eps" set output "fichier.tex" set output "fichier.dat"
3 replot replot replot

Les divers types de terminal s’obtiennent par set terminal. Ajoutons que lorsque le terminal postscript est activé,
chaque plot, splot ou replot insère un dessin sur une nouvelle page dans le fichier.eps. Pour imprimer dans l’impri-
mante par défaut, lp fichier.eps. On quitte Gnuplot avec exit ou quit. Pour une consultation ultérieure, on exécute
le script avec load "fichier.gnu" (après avoir lancé par set terminal x11 la fenêtre graphique par défaut). Pour
modifier le fichier de script ayant produit le graphique, on ouvre fichier.gnu à l’aide d’un éditeur de texte et on pro-
cède aux modifications souhaitées. Gnuplot est toujours livré avec une liste de démonstrations (fichier.dem à exécuter
avec l’instruction load "fichier.dem" dans le dossier demo) donnant un aperçu complet de ses diverses fonctionnalités.
Une aide sur une commande est accessible par l’instruction help nom_commande. Enfin, la commande history affiche
l’arborescence des commandes saisies depuis l’ouverture de la session courante.

3.2 Tracer par défaut le graphique


Gnuplot est un programme de tracé de fonctions et de données en ligne de commande. Il est sensible à la casse, tous
les noms de commandes peuvent être abrégés et il est permis d’enchaîner plusieurs commandes sur une ligne séparées
par des points-virgules.

3.2.1 Scripts courants


Les scripts des diverses situations reconnaissables par Gnuplot sont donnés par :

f : R → Ry , x 7→ f (x) : 2D-courbe résoluble en coordonnées cartésiennes,


plot f(x)

59
CHAPITRE 3. LE TRACEUR GNUPLOT 3.2. TRACER PAR DÉFAUT LE GRAPHIQUE

f : R → Rr , t 7→ f (t) : 2D-courbe résoluble en coordonnées polaires,


set polar
plot f(t)

f : R → R2(x,y) , t 7→ (f1 , f2 )(t) : 2D-courbe paramétrée,


set parametric
plot f_1(t),f_2(t)

f : R → R3(x,y,z) , u 7→ (f1 , f2 , f3 )(u) : 3D-courbe paramétrée,


set parametric
splot f_1(u),f_2(u),f_3(u)

f : R2 → Rz , (x, y) 7→ f (x, y) : 3D-surface résoluble en coordonnées cartésiennes,


splot f(x,y)

f : R2 → R3(x,y,z) , (u, v) 7→ (f1 , f2 , f3 )(u, v) : 3D-surface paramétrée,


set parametric
splot f_1(u,v),f_2(u,v),f_3(u,v)

Les expressions f et fi , i = 1, 2, 3, s’écrivent avec les opérateurs :


opérateurs
Symbole Exemple Explication
---------------------------------------------------------------------
** a**b elevation a la puissance
* a*b multiplication
/ a/b division
% a%b * modulo
+ a+b addition
- a-b soustraction
== a==b egalite
!= a!=b difference
< a<b inferieur strictement
<= a<=b inferieur ou egal
> a>b superieur strictement
>= a>=b superieur ou egal
& a&b * bitwise AND
^ a^b * bitwise exclusive OR
| a|b * bitwise inclusive OR
&& a&&b * ET logique
|| a||b * OU logique
---------------------------------------------------------------------
?: a?b:c si a, alors b, sinon c
---------------------------------------------------------------------
- -a moins unaire
+ +a plus unaire (non-operation)
~ ~a * one’s complement
! !a * negation logique
! a! * factorielle
$ $3 * appelle arg/colonne sous ’using’

l’étoile * indique que l’opérateur s’applique à des arguments entiers et ces opérations s’obtiennent par la commande
help operators ; et fonctions (ou primitives) :
fonctions
abs acos acosh arg asin asinh
atan atan2 atanh besj0 besj1 besy0
besy1 ceil column cos cosh erf
erfc exp floor gamma ibeta igamma
imag int inverf invnorm lgamma log
log10 norm rand real sgn sin
sinh sqrt tan tanh tm_hour tm_mday

(H. Quadjovie, FDS/UL, 2009) 60


CHAPITRE 3. LE TRACEUR GNUPLOT 3.2. TRACER PAR DÉFAUT LE GRAPHIQUE

tm_min tm_mon tm_sec tm_wday tm_yday tm_year


lambertw

Ces fonctions s’obtiennent par la commande help functions.

3.2.2 Définir ses propres variables


Constantes Les constantes sont définies par la syntaxe nom_constante = expression. Exemples : w=2, q=sin(w/2).
Elles sont utiles pour changer les valeurs d’un paramètre dans une expression et pour tracer les courbes correspondant
à des valeurs distinctes d’un paramètre dans le même terminal windows ou x11,
exemple
1 m1=3
2 m2=4
3 m3=5
4 plot sin(m1*x)
5 replot sin(m2*x)
6 replot sin(m3*x)

Comparer à : plot f(x)=sin(m*x),m=0.2,f(x),m=0.4,f(x) ou à : plot sin(0.2*x), sin(0.4*x)

Fonctions. La syntaxe pour définir les fonctions est : nom_fonction = expression. Exemples :
exemple
1 min(a,b)=(a<b)?a:b
2 comb(n,k)=n!/(k!*(n-k)!)
3 sinc(x)=sin(pi*x)/(pi*x)
4 len3d(x,y,z)=sqrt(x*x+y*y+z*z) # une primitive ne peut etre argument !
5 myfunc(x,y)=(1+x**2+(2/3)*y**2)/(sin(x*45*y)+exp(-1*(x*y*(-1/3))))

On peut les utiliser comme toute autre fonction de Gnuplot :


exemple
1 print min(3,8)
2 plot sinc(x)
3 print lend3d(2,3,4)
4 splot myfunc(x,y)

Les fonctions propres définies dans une session Gnuplot s’obtiennent toutes par show functions.

Courbes par morceaux. La syntaxe de définition des courbes par morceaux est :
code
1 f(x)=(cond1)?expr1:((cond2)?expr2:((cond3)?expr3:...))

Exemples :
exemples
1 val_abs(x)=(x>0)?x:-x
2 plot val_abs(x)
3 morceau(x)=(x>2)?2:((x<-2)?-2:x)
4 plot morceau(x)

Lorsque la courbe par morceaux n’est pas continue, changer le style des caractères utilisés pour la construction :
exemple
1 ok(x)=(x<3)?x+3:-x
2 plot ok(x) with dots

61 (H. Quadjovie, FDS/UL, 2009)


CHAPITRE 3. LE TRACEUR GNUPLOT 3.2. TRACER PAR DÉFAUT LE GRAPHIQUE

La fonction par morceaux, sin(x) pour 0 <= x < 1 et 1/x pour 1 <= x < 2 et indéfinie partout ailleurs, se construit
en utilisant des valeurs indéfinies comme 1/0 :
exemple
1 f(x) = 0<=x && x<1 ? sin(x) : 1<=x && x<2 ? 1/x : 1/0
2 plot f(x)

3.2.3 Fichiers de points


Ils se représentent en 2D avec le script : plot "fichier.dat" using num_colonne_1:num_colonne_2, (colonne 1 en
abscisses et colonne 2 en ordonnées) et en 3D (lorsque le fichier ne contient que 3 colonnes) avec :
code
1 splot "fichier.dat"

Exemple avec condition : plot "fichier.dat" using 1:( $4<0 ? 1/0 : ($2+$3)/2 ) construit la moyenne des co-
lonnes 2 et 3 en prenant pour abscisses la colonne 1, ssi la colonne 4 est positive. Noter que 1/0 (valeur non définie)
indique à Gnuplot de ne rien faire.

Lissage en 2D
Gnuplot inclut quelques routines générales pour l’interpolation et l’approximation des données sous l’option smooth.
La syntaxe est :
code
1 plot "fichier.dat" smooth unique [csplines | acsplines | bezier | sbezier]

1. L’option unique trace les données après les avoir rendu monotones en abscisses et après avoir remplacé les points
de même abscisse par un seul point d’ordonnée moyenne. Toutes les autres routines utilisent les données pour
déterminer les cœfficients d’une courbe continue entre les points extrémaux des données. Cette courbe est alors
tracée comme une fonction, c’est-à-dire en calculant ses valeurs à intervalles réguliers sur l’abscisse et en connec-
tant ces points par des segments de droites (si un style ligne est choisi).

2. L’option acsplines approche les données par une « fonction spline de lissage naturelle ». Après que les données
aient été ordonnées selon les abscisses croissantes, une courbe est construite par morceaux, à l’aide de segment
de polynômes cubiques, dont les cœfficients sont calculés à partir des points pondérés des données (les poids sont
pris dans la 3e colonne du fichier de données). Ce comportement par défaut peut être modifié par la 3e entrée de
la liste using, par exemple :
exemple
1 plot ’fichier.dat’ using 1:2:(1.0) smooth acsplines

Qualitativement, la valeur absolue des poids détermine le nombre de segments utilisés pour construire la courbe.
Si les poids sont élevés, l’effet de chaque donnée est important et la courbe les approche en connectant les points
consécutifs par des splines cubiques naturelles. Si les poids sont faibles, la courbe est composée de moins de
segments et est donc plus lisse ; le cas limite est un simple segment produit par un ajustement aux moindres
carrés pondéré sur toutes les données. Le poids de lissage peut s’exprimer en termes d’erreurs comme : un poids
statistique pour un point divisé par un « facteur de lissage » pour la courbe, de sorte que les erreurs (standard)
du fichier puissent être utilisées en tant que poids de lissage. Exemple :
exemple
1 sw(x,S)=1/(x*x*S)
2 plot ’fichier.dat’ using 1:2:(sw($3,100)) smooth acsplines

L’option csplines connecte les points consécutifs par des splines cubiques naturelles après avoir rendu les données
x-monotones (aucune pondération n’est opérée).
3. L’option bezier approche les données par une courbe de Bézier de degré n (le nombre de points de données) qui
relie les points extrêmaux. L’option sbezier rend tout d’abord les données monotones (unique), puis applique
l’algorithme bezier.

(H. Quadjovie, FDS/UL, 2009) 62


CHAPITRE 3. LE TRACEUR GNUPLOT 3.2. TRACER PAR DÉFAUT LE GRAPHIQUE

Interpolation de données
La commande fit permet d’ajuster une fonction définie par l’utilisateur à un ensemble de points de données (x, y)
ou (x, y, z), grâce à une implantation de l’algorithme des moindres carrés non linéaires de Levenberg-Marquardt. Toute
variable définie par l’utilisateur apparaissant dans le corps de la fonction peut servir de paramètre d’ajustement et il
est possible de pondérer (les poids sont identiques à 1.0, par défaut) les résidus par des estimations d’erreurs sur les
données recueillies. La syntaxe d’utilisation est :
code
1 f(x) = expr_fonct(x)
2 fit [x_1:x_2] [y_1:y_2] f(x) ’f.dat’ using nc1:nc2 [:s] via var1,var2 ,... [’f2.par’]
3 plot ’f.dat’, f(x)
4
5 f(x,y) = expr_fonct(x,y)
6 fit [x_1:x_2] [y_1:y_2] [z_1:z_2] f(x,y) ’f.dat’ using nc1:nc2:nc3:s via var1,var2 ,... [’f2.par’]
7 splot ’f.dat’, f(x,y)

1. expr_fonct est une expression gnuplot valide contenant des paramètres (quantités inconnues dans la déclara-
tion de la fonction) que fit va ajuster. Les formats de données pour ajuster la fonction sont nc1:nc2:s ou
nc1:nc2:nc3:s. Pour une fonction d’une seule variable y = f (x), la troisième colonne (constituée de nombres
ou d’expressions), si elle est présente, est interprétée comme l’écart-type de la valeur y correspondante, et est uti-
lisée pour pondérer la donnée par 1/s2 . Sinon, toutes les données sont pondérées à 1. Pour ajuster une fonction
de deux variables z = f (x, y), le format obligatoire est using x:y:z:s. Le format doit être complet ; aucune
donnée par défaut n’est calculée en cas de valeur manquante. Les poids des données sont calculés selon s comme
ci-dessus. Si les estimations d’erreurs ne sont pas disponibles, une valeur constante peut être spécifiée sous la
forme d’une expression constante, par exemple using 1:2:3:1.

2. f.dat est le fichier de données à ajuster et le qualificateur via spécifie quels paramètres doivent être ajustés, soit
directement (var1,var2 ,...), soit en référençant un fichier de paramètres (f2.par). Toute variable qui n’est pas
encore définie est créée avec une valeur initiale de 1.0. Cependant, l’ajustement a plus de chances de converger
rapidement si les variables sont initialisées avec des valeurs plus appropriées.

Dans un fichier de paramètres, les paramètres à ajuster, et leurs valeurs initiales, sont spécifiés, un par ligne, sous
la forme nom_var = valeur. Les commentaires, marqués par un #, et les lignes blanches sont permis. La forme
spéciale nom_var = valeur # FIXED signifie que la variable est traitée comme un paramètre fixé, initialisé par le
fichier de paramètres, mais pas ajusté par fit. Exemples :
exemple
1 f(x) = a*x**2 + b*x + c
2 g(x,y) = a*x**2 + b*y**2 + c*x*y
3 FIT_LIMIT = 1e-6
4 fit f(x) ’measured.dat’ via ’start.par’
5 fit f(x) ’measured.dat’ using 3:($7-5) via ’start.par’
6 fit f(x) ’./data/trash.dat’ using 1:2:3 via a, b, c
7 fit g(x,y) ’surface.dat’ using 1:2:3:(1) via a, b, c

A chaque étape de l’itération, des informations détaillées sur l’état courant de l’ajustement sont affichées. Les mêmes
informations pour les états initial et final sont écrites dans un fichier de rapport, fit.log. Elles sont toujours ajoutées
à la fin du fichier, afin de ne pas perdre les rapports des ajustements précédents. En cas de besoin, ce fichier peut être
renommé ou effacé. L’ajustement peut être interrompu par Ctrl-C. Une fois que l’ajustement via ’f2.par’ est terminé,
la commande update ’f2.par’ peut être utilisée pour mettre à jour les valeurs des paramètres (les anciennes valeurs
étant automatiquement conservées dans le fichier f2.par.old).

Il y a plusieurs variables gnuplot qui peuvent être utilisées pour contrôler fit. L’epsilon limite par défaut 1e − 5
peut être changé en affectant une valeur à FIT_LIMIT. Quand la somme des carrés des résidus change d’une itération
à l’autre d’un facteur inférieur à ce nombre, on considère que l’ajustement a « convergé ». Le nombre maximum
d’itérations peut être limité en affectant une valeur à FIT_MAXITER. Affecter une valeur de 0 (ou ne pas déclarer la
variable) signifie qu’il n’y a pas de limite.

Données financières
code

63 (H. Quadjovie, FDS/UL, 2009)


CHAPITRE 3. LE TRACEUR GNUPLOT 3.3. PERSONNALISER LE GRAPHIQUE

1 set style data candlesticks


2 plot ’nom_fichier.dat’ with candlesticks

Le style candlesticks n’est utile que pour les tracés 2D de données financières. Cinq colonnes de données sont
requises : dans l’ordre il doit y avoir la coordonnée x (très probablement une date) et le prix d’ouverture, les prix bas
et haut, et le prix de fermeture. Le symbole est un rectangle ouvert, centré horizontalement sur la coordonnée x et
limité verticalement par les prix d’ouverture et de fermeture. Un segment vertical à la coordonnée x monte du haut
du rectangle jusqu’au prix haut, et un autre descend jusqu’au prix bas. La largeur du rectangle peut être changée par
set bar. Le symbole reste inchangé si les prix bas et haut sont interchangés ou si les prix d’ouverture et de fermeture
sont interchangés.

code
1 set style data financebars
2 plot ’nom_fichier.dat’ with financebars

Le style financebars n’est utile que pour les tracés 2D de données financières. Cinq colonnes de données sont
requises : dans l’ordre il doit y avoir la coordonnée x (très probablement une date) et le prix d’ouverture, les prix bas
et haut, et le prix de fermeture. Le symbole est un segment vertical, situé horizontalement à la coordonnée x et limité
verticalement par les prix haut et bas. Un trait de graduation horizontal sur la gauche marque le prix d’ouverture et un
sur la droite marque le prix de fermeture. La longueur de ces traits peut être changée par set bar. Le symbole reste
inchangé si les prix haut et bas sont interchangés.

3.3 Personnaliser le graphique


3.3.1 Généralités
La forme générale des scripts est :
set commande arguments : pour activer l’instruction commande,
unset commande : pour désactiver,
show commande : pour afficher les arguments activés de l’instruction commande,
show all : pour afficher tous les réglages activés ou effectués,
reset : pour revenir aux valeurs par défaut (hormis le terminal et le fichier de sortie),
test : pour connaître toutes les spécifications de types ou de styles de tracés et pour tester les capacités du terminal
activé.
Les diverses situations pour définir soi-même les domaines des diverses variables sont couvertes par :

plot [val_min:val_max] [val_min:val_max] f(x)


↑ ↑
x y
ou
plot [val_min:val_max] [val_min:val_max] f(t)
↑ ↑
t r
ou
plot [val_min:val_max] [val_min:val_max] [val_min:val_max] f_1(t),f_2(t)
↑ ↑ ↑
t x y
ou
splot [:] [:] [:] f(x,y)
↑ ↑ ↑
x y z
ou
splot [t=:] [:] [:] [:] f_1(t),f_2(t),f_3(t)
↑ ↑ ↑
x y z
ou
splot [:] [:] [:] [:] [:] f_1(u,v),f_2(u,v),f_3(u,v)
↑ ↑ ↑ ↑ ↑
u v x y z
ou
set Arange [val_min:val_max] : où A pouvant prendre les valeurs x, y, z, r, t, u ou v.

(H. Quadjovie, FDS/UL, 2009) 64


CHAPITRE 3. LE TRACEUR GNUPLOT 3.3. PERSONNALISER LE GRAPHIQUE

Pour donner un titre au graphique : plot f(x) title "..." ou set title "..." et pour choisir les traits du
tracé : plot f(x) with A lt n1 lw n2 (resp. plot f(x) with A lt n1 pt m1 ps m2), où A pouvant prendre les valeurs
lines, linespoints, impulses, points, dots, boxes, steps, fsteps, histeps, errorbars, boxerrorbars, candlesticks,
financebars ou vector ; n2 (resp. m2) (=1 par défaut) spécifiant l’épaisseur du trait (resp. du point) de tracé ; et n1
(resp. m1) (=1 par défaut) précisant le numéro de la couleur (resp. de la marque) de tracé suivant le tableau :
numéro (n1) : 0 1 2 3 4 6 9 14 15 16
couleur : pointillé rouge vert bleu violet marron gris cyan jaune orange
Il est possible d’afficher plusieurs graphes à la suite à partir d’un même fichier .gnu, en tamporisant entre chaque
affichage, au moyen de l’instruction pause -1 "Appuyer sur ENTREE pour continuer".

3.3.2 Autres commandes de set


– set angles A : où A pouvant prendre les valeurs degrees (par défaut) ou radians. Pour spécifier l’unité d’angle
dans les calculs. Lorsque Gnuplot affecte une valeur (nombre ou chaîne de caractères) à une expression après un calcul,
on affiche cette valeur dans le terminal par print expression. Certaines fonctions (trigonométriques...) ne prennent que
des arguments en radians.

– set arrow n3 from x_0,y_0,(z_0) to x_1,y_1,(z_1) nohead lt n1 lw n2 : pour tracer un segment allant du
point de coordonnées (x0 , y0 (, z0 )) au point de coordonnées (x1 , y1 (, z1 )), de couleur donnée par n1 et d’épaisseur spé-
cifiée par n2. L’entier n3 sert à labelliser le segment (lorsqu’il y en a plusieurs). On obtient une flèche en supprimant
l’option nohead.

– set border 31 lt n1 lw n2 : pour afficher les axes avec la couleur donnée par n1 et une épaisseur spécifiée par
n2. Une grande variété de combinaisons d’axes peut être ajoutée à la commande : set border : trace toutes les bor-
dures ; set border 3 : trace seulement les bordures sud-ouest ; set border 4095 : trace une boîte complète autour d’un
splot ; set noxtics; set noytics; set x2tics; set y2tics; set border 12 : trace seulement les bordures nord-est ;
set border 127+256+512 : trace partiellement une boîte sans la face avant verticale.

– set cntrparam : Pour contrôler la génération et le lissage du tracé des contours, en précisant les valeurs de z
pour lesquelles les contours vont être calculés par interpolation linéaire entre les points échantillonnés de la fonction
d’ajustement. Par défaut, les arguments actifs sont : linear, points 5, order 4, levels auto 5. Ces arguments sont
modifiables par :
code
1 set cntrparam A
2 set cntrparam points n1
3 set cntrparam order n2
4 set cntrparam levels auto n3
5 set cntrparam levels discrete val_1, val_2, ... , val_n
6 set cntrparam levels incremental val_deb, val_pas, val_fin
7 show contour

1. A pouvant prendre les valeurs cubicspline (des portions de contours curvilignes sont interpolées, entre les points
de même valeur de z, pour former des contours plus lisses, mais pouvant onduler), bspline (un tracé curviligne
de meilleur lissage est tracé pour approximer seulement les points de même z). Par défaut, ce sont des segments
de droites qui joignent les points de même z ;
2. n1 : contrôle le nombre de segments curvilignes (= n1×nombre de segments linéaires) utilisés pour approximer
les tracés bspline ou cubicspline ;
3. n2 : est l’ordre de l’approximation bspline utilisée. Plus l’ordre est grand, plus le contour résultant est lisse (bien
évidemment, les ordres les plus élevés s’écartent d’autant plus des points de données à l’origine du calcul). Les
valeurs permises sont les valeurs entières qui vont de la valeur 2 (linéaire) à 10 ;
4. n3 : spécifie un nombre nominal de niveaux. Le nombre choisi est ajusté pour donner des étiquettes simples. Si la
surface est bornée par zmin et zmax, les contours sont générés aux multiples entiers de dz entre zmin et zmax,
où dz vaut (1, 2, ou 5) fois une puissance de dix (comme les pas entre les graduations d’axes) ;
5. discrete : les contours sont générés à z = val1 , val2 , ..., valn comme spécifié ; le nombre de niveaux discrets fixe
le nombre de niveaux de contour. Le mode discrete inhibe l’option set cntrparam levels n3 ;
6. incremental : les contours sont générés à partir de la valeur val_deb de z, par pas de val_pas, jusqu’à ce que le
nombre de contours soit atteint. val_fin est utilisé pour déterminer le nombre de niveaux de contour, qui peut
être changé par n’importe quelle nouveau set cntrparam levels n3.

65 (H. Quadjovie, FDS/UL, 2009)


CHAPITRE 3. LE TRACEUR GNUPLOT 3.3. PERSONNALISER LE GRAPHIQUE

– set contour A : pour tracer les contours (les lignes de niveaux) de surfaces projetés sur le plan de base (A = base,
valeur par défaut), sur la surface elle-même (A = surface) ou sur les deux (A = both). L’instruction unset surface
s’utilise pour ne donner qu’un graphe de contour seul.

– dummy : pour définir les paramètres des courbes et surfaces. Pour changer la 2e variable (paramétrant les surfaces
en 3D) en s, saisir le script : set dummy u,v, puis set dummy ,s.

– set format axe type_format : pour régler le formatage des étiquettes de graduations des axes. L’axe pour lequel
le format est spécifié est indiqué par axe ∈ {x, y, z, xy}, où xy est la valeur par défaut et type_format est "%g" par
défaut, "$%g$" pour l’utilisation du mode mathématique LATEX 2ε , "%.2f" pour que 1 décimale soit permise et qu’elle
soit multiple de 2, "$%5.1f\mu$" pour que les chiffres des unités soient multiples de 5, pour que 1 décimale soit permise
et µ en facteur à chaque graduation, "%P" pour que les graduations soient des multiples de π...

– set grid lt n11 lw n12 , lt n21 lw n22 : pour quadriller suivant les points qui ont servi à normer les axes
(en 3D, seul le plan de base est quadrillé), la virgule séparant les spécifications des lignes verticales de celles des lignes
horizontales.

– set hidden3d : seules les faces en premier plan du graphique sont visibles (faces cachées non visibles), par sup-
pression des lignes cachées.

– set isosamples 10,10 : (par défaut) pour rendre plus régulière un 3D-graphique en augmentant le nombre de
courbes u et v-paramétrisées utilisées (modification de la densité des iso-courbes). set isosamples 100,100 est le maxi-
mum permis.

– set key n. x_0,y_0(,z_0) : pour positionner le titre au point de coordonnées (x0 , y0 (, z0 )). La position peut être
remplacée par un ou plusieurs des arguments : left, right, top, bottom, outside, below, box.

– set label n. "..." at x_0,y_0(,z_0) A : où A pouvant prendre les valeurs rotate by val_degres, right, left,
center. Pour mettre une étiquette au point de coordonnées (x0 , y0 (, z0 )) du repère.

– set Alabel "..." n. ou set Alabel "lettre_1 \\ ... \\ lettre_N" n. : où A pouvant prendre les valeurs x,
y, z. Pour mettre une légende sur les axes.

– set locale "francais" : pour choisir la langue d’affichage des jours et mois.

– set logscale axe : où axe pouvant prendre les valeurs x, y, z, x2 ou y2. Pour employer une échelle logarithmique
et visualiser les endroits où une courbe change de façon drastique suivant certaines valeurs de axe.

– set offsets valeur_gauche, valeur_droite, valeur_haut, valeur_bas : (0,0,0,0 par défaut) pour spécifier les
retraits autour du graphique horizontalement ou verticalement, de façon à contrôler la bordure autour d’un graphe mis
à l’échelle automatiquement.

– set origin x_0,y_0(,z_0) : pour spécifier l’origine de l’aire de tracé (le graphe et ses marges).

– set palette color [gray] : pour choisir la palette de coloriage des facettes ou des espaces inter-contours, lorsque
set pm3d est activé.

– set pm3d at [sbt] : pour colorier les facettes ou leurs projections sur les plans axiaux.

– set samples valeur_1 [,valeur_2] : où valeur_i = 100 par défaut. Pour augmenter ou réduire le taux d’échantil-
lonnage ou le nombre de points (valeur_1 seule spécifiée) sur une 2D-courbe ou les nombres de points (valeur_1 et
valeur_2 spécifiées) sur les courbes u et v-paramétrées utilisées pour construire une surface.

– set size fact_mult_x fact_mult_y : (1,1 par défaut) pour spécifier le rectangle de tracé (ou d’affichage), l’es-
pace réservé aux labels et titre y compris. Les valeurs par défaut correspondent à un rectangle de 5 inches de large
et 3 inches de haut. Les autres valeurs fournissent les facteurs multiplicateurs du rectangle par défaut. Exemples :
set size 3.5/5,3/3 ou set size 1,2. On peut donner juste après la commande size les options square pour rendre
carré le rectangle de tracé et ratio n. pour que le rapport de proportionnalité entre les axes soit de n..

– set terminal nom_terminal "nom_fonte" taille_fonte : pour définir la police et la taille des caractères d’affi-
chage dans un terminal donné.

(H. Quadjovie, FDS/UL, 2009) 66


CHAPITRE 3. LE TRACEUR GNUPLOT 3.3. PERSONNALISER LE GRAPHIQUE

– set Atics valeur_min, pas, valeur_max


– set Atics ("..." valeur_min, "..." position, ... , "..." valeur_max) : où A pouvant prendre les valeurs
x, y, z, xd (dates en abscisses), mx, my, mz, mx2, my2 (graduations mineures non étiquetées) ou ym (mois en ordonnées).
Pour spécifier les points qui vont servir à normer les axes.

– set ticslevel 0.5 : (par défaut) pour ajuster la cote relative lorsqu’on utilise splot. Les niveaux positifs sont
conseillés.

– set time x_0,y_0 : pour faire imprimer la date et l’heure au point (x0 , y0 ). L’instruction set time les imprime
dans le coin sud-ouest du graphique.

– set view rot_x, rot_z, scale, scale_z [map] : pour observer le graphique sous tous les angles de vue. Les
valeurs par défaut sont 60,30,1,1. Cette fonctionnalité est accessible par la souris dans le terminal x11 ou windows, en
gardant enfoncé et en déplaçant les boutons de gauche et du milieu de celle-ci. L’option map est recommandée pour la
représentation des contours (voir set contour) sur la grille de coordonnées (ou le plan de base).

67 (H. Quadjovie, FDS/UL, 2009)


CHAPITRE 3. LE TRACEUR GNUPLOT 3.3. PERSONNALISER LE GRAPHIQUE

(H. Quadjovie, FDS/UL, 2009) 68


Chapitre 4

Le logiciel de calcul numérique Scilab

Scilab est un logiciel de calcul numérique distribué librement par l’INRIA. Les polynômes et les matrices poly-
nômiales peuvent être définis et la syntaxe utilisée pour les manipuler est identique à celle des vecteurs et matrices
constants. Scilab fournit une variété de primitives pour l’analyse des systèmes non-linéaires. La résolution des sys-
tèmes dynamiques, définis explicitement ou implicitement, peut s’effectuer numériquement. Scilab permet la définition
graphique et la simulation des systèmes hybrides interconnectés complexes. Scilab offre des facilités d’optimisation nu-
mérique pour les optimisations différentiables, quadratiques et linéaires. Scilab a un espace de programmation où la
création de fonctions et la librairie de fonctions sont entièrement gérées par l’utilisateur. Ces fonctions sont des objets
qui, une fois définis, doivent s’afficher et être manipulables de la même manière que les matrices ou les suites. Enfin,
Scilab supporte les données de type chaînes de caractères et est un interface compatible avec les langages Fortran et C.

4.1 Prise en mains de Scilab


On crée le repertoire de travail avec un gestionnaire de fichiers (tkdesk, file manager, windows explorer...). On
active Scilab avec la commande scilab & ou dclick sur icône. On se positionne dans le repertoire de travail avec
la commande file operations dans le menu file pour pouvoir y exporter le résultat d’une exécution (en ligne de
commande, utiliser pwd pour connaître le repertoire courant, puis chdir(’chemin_repertoire’)). La commande ls
permet de lister le contenu du repertoire actif. Le logiciel, une fois lancé, se présente sous la forme d’une fenêtre de
commande où peut être exécutée toute instruction. Pour exécuter une série d’instructions (ou script), on saisit au
préalable le script dans fichier.sce à l’aide d’un éditeur de texte (Scilab possède un éditeur intégré qui se charge par
scipad(), tandis qu’un fichier s’ouvre par scipad(’nom_fichier.sce’)) et on lance le script dans la fenêtre principale
de Scilab avec l’instruction exec(’fichier.sce’). Pour corriger le script fichier.sce, on l’ouvre et on procède aux
modifications souhaitées. Le résultat de l’exécution d’un script peut être exporté avec la commande export dans le menu
file de la fenêtre graphique. Plusieurs formats sont alors disponibles (postscript, latex, xfig, gif). On quitte Scilab avec
exit ou quit. Une aide en ligne est accessible grâce à la commande help() ou help(’nom_commande’).

4.1.1 Scripts
Dans un script scilab, les commandes sont rentrées ligne par ligne et un retour-chariot exécute la ligne sauf dans
deux cas : 1/ si la ligne se termine par ... ou .., la séquence se prolonge sur la ligne suivante ; 2/ si la commande
définit une matrice, les lignes de cette matrice peuvent être séparées par des retours-chariots. Ajouter un ; en fin de
ligne supprime l’affichage du résultat, ce qui évite les longs défilement à l’écran. Dans une ligne de commande, tout
ce qui suit // est ignoré, ce qui est utile pour les commentaires. Le résultat de l’exécution d’une ligne de commande
est affecté nommément à une variable (exemple : A=[1,2;3,4] affecte la matrice à la variable A) ou par
„ «
1 2
3 4
défaut à la variable ans. L’affichage de la valeur affectée à une variable s’opère par disp(nom_var). Dans les noms des
variables, les majuscules sont distinctes des minuscules. Toutes les variables d’une session sont globales et conservées
en mémoire. Elles sont accessibles par who (affiche toutes les variables) ou whos() (affiche les variables avec plus de
détails), et se libèrent par clear nom_variable. Lorsqu’une matrice est affectée à la variable A, elle peut être sauvegar-
dée (en ascii) par write(’fichier.dat’,A) dans fichier.dat et lue complètement ou partiellement avec l’instruction
read(’fichier.dat’,nbre_lig,nbre_col), où nbre_lig et nbre_col sont les nombres maxima de lignes et colonnes à
afficher.

Scilab est un langage faiblement typé où les variables ne sont pas déclarées et la même lettre peut désigner un réel,
un polynôme ou une fonction. Les types existent et peuvent être obtenus par type(nom_var). Par défaut les nombres

69
CHAPITRE 4. LE LOGICIEL DE CALCUL NUMÉRIQUE SCILAB 4.1. PRISE EN MAINS DE SCILAB

sont traités comme des réels en double précision. Les calculs ne sont donc pas exacts et la précision machine est donnée
par la constante %eps, de l’ordre de 10−16 (les nombres
√ > %eps ou < %eps sont accessibles). Les autres constantes
prédéfinies sont %e (=2.7182818), %f (faux), %i (= −1) qui permet de définir les nombres complexes, %inf (infini),
%pi (=3.1415927),%s (variable de polynôme),%t (vrai). Les chaînes de caractères, encadrées par des doubles côtes
(exemple : "x+y"), permettent de définir des expressions mathématiques, interprétables ensuite comme des commandes
à exécuter ou des fonctions à évaluer. Elles servent aussi d’intermédiaires pour des échanges de données entre fichiers.
On peut donc transformer et formater des nombres en chaînes de caractères.

Chaînes de caractères
evstr("...") évaluer l’expression ...
execstr("...") exécuter l’instruction ...
length("...") longueur de la chaîne "..."
part(...,i) extraire le ie caractère de chaque chaîne dans ...
+ concaténation de plusieurs chaînes
string(...) transformer ... en chaîne

4.1.2 Fonctions
Scilab propose beaucoup de fonctions prédéfinies (primitives) dans des domaines très variés, dont on peut obtenir
la description dans le menu help. On peut étendre le langage Scilab par de nouvelles fonctions définies par des
séquences d’instructions. La syntaxe pour définir une fonction f est :

code
1 deff(’[s1,s2,...]=f(e1,e2,....)’,[’p_1=val_1’;
2 ’p_2=val_2’;
3 ...;
4 ’s1=instr_1(e1,e2,....)’;
5 ’s2=instr_2(e1,e2,....)’;
6 ...])

où e1,e2,... sont les variables d’entrée ; s1,s2,... les arguments de sortie ; [...] la matrice de chaînes de caractères
donnant les instructions (instr_i) définissant la fonction et les valeurs (val_i, qui peuvent être des expressions à évaluer)
des paramètres (p_i) qu’elles contiennent. Exemples :
exemple
1 deff(’[x]=myplus(y,z)’,’x=y+z’)
2 deff(’[x]=mymacro(y,z)’,[’a=3*y+1’; ’x=a*z+y*y’])
3 deff(’[x,y,z]=moebius(u,v)’,[’R=1’;
4 ’x=(R+u.*cos(v/2)).*cos(v)’;
5 ’y=(R+u.*cos(v/2)).*sin(v)’;
6 ’z=u.*cos(v/2)’])

Les nouvelles fonctions définies par deff peuvent être utilisées comme arguments dans une nouvelle fonction. Quand
on définit une nouvelle fonction, on doit veiller à ce qu’elle puisse s’appliquer correctement (observer les produits, .*,
terme à terme dans le 3e exemple) à une matrice. On peut appliquer aux fonctions Scilab toutes les opérations usuelles
+,-,*,^,/ (addition, soustraction, multiplication, élevation à la puissance et division), ainsi que la dérivation et l’inté-
gration :

• La syntaxe pour évaluer en x0 toutes les dérivées partielles d’ordre 1 et d’ordre 2 d’une fonction f : Rn → Rp ,
f (x+h)−fi (x)
x 7→ f (x) = f (x0 ) + D1f (x0 ) ∗ dx + 1/2 ∗ D2f (x0) ∗ (dx. ∗ .dx) + ..., par différences finies i h
est :

code
1 deff(’y=f(x)’,’y=...’)
2 J=derivative(f,x0,h)
3 [J,J2]=derivative(f,x0,h)

où f est la fonction Scilab décrivant f ; h est un petit nombre réel à choisir avec précaution (1.d-7 par défaut) ; J =
D1f (x0 ) est la matrice jacobienne en x0 de f de taille p × n ; J2 = D2f (x0 ) est la 2-matrice jacobienne en x0 de f de
taille p × (n × n). Exemple :

(H. Quadjovie, FDS/UL, 2009) 70


CHAPITRE 4. LE LOGICIEL DE CALCUL NUMÉRIQUE SCILAB 4.1. PRISE EN MAINS DE SCILAB

exemple
1 deff(’y=f(x)’,’y=[sin(x(1))*cos(x(2));x(1)^2*x(2)^2;1+x(1)*x(2)^2]’)
2 x0=[1;2];eps=0.001;h=eps*[2;5];
3 [J,J2]=derivative(f,x0);
4 [f(x0+h)-f(x0)-J*h ,0.5*J2*(h.*.h)]

Rb
• La syntaxe pour calculer a f (t) dt est :

code
1 deff(’y=f(t)’,’y=...’)
2 [v,err]=intg(a,b,f [,ea [,er])

où ea est l’erreur absolue (= 0 par défaut) ; er est l’erreur relative (= 1.d-8 par défaut) ; err est l’erreur absolue estimée
sur le résultat. Le calcul satisfait : |I − v| ≤ max{ea, er × |I|}, avec I la valeur exacte de l’intégrale. Exemple :
exemple
1 deff(’[y]=f(x)’,’y=x*sin(30*x)/sqrt(1-((x/(2*%pi))^2))’)
2 exact=-2.5432596188;
3 abs(exact-intg(0,2*%pi,f))

R x1
• La syntaxe pour intégrer x0 f (t) dt par la méthode des quadratures est :

code
1 [x]=integrate(’f(t)’,’t’,x0,x1 [,ea [,er]])

où ea est l’erreur absolue (= 0 par défaut) ; er est l’erreur relative (= 1.d-8 par défaut). Le calcul satisfait : |I − x| ≤
max{ea, er × |I|}, avec I la valeur exacte de l’intégrale. Exemples :
exemple
1 integrate(’sin(x)’,’x’,0,%pi)
2 integrate([’if x==0 then 1,’;
3 ’else sin(x)/x,end’],’x’,0,%pi)

• La syntaxe pour calculer, par la méthode des quadratures, l’intégrale double d’une fonction f (x, y) sur un domaine
triangularisée (n est le nombre de triangles) est :

code
1 deff(’z=f(x,y)’,’z=...’)
2 [I,err]=int2d(X,Y,f [,params])

où X ∈ M3×n (R) (resp. Y) est la matrice des abscisses (resp. ordonnées) des sommets des triangles ; params est vecteur
réel [tol, iclose, maxtri, mevals, iflag], dont la valeur par défaut est [1.d-10, 1, 50, 4000, 1] et tel que :
– si iflag=0, alors l’erreur de tolérance tol est interprétée comme une erreur relative,
– si iflag=1, alors l’erreur de tolérance tol est interprétée comme une erreur abosolue.
iclose est un entier permettant de sélectionner la méthode LQM0 ou LQM1 :
– iclose=1 active LQM1, qui intègre jusqu’au bord.
– toute autre valeur active LQM0, qui est utile lorsque f (x, y) est singulière en l’un des sommets d’un triangle.
maxtri est le nombre maximum de triangles dans la triangularisation finale ; mevals est le nombre maximal d’itérations
autorisées ; err est l’erreur absolue estimée sur le résultat. Exemple :
exemple
1 X=[0,0;1,1;1,0];
2 Y=[0,0;0,1;1,1];
3 deff(’z=f(x,y)’,’z=cos(x+y)’)
4 [I,e]=int2d(X,Y,f)
5 // calcule l’integrale sur le carre [0,1]x[0,1]

71 (H. Quadjovie, FDS/UL, 2009)


CHAPITRE 4. LE LOGICIEL DE CALCUL NUMÉRIQUE SCILAB 4.2. ANALYSE MATRICIELLE

• La syntaxe pour calculer, par la méthode des quadratures, l’intégrale triple d’une famille (nbre_f est leur nombre,
il est égale à 1 par défaut) de fonctions f (xyz, nbre_f) sur un domaine discrétisé par une collection de tétraèdres (au
nombre de nbre_tet) est :
code
1 deff(’v=f(xyz,nbre_f)’,’v=...’)
2 [result,err]=int3d(X,Y,Z,f [,nbre_f[,params]])

où X ∈ M4×nbre_tet (R) (resp. Y, Z) est la matrice des abscisses (resp. ordonnées, cotes) des sommets des tétraèdres ;
xyz est le vecteur au point coordonnées ; params est un vecteur réel [minpts, maxpts, epsabs, epsrel], dont la valeur
par défaut est [0, 1000, 0.0, 1.d-5] et tel que :
– epsabs : erreur absolue souhaitée,
– epsrel : erreur relative souhaitée,
– minpts : nombre minimum d’itérations,
– maxpts : nombre maxium d’itérations.
Le nombre d’itérations sur chaque sous-région est 43 ; result est le vecteur des résultats des intégrations des nbre_f
fonctions ; err est le vecteur des erreurs absolues estimées sur les résultats. Exemple :
exemple
1 X=[0;1;0;0];
2 Y=[0;0;1;0];
3 Z=[0;0;0;1];
4 deff(’v=f(xyz,numfun)’,’v=exp(xyz’’*xyz)’)
5 [RESULT,ERROR]=int3d(X,Y,Z,’int3dex’)
6 // calcule l’integrale de exp(x*x+y*y+z*z) sur le
7 //tetraedre (0.,0.,0.),(1.,0.,0.),(0.,1.,0.),(0.,0.,1.)

4.2 Analyse matricielle


Scilab est basé sur le principe que tout calcul, programmation ou tracé graphique peut se faire à partir de matrices
rectangulaires. Les scalaires sont des matrices 1 × 1, les vecteurs lignes des matrices 1 × n et les vecteurs colonnes
des matrices n × 1. Les opérations matricielles sont +,-,*,^,/,’ (addition, soustraction, multiplication, élevation à la
puissance, division et la transposée conjuguée) et .*,.^,./,.’ (pour les opérations termes à termes et la transposée non
conjuguée). Notons que : A/B (resp. A\B) retourne la solution X de l’équation X*B=A (resp. A*X=B) ; sur les fractions ration-
nelles, Scilab effectue automatiquement les simplifications qu’il reconnaît ; Scilab permet l’indexation des composantes
et la concaténation des matrices.
Vecteurs
[a1,a2,a3,a4,a5] le vecteur ligne (a1,0 a2, a3,
1
a4, a5)
a1
B a2 C
[a1;a2;a3;a4;a5] le vecteur colonne
B C
B a3 C
B C
@ a4 A
a5
[x:y] nombres de x à y par pas de 1
[x:p:y] nombres de x à y par pas de p
linspace(x,y,n) n nombres entre x et y
logspace(x,y,n) n nombres entre 10x et 10y
v(i) ie coordonnée de v
v($) dernière coordonnée de v
v([i1:i2]) coordonnées i1 à i2 de v
v([i1:i2])=[] supprime les coordonnées i1 à i2 de v

Matrices 0 1
a1 a2 a3
[a1,a2,a3;b1,b2,b3;c1,c2,c3] la matrice @ b1 b2 b3 A
c1 c2 c3
A(i,j) cœfficient d’ordre i et j de A
A([i1:i2],:) lignes i1 à i2 de A
A($,:) dernière ligne de A
A([i1:i2],:)=[] supprime les lignes i1 à i2 de A
A(:,[j1:j2]) colonnes j1 à j2 A
A(:,$) dernière colonne de A
A(:,[j1:j2])=[] supprime les colonnes j1 à j2 de A

(H. Quadjovie, FDS/UL, 2009) 72


CHAPITRE 4. LE LOGICIEL DE CALCUL NUMÉRIQUE SCILAB 4.3. REPRÉSENTATIONS GRAPHIQUES

Polynômes
poly(v,’x’) polynôme à variable x et racines les éléments de v
x=poly(0,’x’) définit la variable x
poly(v,’x’,’c’) polynôme à variable x et cœfficients les éléments de v
coeff(P) matrice ligne cœfficients de P
roots(P) matrice ligne racines de P
factors(P) polynômes facteurs de P

Matrices particulières 1
abs(A) module de A
conj(A) conjugué de A
derivat(A) dérivée d’une matrice rationnelle A
det(A) déterminant de A
determ(A) déterminant d’une matrice polynômiale A
diag(A) matrice diagonale([A(1,1),...,A(n,n)])
„ «
Ok,. Ok
diag(A,-k), k>0 matrice
„ diag(A) O.,k «
O.,k diag(A)
diag(A,k), k>0 matrice
Ok Ok,.

Matrices particulières 2
expm(A) exponentielle de A
eye(m,n) matrice identité min(m, n) complétée par des 0
imag(A) partie imaginaire de A
inv(A) inverse de A
length(A) le produit nbre_lignes × nbre_colonnes de A
matrix(A,m,n) matrice (m, n) redistribuant les colonnes de A
ones(m,n) matrice (m, n) dont les cœfficients valent 1
phasemag(A) argument de A en degré
prod(A,’row’) matrice des produits sur chaque ligne de A
prod(A,’col’) matrice des produits sur chaque colonne de A
rand(m,n) matrice (m, n) à cœfficients aléatoires uniformes sur [0, 1]
rank(A) rang de A
real(A) partie réelle de A
size(A) matrice ligne (nbre lignes , nbre colonnes)
size(A,’r’) nombre de lignes
size(A,’c’) nombre de colonnes
size(A,’*’) nombre total d’éléments
spec(A) matrice des valeurs propres de A
sum(A,’row’) matrice des sommes sur chaque ligne de A
sum(A,’col’) matrice des sommes sur chaque colonne de A
toeplitz(v_1,v_2) matrice à diagonales constantes, où v1 (1) = v2 (1) et v1 en colonnes
trace(A) trace de A
tril(m,n) annule les cœfficients au dessus de la diagonale de A
triu(m,n) annule les cœfficients en dessous de la diagonale de A
zeros(m,n) matrice nulle de taille (m, n)

4.3 Représentations graphiques


Le principe général des représentations graphiques avec Scilab est de se ramener à des calculs sur des matrices ou
des vecteurs. Ainsi la représentation d’une fonction réelle se fait par la création d’un vecteur d’abscisses auxquelles on
applique la fonction pour créer le vecteur des ordonnées. Pour la représentation d’une surface, il faudra créer la matrices
des valeurs de la fonction sur une grille rectangulaire dans R2 . Les instructions et paramètres de représentation possèdent
toutes une syntaxe très proche (détaillée dans le menu help). Par défaut, les graphiques successifs sont superposés sur
la même fenêtre graphique. On éfface la fenêtre courante par la commande xbasc(). On active une démonstration de
toute commande de représentation graphique en saisissant nom_commande(). On efface la fenêtre graphique courante par
la commande xbasc() ou clf() et on ouvre la fenêtre numéro i par xset(’window’,i). Dans toutes les syntaxes, seules
les deux ou trois 1ers arguments d’une commande sont obligatoires. les arguments qui les suivent et qui sont indiqués
entre crochets sont facultatifs, mais si l’un d’entre eux est précisé, ceux qui le précèdent devront l’être aussi. Voici
quelques couleurs de la carte par défaut et quelques marques :
numéro : 1 2 3 4 5 6 26 29 32
couleur : noir bleu vert cyan rouge mauve marron rose jaune

73 (H. Quadjovie, FDS/UL, 2009)


CHAPITRE 4. LE LOGICIEL DE CALCUL NUMÉRIQUE SCILAB 4.3. REPRÉSENTATIONS GRAPHIQUES

numéro : 0 -1 -2 -3 -4 -5 -6 -7 -8 -9
marque : · + × ⊕ • ⋄ ∇ ∆ ♣ ◦

4.3.1 2D-courbes
Les syntaxes pour construire une courbe en 2D sont :
code
1 plot2d(X,Y,[style,cadre,leg,rect,grad])
2 plot2d(Y);

où X,Y sont deux matrices de même taille [nl,nc] ; nc est le nombre de courbes et nl est le nombre de points utilisés
pour construire chaque courbe. Les points de la ie courbe sont données par X(:,i) et Y(:,i) ; style ∈ M1×nc (Z)
indique les couleurs à attribuer à chaque courbe. Si style(i) ∈ Z∗− (resp. 0, N∗ ), alors la ie courbe est tracée avec des
marques (resp. des pixels, des traits) ; cadre est une chaîne de longueur 3 spécifiant dans l’ordre l’affichage ou non d’une
légende pour chaque courbe, le choix du rectangle de tracé et l’affichage ou non des axes et graduations :
"000" : pas de légendes, rectangle précédent, axes non tracés,
"121" : légendes, rectangle automatique, axes tracés gradués,
"021" : pas de légendes, rectangle automatique, axes tracés gradués, (défaut),
"012" : pas de légendes, rectangle à définir, axes tracés non gradués,
"031" : pas de légendes, rectangle isométrique, axes tracés gradués ;
leg = "leg1@leg2@...@legm" ou " " spécifie les légendes pour les m premières courbes ; rect = [xmin,ymin,xmax,ymax]
spécifie les bornes du rectangle de tracé ; grad = [nx,Nx,ny,Ny] avec nx (resp. ny) le nombre de sous-graduations et Nx
(resp. Ny) le nombre de graduations sur l’axe des abscisses (resp. des ordonnées). Exemples :
exemple 1 : courbe simple
1 x=[0:0.1:2*%pi]’;
2 plot2d(sin(x))

exemple 2 : plusieurs courbes


1 x=[0:0.1:2*%pi];
2 plot2d([x;x;x]’,[sin(x);sin(2*x);sin(3*x)]’)

exemple 3 : plusieurs courbes avec cadre


1 x=[0:0.1:2*%pi];
2 plot2d([x;x;x]’,[sin(x);sin(2*x);sin(3*x)]’,...
3 [1,2,3],"111","L1@L2@L3",[0,-2,2*%pi,2],[2,10,2,10])

exemple 4 : echelles isometriques


1 x=[0:0.1:2*%pi]’;
2 plot2d(x,sin(x),1,’041’)

exemple 5 : auto scale


1 x=[0:0.1:2*%pi];
2 plot2d(x’,sin(x)’,1,’061’)

exemple de courbe définie par une fonction


1 deff(’[y]=f(x)’,’y=sin(x)+cos(x)’)
2 x=[0:0.1:10]*%pi/10;
3 fplot2d(x’,f)

exemple de courbe animée


1 deff(’y=f(x,t)’,’y=t*sin(x)’)
2 x=linspace(0,2*%pi,50);
3 theta=[0:0.05:1];
4 paramfplot2d(f,x’,theta)

(H. Quadjovie, FDS/UL, 2009) 74


CHAPITRE 4. LE LOGICIEL DE CALCUL NUMÉRIQUE SCILAB 4.3. REPRÉSENTATIONS GRAPHIQUES

4.3.2 3D-courbes
Les syntaxes pour construire les courbes en 3D sont :

code
1 param3d1(X,Y,Z,[theta,alpha,leg,cadre,rect])
2 param3d1(X,Y,list(Z,colors),[theta,alpha,leg,cadre,rect])

où X,Y,Z sont trois matrices de même taille [nl,nc]. L’entier nc est le nombre de courbes et nl est le nombre de points
utilisés pour construire chaque courbe. Les points de la ie courbe sont données par X(:,i), Y(:,i) et Z(:,i) ; colors
indique les couleurs à attribuer à chaque courbe. Si colors(i) ∈ Z∗− (resp. 0, N∗ ), alors la ie courbe est tracée avec des
marques (resp. des pixels, des traits) ; theta, alpha sont les coordonnées sphériques (en degré) du point d’observation (le
graphique peut être observé sous tous les angles de vue par des mouvements de la souris) ; leg = "axe_x@axe_y@axe_z"
décrit la légende sur chaque axe ; cadre = [.,.] est un vecteur de longueur 2 spécifiant dans l’ordre le choix du rectangle
de tracé et l’affichage ou non des axes et d’une boîte entourant le tracé :
[0,0] : rectangle précédent, rien autour,
[1,2] : rectangle à définir, axes déssinés,
[0,3] : rectangle précédent, boîte autour,
[2,3] : rectangle automatique, boîte autour,
[1,4] : rectangle à définir, boîte et axes tracés . . .
rect = [xmin,xmax,ymin,ymax,zmin,zmax] spécifie les bornes du rectangle de tracé. Exemples :
exemple 1
1 t=0:0.1:5*%pi; t=t’;
2 param3d1([sin(t),sin(2*t)],[cos(t),cos(2*t)],...
3 list([t/10,sin(t)],[3,2]),35,45,"X@Y@Z",[2,3])

exemple 2
1 // Courbes asymptotiques de l’entonnoir
2 t=linspace(1,100,1000);
3 m=[1:5];
4 X=(t’*ones(1,length(m))).*cos((ones(length(t),1)*m)+log(t’*ones(1,length(m))));
5 Y=(t’*ones(1,length(m))).*sin((ones(length(t),1)*m)+log(t’*ones(1,length(m))));
6 Z=log(t)’*ones(1,length(m));
7 param3d1(X,Y,list(Z,[1:5]),51,89,"X@Y@Z",[2,0])

4.3.3 3D-surfaces
3D-surfaces résolubles Les syntaxes pour construire les surfaces résolubles en 3D sont :

code
1 plot3d(X,Y,Z [,theta,alpha,leg [,cadre,rect]]) // surface z=f(x,y)
2 plot3d(xf,yf,zf [,theta,alpha,leg [,cadre,rect]])
3 plot3d(xf,yf,list(zf,colors) [,theta,alpha,leg [,cadre,rect]])

où X ∈ Mn1×1 (R) ,Y ∈ Mn2×1 (R) sont les points coordonnées de la grille ; Z ∈ Mn1×n2 (R) telle que Z(i,j) est la
valeur de f au point (X(i),Y(j)) ; xf, yf, zf sont des matrices de dimension (nbre_som_par_face × nbre_faces), où
xf(i,j), yf(i,j) et zf(i,j) sont les coordonnées (à donner dans le sens de la normale intérieure pour le tire-bouchon)
du ie sommet de la je facette ; colors ∈ M1×nbre_faces (Z) indique les couleurs à attribuer à chaque facette. Si
colors(i) ∈ Z∗− (resp. 0, N∗ ), alors la ie facette est coloriée avec des marques (resp. des pixels, des traits) ; theta, alpha
sont les coordonnées sphériques (en degré) du point d’observation ; leg = "axe_x@axe_y@axe_z" décrit la légende sur
chaque axe ; cadre = [.,.,.] est un vecteur de longueur 3 spécifiant dans l’ordre la présence ou non des faces cachées,
le choix du rectangle de tracé et l’affichage ou non des axes et d’une boîte entourant le tracé :
[2,0,0] : faces cachées enlevées, rectangle précédent, rien autour,
[2,1,2] : faces cachées enlevées, rectangle à définir, axes déssinés,
[0,0,3] : faces cachées présentes, rectangle précédent, boîte autour,
[0,1,4] : faces cachées présentes, rectangle à définir, boîte et axes tracés ;
rect = [xmin,xmax,ymin,ymax,zmin,zmax] spécifie les bornes du rectangle de tracé. Exemples :

75 (H. Quadjovie, FDS/UL, 2009)


CHAPITRE 4. LE LOGICIEL DE CALCUL NUMÉRIQUE SCILAB 4.4. EQUATIONS DIFFÉRENTIELLES ORDINAIRES

exemple
1 plot3d(1:10,1:20,10*rand(10,20),35,45,"X@Y@Z",[2,2,3])
2 xbasc()
3 t=(0:0.3:2*%pi)’;zmat=sin(t)*cos(t’);
4 [xx,yy,zz]=genfac3d(t,t,zmat);
5 plot3d([xx xx],[yy yy],[zz 4+zz]);
6 xbasc()
7 plot3d([xx xx],[yy yy],list([zz zz+4],[4*ones(1,400) 5*ones(1,400)]))

3D-surfaces paramétrées La syntaxe pour construire une surface paramétrée est

code
1 [xf,yf,zf]=eval3dp(fun,p1,p2)
2 plot3d(xf,yf,zf [,theta,alpha,leg [,cadre,rect]])

où fun est une fonction Scilab décrivant la paramétrisation de la surface ; p1 un vecteur de taille n ; p2 un vecteur
de taille m ; xf,yf,zf sont les arguments de sortie. La commande eval3dp décrit l’ensemble des facettes de la surface
à l’aide de quatre matrices ∈ M4×(n-1)x(m-1) (R) (les quatre sommets d’une facette) et stocke (dans le sens de la
normale intérieure pour le tire-bouchon) dans xf(i,j), yf(i,j) et zf(i,j) les coordonnées du ie sommet de la je
facette. Exemples :
exemple 1
1 p1=linspace(0,2*%pi,10);
2 p2=linspace(0,2*%pi,10);
3 deff(’[x,y,z]=scp(p1,p2)’,[’x=p1.*sin(p1).*cos(p2)’;
4 ’y=p1.*cos(p1).*cos(p2)’;
5 ’z=p1.*sin(p2)’])
6 [x,y,z]=eval3dp(scp,p1,p2);
7 plot3d(x,y,z)

exemple 2
1 // Bande de Moebius
2 deff(’[x,y,z]=moebius(u,v)’,[’R=1’;
3 ’x=(R+u.*cos(v/2)).*cos(v)’;
4 ’y=(R+u.*cos(v/2)).*sin(v)’;
5 ’z=u.*cos(v/2)’])
6 u=linspace(0,-2*%pi,20);
7 v=linspace(0,2*%pi,160);
8 [x,y,z]=eval3dp(moebius,u,v);
9 plot3d(x,y,z)

4.4 Equations différentielles ordinaires


Soit g(t, u(t), u′ (t), . . . , u(s) (t)) = 0 une équation différentielle ordinaire, à inconnue u(t) (pouvant être un vecteur)
d
et pouvant se mettre sous la forme dt y = f (t, y), avec y = (u, u′ , . . . , u(s−1) ).
• La syntaxe pour la résoudre l’EDO par Scilab, en partant de y(t0 ) = y0 , est :

code
1 y=ode(y0,t0,t,f)

où y0 = (u(t0 ), u′ (t0 ), . . . , u(s−1) (t0 )) est le vecteur des conditions initiales ; t0 est l’instant initial de récupération
de l’état y ; t = (t0,...,T) est le vecteur de tous les instants de récupération de l’état y ; Si f1(y(1),...,y(s)),
d
..., fs(y(1),...,y(s)) sont les seconds membres de dt y = f (t, y), alors le script Scilab définissant f doit avoir pour
syntaxe :

(H. Quadjovie, FDS/UL, 2009) 76


CHAPITRE 4. LE LOGICIEL DE CALCUL NUMÉRIQUE SCILAB 4.4. EQUATIONS DIFFÉRENTIELLES ORDINAIRES

code
1 deff(’yprim=f(t,y)’,[’yprim1=f1(y(1),...,y(s))’;
2 ’yprim2=f2(y(1),...,y(s))’;
3 ...;
4 ’yprims=fs(y(1),...,y(s))’;
5 ’yprim=[yprim1,...,yprims]’])

Remarquer que l’instruction y=ode(y0,t0,t,f) récupère le tableau de données :


u(t0 ) ... u(T )
u′ (t0 ) ... u′ (T )
. . .
.. .. ..
u (s−1) (t0 ) ... u (s−1) (T )
dans lequel la 1re ligne donne la solution du système sur les instants de récupération ; les 1re et 2e lignes permettent la
représentation dans le plan de phase. Exemples :
exemple 1
1 // Simple EDO en une dimension
2 // dy/dt=y^2-y*sin(t)+cos(t), y(0)=0
3 deff(’[ydot]=f(t,y)’,’ydot=y^2-y*sin(t)+cos(t)’)
4 y0=0;t0=0;t=0:0.1:%pi;
5 y=ode(y0,t0,t,f)
6 plot(t,y)

exemple 2
1 // Equation de Vanderpol
2 // d^2y/dt^2 =c*(1-y^2) dy/dt -y , y(0)=[-2.5;2.5]
3 deff(’yprim=f(t,y)’,[’yprim1=y(2)’;
4 ’yprim2=0.4*(1-y(1)^2)*y(2)-y(1)’;
5 ’yprim=[yprim1,yprim2]’])
6 t0=0;
7 y0=[-2.5;2.5];
8 t=linspace(0,30,500);
9 sol=ode(y0,t0,t,f);
10 plot2d(sol(1,:)’,sol(2,:)’,5,"021") // representation dans le plan de phase
11 basc()
12 plot2d(t’,sol(1,:)’,5,"021") // courbe solution de l’equation

exemple 3
1 // Equations geodesiques
2 // d^2u/dt^2=-A(u,v)du/dt dv/dt ; d^2v/dt^2=-B(u,v)(du/dt)^2-C(u,v)(dv/dt)^2
3 deff(’yprim=f(t,y)’,[’yprim1=y(3)’;
4 ’yprim2=y(4)’;
5 ’yprim3=-A(y(1),y(2))*y(3)*y(4)’;
6 ’yprim4=-B(y(1),y(2))*y(3)^2-C(y(1),y(2))*y(4)^2’;
7 ’yprim=[yprim1,yprim2,yprim3,yprim4]’])
8 t0=0;
9 y0=[2;2;2;2];
10 t=[0:0.1:5];
11 sol=ode(y0,t0,t,f);
12 plot2d(sol(1,:)’,sol(2,:)’,5,"000")

• La syntaxe pour représenter en 2D le champ des vecteurs directionnel de l’équation différentielle ordinaire
d
dt
y = f (t, y) est :
code
1 fchamp(f,tc,xr,yr,[arfact,rect,cadre])
2 fchamp(x,y,xr,yr,[arfact,rect,cadre])

77 (H. Quadjovie, FDS/UL, 2009)


CHAPITRE 4. LE LOGICIEL DE CALCUL NUMÉRIQUE SCILAB 4.5. INTERPOLATION DE DONNÉES

où f retourne un vecteur colonne de taille 2 donnant les fonctions coordonnées (x,y) des vecteurs du champ à un instant
tc ∈ {t0,...,T} choisi parmi les instants de récupération ; xr,yr sont 2 vecteurs lignes de tailles n1 et n2 définissant
la grille des points de représentation des vecteurs du champ ; arfact est le facteur d’échelle (=1 par défaut) ; rect
est le vecteur [xmin,ymin,xmax,ymax] spécifiant les bornes du rectangle de tracé ; cadre est une chaîne de longueur 3
spécifiant dans l’ordre l’affichage ou non d’une légende pour chaque courbe, le choix du rectangle de tracé et l’affichage
ou non des axes et graduations :
"000" : pas de légendes, rectangle précédent, axes non tracés,
"121" : légendes, rectangle automatique, axes tracés gradués,
"021" : pas de légendes, rectangle automatique, axes tracés gradués, (défaut),
"012" : pas de légendes, rectangle à définir, axes tracés non gradués,
"031" : pas de légendes, rectangle isométrique, axes tracés gradués.
Exemple :
exemple
1 deff(’[xdot] = derpol(t,x)’,[’xd1=x(2)’;
2 ’xd2=-x(1)+(1-x(1)**2)*x(2)’;
3 ’xdot=[xd1;xd2]’])
4 xf= -1:0.1:1;
5 yf= -1:0.1:1;
6 fchamp(derpol,0,xf,yf)
7 xbasc()
8 fchamp(derpol,0,xf,yf,1,[-2,-2,2,2],"011")

4.5 Interpolation de données


La commande fit_dat permet d’ajuster une fonction définie par l’utilisateur à un ensemble de points de données,
avec la syntaxe :
code
1 [p,err]=fit_dat(G,p0,Z [,W] [,pmin,pmax] [,DG])

1. G : fonction Scilab e=G(p,z), où e est de type ne × 1, p est np × 1 et z est nz × 1


2. p0 : paramètres initiaux (type np × 1)
3. Z : matrice [z_1,z_2,...z_n], où z_i de type nz × 1 est la ie colonne de relevés
4. W : matrice des poids de type ne × ne (optionnel ; par défaut, les poids sont pris égaux à 1)
5. pmin : borne inférieure de p (optionnel ; type np × 1)
6. pmax : borne supérieure de p (optionnel ; type np × 1)
7. DG : dérivée partielle de G par rapport à p (optionnel ; S=DG(p,z), avec S de type ne × np)

Pour une fonction donnée G(p,z), la commande fit_dat détermine le meilleur vecteur de paramètres p approchant l’éga-
lité G(p, zi ) = 0, pour un ensemble de données zi . L’algorithme utilisé minimise G(p, z1 )′ W G(p, z1 )+G(p, z2 )′ W G(p, z2 )+
... + G(p, zn )′ W G(p, zn ). Exemples :

exemple
1 deff(’y=FF(x)’,’y=a*(x-b)+c*x.*x’)
2 X=[];Y=[];
3 a=34;b=12;c=14;for x=0:.1:3, Y=[Y,FF(x)+100*(rand()-.5)];X=[X,x];end
4 Z=[Y;X];
5 deff(’e=G(p,z)’,’a=p(1),b=p(2),c=p(3),y=z(1),x=z(2),e=y-FF(x)’)
6 [p,err]=fit_dat(G,[3;5;10],Z)
7 xset(’window’,0)
8 xbasc();
9 plot2d(X’,Y’,-1)
10 plot2d(X’,FF(X)’,5,’002’)
11 a=p(1),b=p(2),c=p(3);plot2d(X’,FF(X)’,12,’002’)

(H. Quadjovie, FDS/UL, 2009) 78


CHAPITRE 4. LE LOGICIEL DE CALCUL NUMÉRIQUE SCILAB 4.6. DE SCILAB À OCTAVE

12
13 a=34;b=12;c=14;
14 deff(’s=DG(p,z)’,’y=z(1),x=z(2),s=-[x-p(2),-p(1),x*x]’)
15 [p,err]=fit_dat(G,[3;5;10],Z,DG)
16 xset(’window’,1)
17 xbasc();
18 plot2d(X’,Y’,-1)
19 plot2d(X’,FF(X)’,5,’002’)
20 a=p(1),b=p(2),c=p(3);plot2d(X’,FF(X)’,12,’002’)

4.6 De scilab à octave


La syntaxe dans octave est similaire à celle de scilab. La commande help s’utilise sans parenthèses, tandis que set
n’est pas usitée ou est remplacé par gset, lorsqu’on veut utiliser la syntaxe gnuplot. Les opérateurs portent les mêmes
noms. Dans octave, supprimer le % devant les noms des constantes. Pour l’indexation des composantes de matrices,
substituer end à $.

Les constructions graphiques sont exécutées en mode console comme suit :


exemple 1
1 octave:1> x = linspace(-pi, pi, 100);
2 octave:2> y = sin(x);
3 octave:3> plot(x, y);

exemple 2
1 octave:1> x = linspace(-pi, pi);
2 octave:2> plot(x, sin(x) + cos(2*x)/2, ’+b’);
3 octave:3> axis([-pi, pi, -1.75, 1]);
4 octave:4> title(’My Graph’)
5 octave:5> legend(’The Data’)
6 octave:6> xlabel(’x’);
7 octave:7> ylabel(’y’);

exemple 3
1 octave:1> z = [0:0.05:5];
2 octave:2> plot3(cos(2*pi*z), sin(2*pi*z), z, ";;");
3 octave:3> title("Helix");
4 octave:4> xlabel("x");
5 octave:5> ylabel("y");
6 octave:6> zlabel("z");

exemple 4
1 octave:1> x = linspace(-pi, pi, 20);
2 octave:2> [X, Y] = meshgrid(x);
3 octave:3> mesh(x, x, sin(X).*cos(Y));

Les scripts sont au format nom_fichier.m et sont compilés par l’instruction source nom_fichier.
exemple
1 clear all;
2 verbose = 1;
3 mu1 = 4;
4 mu0 = 1;
5 N = 2000;
6 x0 = 0.8;
7
8 clearplot;

79 (H. Quadjovie, FDS/UL, 2009)


CHAPITRE 4. LE LOGICIEL DE CALCUL NUMÉRIQUE SCILAB 4.6. DE SCILAB À OCTAVE

9 axis([1 4 0 1])
10
11 gset xzeroaxis ls 0 lt 1 lw 1
12 gset yzeroaxis ls 0 lt 1
13 gset xlabel "Growth Rate, r";
14 gset ylabel "Equilibrium Point, x*";
15
16 for i = (1 : N + 1)
17 mu = mu0 + (i - 1) * (mu1 - mu0) / N;
18 clear x;
19 x(1) = x0;
20 j = 2;
21 notconverged = 1;
22 while (notconverged)
23 x(j) = mu * x(j - 1) * (1 - x(j - 1));
24 j++;
25 for k = (1 : j - 2)
26 if (abs(x(k) - x(j-1)) < 0.0001)
27 kstar = k;
28 notconverged = 0;
29 break;
30 endif
31 endfor
32 endwhile
33 clear muon;
34 clear xstar;
35 muon = 1;
36 xstar = 0;
37 for n = (kstar : j - 2)
38 muon = [muon ; mu];
39 xstar = [xstar ; x(n)];
40 endfor
41 M = [muon xstar];
42 command = \
43 sprintf("gset title \"BIFURCATION PLOT FOR THE LOGISTIC MAP (1 < r < %f). Period = %d\"" \
44 ,mu,j-1-kstar);
45 eval(command);
46 hold on
47 gplot M title "" with dots 0
48 if (verbose)
49 if ((j - 1 - kstar) == 3)
50 ans = input("Ready? Enter 1 to continue to the end ...\n");
51 if (ans == 1) verbose = 0; endif
52 endif
53 endif
54 endfor
55 gset title "BIFURCATION PLOT FOR THE LOGISTIC MAP (1 < r < 4)"
56 replot
57 hold off;

(H. Quadjovie, FDS/UL, 2009) 80


Chapitre 5

Le logiciel de calcul algébrique


Macaulay2

Macaulay2 est un outil interactif libre dédié à la création scientifique en géométrie algébrique et algèbre commu-
tative. Les algorithmes de calculs implémentés dans Macaulay2 permettent la création et la manipulation de tout type
d’anneaux, les opérations arithmétiques sur les anneaux et les matrices, les résolutions projectives de modules, la déter-
mination des bases de Gröbner, le calcul des séries de Hilbert sur les anneaux gradués ou les modules, le calcul de la
cohomologie des faisceaux cohérents etc. Nous ne décrivons ici que les commandes Macaulay2 permettant de décrire les
ensembles solutions de systèmes d’équations polynômiales en dimensions finies. Il en existe beaucoup d’autres.

5.1 Installation manuelle


On décompresse Mac2.zip, on coupe son contenu Macaulay2-0.9.2 dans le dossier /usr/local/lib et on se positionne
dans /usr/local/lib/Macaulay2-0.9.2/lib/Macaulay2-0.9.2. On exécute alors les six opérations suivantes.
a. Editer le fichier .../bin/M2 et y définir le M2HOME=/usr/local/lib/Macaulay2-0.9.2/lib/Macaulay2-0.9.2.
a. Editer le fichier .../bin/M2.bat et y définir M2HOME=/usr/local/lib/Macaulay2-0.9.2/lib/Macaulay2-0.9.2 et
M2WINH=\usr\local\lib\Macaulay2-0.9.2\lib\Macaulay2-0.9.2, puis mettre une copie du fichier M2.bat dans
le dossier /cygwin.
c. Editer le fichier .../bin/M2-help et y définir le M2HOME=/usr/local/lib/Macaulay2-0.9.2/lib/Macaulay2-0.9.2.
d. Editer le fichier .../emacs/M2-init.el et y définir M2HOME comme précédemment.
e. Enrichir les chemins de recherche par :
export PATH=/usr/local/lib/Macaulay2-0.9.2/bin:$PATH,
export PATH=/usr/local/lib/Macaulay2-0.9.2/lib/Macaulay2-0.9.2/emacs:$PATH,
f. Optionnellement exécuter ./setup.

5.2 Prise en mains de Macaulay2


On active Macaulay2 avec la commande m2, les déplacements se font avec les flèches, on éfface un caractère à gauche
du curseur par ctrl ← (ou shift ←, selon la configuration du clavier), on détruit tous les objets créés durant une
session par clearAll, on recommence une nouvelle session Macaulay2 par restart et on quitte Macaulay2 avec end (ou
exit ou quit, selon la configuration du clavier). Pour obtenir un résultat, on tape une instruction à l’invite iN et on
presse la touche enter. Le résultat est affecté à la variable oN et en plus (si on le précise) à une variable assignée (par
nom_var = instr). Le type de l’objet créé est également affiché (sauf pour les entiers naturels et les booléens). Les com-
mentaires sont précédés de --. L’essentiel de la documentation en ligne sur Macaulay2 s’obtient par help "Macaulay 2".
La documentation correspondante à un objet s’affiche par documentation nom_objet ou help nom_objet, un résumé de
cette documentation est donné par briefDocumentation nom_objet. La liste des commandes dont le nom contient une
chaîne de caractères est obtenue par apropos "...". Des examples d’utilisation d’un objet s’affichent par l’instruction
examples nom_objet. Le calculateur algébrique Macaulay2 est toujours livré avec une liste de tests donnant un aperçu
complet de ses diverses fonctionnalités.

81
CHAPITRE 5. LE LOGICIEL DE CALCUL ALGÉBRIQUE MACAULAY2 5.3. ARITHMÉTIQUE

Les objets basiques Macaulay2 sont de plusieurs types : les nombres, familles (suites, listes et tableaux), tables sé-
quentielles (ensembles finis, multi-ensembles), chaînes de caractères, symboles et fonctions. Leur liste complète s’obtient
par help Thing. Dans Macaulay2, les objets sont décrits de la manière suivante :

"..." : pour les chaînes de caractères,


(elt1,...,eltS) : pour les suites,
elt_deb .. elt_fin : pour les suites à pas = 1 de nombres ou de lettres,
nbr:objet : pour les suites dans lesquelles objet est répété nbr fois,
{elt1,...,eltS} : pour les listes,
[elt1,...,eltS] : pour les tableaux et
nom_ens = set{liste_elements} : pour les ensembles finis entrés avec répétions, mais affichés sans répétitions.

Citons quelques manipulations standards d’objets :

chaine1 | chaine2 : concaténation horizontale de chaînes


chaine1 || chaine2 : concaténation verticale de chaînes
join(liste1,...,listeS) : concaténation de listes de même type
delete(elt_a_supprimer,nom_liste) : supprime toutes les occurences d’un élément d’une liste
sum nom_liste : somme des éléments d’une liste
product nom_liste : produit des éléments d’une liste
append(nom_tab, list_val) : extension à droite
prepend(list_val, nom_tab) : extension à gauche
tally nom_liste ou tally nom_suite : résume sous la forme d’une table séquentielle (élément ; nombre d’apparition)
nom_ens #? nom_elt : retourne la valeur de vérité de l’appartenance ou non d’un élément à un ensemble
subsets nom_ens : retourne l’ensemble des parties d’un ensemble

Les conventions d’entrées et sorties dans Macaulay2 sont :

= : est le symbole d’affectation,


; : supprime l’affichage du résultat d’une entrée,
oo : affiche le résultat qui précède,
ooo : affiche le résultat qui précède 2 fois,
print instr : affiche l’exécution d’une instruction,
scan(objet, print) : affiche en colonne les éléments de objet,
instr / print @@ print : ordonne l’affichage ligne par ligne de l’exécution d’une instruction,
<< instr : affiche sans l’invite oN,
<< instr1 << endl << instr2 << endl; : affiche sur plusieurs lignes sans l’invite oN,
"nom_fichier" << instr << endl << close; : envoie le résultat de l’exécution de instr dans le fichier nom_fichier,
needs "nom_package.m2" : charge les commandes d’un nouveau package,
load "nom_package.m2" : charge et exécute les commandes d’un nouveau package,
userSymbols() : affichent la liste de tous les objets créés durant une session,
get "nom_fichier" : recouvre le contenu d’un fichier,
input "nom_fichier" : vérifie le contenu d’un fichier,
kill "nom_fichier" : tue un processus associé à un fichier.

5.3 Arithmétique
Les ensembles de nombres (qui sont des anneaux) sont définis par :

ZZ (l’ensemble Z des entiers relatifs),


QQ (l’ensemble Q des nombres rationnels),
RR (l’ensemble R des nombres réels),
CC (l’ensemble C des nombres complexes).

Les ensembles de nombres (modulo un entier premier n) s’écrivent : ZZ/n (l’ensemble Z/nZ ).

Quelques constantes prédéfinies dans Macaulay2 :

pi (le nombre π),



ii (le complexe −1),
infinity (l’infini ∞),

(H. Quadjovie, FDS/UL, 2009) 82


CHAPITRE 5. LE LOGICIEL DE CALCUL ALGÉBRIQUE MACAULAY2 5.3. ARITHMÉTIQUE

true (le bouléen vrai),


false (le bouléen faux).

Les opérations élémentaires sont accessibles via les commandes :

+ : addition,
- : soustraction,
* : multiplication,
^ : élevation à la puissance,
/ : division,
@@ : composition de fonctions,
++ : somme directe,
** ou tensor : produit tensoriel,
== : égalité,
and : conjonction logique,
or : disjonction logique,
not : négation,

Les calculs conditionnels sont implémentés via :

if : test conditionnel,
if ... then ... else : si ..., alors ..., sinon ...
if ... then ... return : si ..., alors ..., procède ...
...; while ... do ... : tandis que ..., fais ...
for ... from ... to ... list [print] ... : pour ..., de ... à ..., opère ...
for ... from ... to ... do ... break ... : pour ..., de ... à ..., éffectue ..., suspend si ...

Autres calculs :

even i : affiche la valeur de vérité de "i est pair",


isPrime i : affiche la valeur de vérité de "i est premier",
isConstant nom_const : vérifie le statut constant ou non d’une quantité,
denominator(nom_fraction) : affiche le dénominateur d’une fraction,
numerator(nom_fraction) : affiche le numérateur d’une fraction,
conjugate expr_complexe : conjugué d’un complexe,
realPart expr_complexe : partie réelle d’un complexe,
imaginaryPart expr_complexe : partie imaginaire d’un complexe,
# : nombre d’entrées d’une liste. L’instruction nom_obj#k affiche la ke entrée de nom_obj.

Les fonctions primitives s’écrivent :

abs(...) : valeur absolue


acos(...) : Arccosinus
asin(...) : Arcsinus
atan(...) : Arctangente
p
binomial(n,p) : cœfficient binomial Cn
ceiling(...) : partie entière +1
cos(...) : cosinus
cosh(...) : cosinus hyperbolique
exp(...) : exponentielle
factor nbr : procède à la décomposition en produit de nombres premiers
floor(...) : partie entière
gcd(...) : plus grand commun diviseur
log(...) : logarithme néperien
max(...) : le plus grand parmi
min(...) : le plus petit parmi
partitions n : les partitions de l’entier n
partitions(n,k) : les partitions de l’entier n en des nombres n’excédant pas k
sin(...) : sinus
sinh(...) : sinus hyperbolique
sqrt(...) : racine carrée
tan(...) : tangente

83 (H. Quadjovie, FDS/UL, 2009)


CHAPITRE 5. LE LOGICIEL DE CALCUL ALGÉBRIQUE MACAULAY2 5.4. GÉOMÉTRIE DES SCHÉMAS

tanh(...) : tangente hyperbolique

Dans Macaulay2, la définition et la manipulation de ses propres fonctions s’opèrent par :

nom_fonct = (liste_var) -> expression : définit une nouvelle fonction,


nom_fonct(arg1,...,argS) : calcule la valeur image par une fonction,
apply(obj, nom_fonct) : appliquer une fonction sur chaque élément d’un objet,
integrate(nom_fonct,val_inf,val_sup) : calcule l’intégrale définie d’une fonction.

La liste des fonctions primitives s’obtient par help Function. Les nouvelles commandes se définissent par :

code
1 nom_nouv_commande = method()
2 nom_nouv_commande nom_ens_entrees := instructions_de_definition

Les instructions code nom_commande ou code(nom_commande,types_objet) localisent et affichent les codes sources de
commandes, lorsqu’elles s’appliquent sur les types d’objets spécifiés. Les méthodes de calculs implémentées dans Ma-
caulay2 au sujet d’un type d’objet se listent par methods nom_type (exemple methods CC).

5.4 Géométrie des schémas


Les anneaux de polynômes se définissent par :

nom_ann[liste_ind] : pour l’anneau nom_ann[ind1, ..., indS[M onomialOrder => [Lex|GrevLex]]],


Examples : ZZ[a..d] ֒→ Z[a, b, c, d] ; ZZ/n[x,y,z] ֒→ Z/n Z [x, y, z] ; QQ[X,Y] ֒→ Q[X, Y ] ; RR[x] ֒→ R[x].
nom_ann[x_0..x_S] : pour l’anneau \nom_ann[x0 , x1 , ..., xS ], lorsqu’on choisit d’indexer les indéterminées,
Examples : ZZ[a_0..a_4] ֒→ Z[a0 , a1 , a2 , a3 , a4 ].
vars nom_anneau : liste des indéterminées d’un anneau,
ZZ/n[ind1,...,indS]/(list_generateurs) : définit un anneau-quotient,
describe nom_ann : affiche la définition originelle d’un anneau au cours d’une session Macaulay2,
frac nom_anneau : construit le corps des fractions d’un anneau.

Voici une liste de primitives affichant sur les anneaux des valeurs bouléennes :

nom_ann1 == nom_ann2 : indique l’égalité ou non de deux anneaux,


nom_ann1 != nom_ann2 : indique la différence ou non de deux anneaux,
isCommutative(nom_ann) : indique la commutativité ou non d’un anneau,
isField nom_ann : affiche la valeur de vérité de l’assertion "être un corps",
isHomogeneous nom_ann : affiche la valeur de vérité de l’assertion "être homogène",
isIdeal nom_ann : affiche la valeur de vérité de l’assertion "être un idéal",
isPrime nom_ann : affiche la valeur de vérité de l’assertion "être premier",
isModule nom_ann : affiche la valeur de vérité de l’assertion "être un module",
isQuotientRing nom_ann : affiche la valeur de vérité de l’assertion "être un anneau quotient",
isPolynomialRing nom_ann : affiche la valeur de vérité de l’assertion "être un anneau de polynômes",
isSubset(nom_ann1,nom_ann2) : affiche la valeur de vérité de l’assertion "être un sous-ensemble de",
isOpenFile nom_ens : affiche la valeur de vérité de l’assertion "être un ouvert".

Les manipulations de matrices s’opèrent par :

nom_mat = matrix{{list_ligne1}, {list_ligne2},..., {list_ligneK}} : définit une matrice,


minors(nbr, nom_mat) : affiche les mineurs d’ordre nbr d’une matrice,
transpose nom_mat : l’opérateur de transposition,
det nom_mat : l’opérateur déterminant,
trace nom_mat : l’opérateur trace,
diff nom_mat : l’opérateur dérivée,
jacobian nom_mat : matrice jacobienne.

(H. Quadjovie, FDS/UL, 2009) 84


CHAPITRE 5. LE LOGICIEL DE CALCUL ALGÉBRIQUE MACAULAY2 5.5. DE MACAULAY2 À SINGULAR

5.4.1 Variétés algébriques


Les ensembles algébriques se traitent par :

nom_ideal = ideal(list_generateurs) : définit l’idéal d’un ensemble algébrique (ensemble des zéros communs aux
générateurs de l’idéal). Il faut prendre soin de définir au préalable l’anneau d’appartenance des générateurs,
nom_moideal = monomialIdeal (list_generateurs) : définit l’ idéaux monomial correspondant.

Citons quelques fonctions primitives agissant sur les idéaux :

nom_ideal_i : affiche le ie générateur d’un idéal, (i ∈ {0, 1, 2, . . .})


gens nom_ideal : affiche la matrice ligne des générateurs dans la base de définition d’un idéal,
transpose gens nom_ideal : affiche la matrice colonne transposée des générateurs d’un idéal,
numgens nom_ideal : nombre de générateurs dans la base de définition,
gb nom_ideal : base de Gröbner d’un idéal,
gens gb nom_ideal : affiche la matrice ligne des générateurs dans la base de de Gröbner d’un idéal,
numgens gb nom_ideal : nombre de générateurs dans la base de Gröbner,
dim nom_ideal : dimension de Krull d’un idéal,
codim nom_ideal : codimension d’un idéal,
degree nom_ideal : degré d’un idéal,
nom_ideal^n : l’idéal puissance ne ,
radical nom_ideal : le radical d’un idéal,
ambient nom_ideal-quotient : affiche l’anneau mère d’un idéal-quotient,
decompose nom_ideal : affiche la liste des idéaux des composantes irréductibles des zéros de nom_ideal,
primaryDecomposition nom_ideal : affiche la liste des idéaux des composantes primaires des zéros de nom_ideal,
isMonomialIdeal(nom_ideal) : indique si un idéal est monomial ou non.

Quelques opérations binaires sur les idéaux :

intersect(nom_ideal1, nom_ideal2) : idéal de la réunion des ensembles algébriques correspondants (est égal à
l’idéal produit nom_ideal1 * nom_ideal2 lorsque ce dernier est radiciel),
nom_ideal1 + nom_ideal2 : l’idéal de l’intersection des ensembles algébriques correspondants,
localize(nom_ideal1, nom_ideal2) : le localisé d’un idéal par un autre,
substitute(nom_ideal,nouv_anneau) : redéfinit les générateurs de l’idéal nom_ideal dans l’anneau nouv_anneau.

Les variétés algébriques sont traités par Macaulay2 de la façon suivante :

Spec nom_ann ou Spec(ann) : création de la variété affine ayant pour anneau de coordonnées nom_ann,
Proj nom_ann ou Proj(ann) : création de la variété projective ayant pour anneau de coordonnées homogène nom_ann.
Exemple : Proj(QQ[x_0 .. x_n]),
nom_vari = variety nom_ideal : recouvre la définition des zéros d’un idéal,
singularLocus nom_ideal : ensemble des singularités d’une variété algébrique,

5.4.2 Morphismes de variétés algébriques


Les morphismes entre variétés sont entrés par :

nom_morph = map(nom_ann1, nom_ann2, {list_instr}) : définition d’un morphisme de variétés algébriques


nom_morph = nom_mat : définition d’un morphisme de variétés algébriques par sa matrice
kernel nom_morph : affiche l’idéal du noyau d’un morphisme
cokernel nom_morph : affiche l’idéal du co-noyau d’un morphisme
rank kernel nom_morph : affiche le rang du noyau d’un morphisme
image nom_morph : affiche l’idéal de l’image d’un morphisme
isInjective nom_morph : affiche la valeur de vérité de l’assertion "être injectif"
isSurjective nom_morph : affiche la valeur de vérité de l’assertion "être surjectif"
isIsomorphism nom_morph : affiche la valeur de vérité de l’assertion "être un isomorphisme"
isWellDefined nom_morph : affiche la valeur de vérité de l’assertion "être bien défini"

5.5 De Macaulay2 à Singular

85 (H. Quadjovie, FDS/UL, 2009)


CHAPITRE 5. LE LOGICIEL DE CALCUL ALGÉBRIQUE MACAULAY2 5.5. DE MACAULAY2 À SINGULAR

(H. Quadjovie, FDS/UL, 2009) 86


Chapitre 6

Le simulateur Surface Evolver


Surface Evolver est un programme interactif libre conçu pour l’étude des surfaces en mouvement sous l’effet
d’une énergie totale que l’on souhaite minimiser et astreintes à des contraintes d’évolution. Cette énergie peut avoir
plusieurs composantes : tensions superficielles, énergie potentielle gravitationnelle ou énergies générées par les diverses
contraintes. Surface Evolver détermine le mouvement à chaque étape de l’évolution de la manière suivante : la force
sur chaque sommet est le gradient de l’énergie totale de la surface ; cette force est rendue conforme aux contraintes du
mouvement ; le déplacement actuel est calculé en multipliant la force par un facteur global d’échelle.

6.1 Prise en mains de Surface Evolver


On crée le repertoire de travail avec un gestionnaire de fichiers (tkdesk, file manager, windows explorer...). On
s’y positionne depuis un terminal et on active Surface Evolver avec la commande evolver. Le logiciel, une fois lancé,
se présente sous la forme d’une fenêtre de commande où peut être exécutée toute instruction. Pour exécuter une série
d’instructions (ou script), on saisit au préalable le script dans fichier.fe à l’aide d’un éditeur de texte brut et on lance
le script dans la fenêtre principale de Surface Evolver en tapant fichier.fe à l’invite Enter new datafile name:. Le
résultat de l’exécution d’un script peut être visualisé en tapant s à l’invite Enter command:, ce qui génère le prompt
Graphics command: permettant la saisie des commandes graphiques. On change de prompt avec la commande q. Le
résultat peut être exporté avec la commande P. Plusieurs formats (options 1 à 9) sont alors disponibles (P 3 pour post-
script). On quitte Surface Evolver avec q.

Commandes pouvant être exécutées sous : Graphics command

u : Rotation vers le haut de 6 degrés.


d : Rotation vers le bas de 6 degrés.
r : Rotation à droite de 6 degrés.
l : Rotation à gauche de 6 degrés.
c : Rotation dans le sens des aiguilles d’une montre de 6 degrés.
C : Rotation dans le sens contraire des aiguilles d’une montre de 6 degrés.
z : Zoom par un facteur de 1,2.
s : Zoom par un facteur de -1,2.

Fleches : Translation de l’ image.

m : Centre l’image.
R : Initialise les paramètres de visualisation.
T : Active ou désactive de nouvelles transformations de visualisation.
e : Active ou désactive l’affichage des arêtes des faces ou facettes.
B : Active ou désactive l’affichage des faces ou facettes de frontière.
v : Active ou désactive ridge and valley coloring.
w : Active ou désactive les facettes à 3 points sous contraintes.
b : Affiche une boîte entourant le graphe.
+,- : Increment, decrement fill color.
H : Active ou désactive l’affichage des faces ou facettes du corps.
t : Set clipping mode for torus.

87
CHAPITRE 6. LE SIMULATEUR SURFACE EVOLVER 6.1. PRISE EN MAINS DE SURFACE EVOLVER

?,h : Affiche l’aide sur les commandes graphiques.


x,q : Quitte le menu des commandes graphiques..

Commandes pouvant être exécutées sous : Enter command

Informations :
C : Compile le script Surface Evolver.
c : Rapporte le nombre d’éléments.
e : Extrapole.
i : Informe sur les statuts.
v : Rapporte les volumes.
X : Liste les éléments extra-attribués.
z : Procède au test de courbure.

Caractéristiques du modèle :
A : Définit les constantes ajustables.
a : Procède à la normalisation de l’aire.
b : Définit les pressions corporelles.
f : Définit la constante de diffusion.
G : Définit la gravité.
J : Affiche les modifications à chaque mouvement.
k : Affiche la constante de saut au bord.
M : Sélectionne le modèle lineaire/quadratique.
m : Sélectionne un facteur de mouvement fixe.
p : Définit la pression ambiante.
Q : Rapporte ou définit des quantités.
U : Active la méthode du gradient conjugué.
W : Affiche l’homothétie.

Evolution de la surface :
g : Procède à une étape d’itération. g n pour n itérations successives.
j : Jiggle once.
K : Skinny triangle long edge divide.
l : Subdivise les arêtes trop longues.
N : Set target volumes to actual.
n : Notch ridges and valleys.
O : Pop non-minimal edges.
o : Pop non-minimal vertices.
r : Raffine la triangulation des facettes.
t : Elimine les arêtes petites.
u : Equiangularise la triangulation.
V : Affiche le centre de gravité de l’objet.
w : Elimine les petits triangles.
y : Torus duplication.
Z : Zoom in on vertex.

Exporter :
D : Toggle display every iteration.
d : Sauvegarde la surface dans un tableau de données.
P : Exporte sous un format graphique. P 3 pour le format postscript.
s : Visualise l’objet déformé ou non.

Divers :
F : Toggle command logging.
H,h,? : Active l’aide en ligne.
q,x : Quitte Surface evolver.

Les commandes G,j,l,m,n,t,w s’appliquent à des arguments réels, qui doivent être rentrés sur la même ligne (exemple
G 2) ou en réponse à une invite.

(H. Quadjovie, FDS/UL, 2009) 88


CHAPITRE 6. LE SIMULATEUR SURFACE EVOLVER 6.2. SYNTAXE ET COMMANDES EVOLVER

6.2 Syntaxe et commandes Evolver


Surface Evolver est doté d’un langage de programmation propre dont voici quelques commandes générales :

Opérateurs :
:= : commande d’assignation standard.
() : symbole de regroupements et notation fonctionnelle.
^ ou ** : élevation à la puissance.
*,/,%,mod,imod,idiv : arithmétique.
+,- : arithmétique.
==,>,<,<=,>=,!= : comparaison.
NOT, ! : NON logique.
AND, && : ET logique.
OR, || : OU logique.
?: : expression conditionnelle, comme en language C.
if ... then ... else... :
do ... while ... :
while ... do ... :
for ... :
foreach ... :
break :
continue :
return :
?: :

Constantes :
e : la constante exp(1).
pi : le nombre π.

Fonctions :
sqr, sqrt, sin, cos, tan, acos, sinh, cosh, asin, atan, atan2(y,x), log, exp, abs,
floor, ceil, tanh, asinh, acosh, atanh, pow, maximum(a,b), minimum(a,b).

Commandes :

chdir : permet de changer de repertoire. Syntaxe : chdir "/home/horatio/Documents".


load : charge un fichier. Syntaxe : load "nom_fichier".
postscript : exporte au format postscript. Syntaxe : postsript nom_fichier.ps.
read : affiche le contenu d’un fichier. Syntaxe : read "nom_fichier.ext".

6.3 Script
Dans un script Surface Evolver, les commandes sont rentrées ligne par ligne et un retour-chariot exécute la ligne
sauf si la ligne se termine par \, la séquence se prolonge alors sur la ligne suivante. Dans une ligne de commande,
tout ... entre /*...*/ est ignoré, de même que tout ce qui suit //, ce qui est utile pour les commentaires. Plusieurs
commandes peuvent être séparées par ;.

Un script Surface Evolver comporte six (6) parties : les définitions et options ; les sommets ; les arêtes ; les faces ; les
corps initiaux ; les commandes. Les variables se déclarent par #define identifiant instruction, où instruction est
écrite à l’aide d’expressions numériques et de chaînes de caractères (entre quotes ou créées par la commande printf).
Les affectations sont stipulées par parameter identifiant = valeur. Les contraintes se définissent par la syntaxe :
code
1 constraint n. [ global
2 convex
3 nonnegative | nonpositive
4 nonwall
5 equation expr
6 formula expr
7 function expr ]
8 energy

89 (H. Quadjovie, FDS/UL, 2009)


CHAPITRE 6. LE SIMULATEUR SURFACE EVOLVER 6.3. SCRIPT

9 e1: expr
10 e2: expr
11 e3: expr
12 content
13 c1: expr
14 c2: expr
15 c3: expr

où n. est le numéro de la contrainte ; global indique que la contrainte s’applique à tous les sommets ; convex requiert la
spécification d’une constante de saut au bord par la commande k ; equation définit l’ensemble de niveau zéro (contrainte
actuelle) ; energy signifie que les sommets et les faces sous la contrainte ont des énergies calculées en intégrant le champ
de vecteurs de composantes e1,e2,e3 ; content signifie que les arêtes sous la contrainte contribuent au calcul de l’aire
ou du volume du corps par l’intégrale du champ de vecteurs de composantes c1,c2,c3 ; expr sont les instructions de
définition. Les bords se définissent par la syntaxe :

code
1 boundary n. parameters m [ convex ]
2 x1: expr
3 x2: expr
4 x3: expr
5 energy
6 e1: expr
7 e2: expr
8 e3: expr
9 content
10 c1: expr
11 c2: expr
12 c3: expr

où n. est le numéro de la frontière ; m est le nombre de paramètres (deux au plus) de repérage ; convex requiert la
spécification, par la commande k, d’une énergie additionnelle, sur les arêtes situées sur la frontière ; x1,x2,x3 définissent
la paramétrisation de la frontière en fonction des paramètres de repérage ; energy signifie que les sommets et les faces
sur la frontière ont des énergies calculées en intégrant le champ de vecteurs de composantes e1,e2,e3 ; content signifie
que les arêtes sur la frontière contribuent au calcul de l’aire ou du volume du corps par l’intégrale du champ de vecteurs
de composantes c1,c2,c3 ; expr sont les instructions de définition écrites en fonctions des paramètres p1,p2 de repérage.
Les sommets se définissent par les syntaxes :

code
1 vertices
2 k x y z [ fixed constraint c1 (c2...) ]
3 k p1 (p2) boundary b [ fixed ]

où k est le numéro du sommet ; x,y,z sont les coordonnées du sommet ; fixed indique que le sommet demeure fixe ;
constraint indique que le sommet est astreint aux contraintes portant les numéros c1 (ou c2...) ; boundary indique
que le sommet est le point de coordonnées (x1(p1,p2), x2(p1,p2), x3(p1,p2)) sur la frontière numéro b. Les arêtes se
définissent par la syntaxe :

code
1 edges
2 k v1 v2 [ midv s1 s2 s3 fixed boundary b constraint c1 c2...\
3 tension density cste_expr color n no_refine noncontent ... ]

où k est le numéro de l’arête ; v1 est le numéro de sa queue ; v2 est le numéro de sa tête ; fixed indique que l’arête
demeure fixe ; constraint indique que l’arête est astreinte aux contraintes portant les numéros c1 (ou c2...) ; boundary
est utilisé lorsque les extrémités appartiennent à la même frontière ; no_refine signifie que l’arête ne peut être subdivisée
par la commande r ; noncontent indique que l’arête ne contribue pas au calcul du volume. Les faces se définissent par
la syntaxe :

code

(H. Quadjovie, FDS/UL, 2009) 90


CHAPITRE 6. LE SIMULATEUR SURFACE EVOLVER 6.4. EXEMPLES

1 faces
2 k e1 e2... [ fixed [ tension | density ] cste_expr boundary b constraint c1 c2...\
3 nodisplay color n frontcolor n backcolor n phase n noncontent ... ]

où k est le numéro de la face ; e1 e2... sont les numéros des arêtes constituant son bord (à donner dans le sens de la
normale intérieure pour le tire-bouchon et un numéro est à affecter d’un signe - lorsque l’arête est parcouru dans le
sens inverse de celui de sa définition dans la section edges du script) ; fixed indique que la face demeure fixe ; tension
ou density spécifie cste_expr, l’énergie par unité d’aire sur la face ; nodisplay rend invisible la face dans le terminal ;
color indique la couleur à attribuer aux deux côtés de la face, tandis frontcolor (resp. backcolor) indique celle du
côté positif (resp. négatif) de la face ; constraint indique que la face est astreinte aux contraintes portant les numéros
c1 (ou c2...) ; boundary ; noncontent indique que l’arête ne contribue pas au calcul du volume. Les corps initiaux se
définissent par la syntaxe :

code
1 bodies
2 k f1 f2 f3... [ volume v volconst vc pressure p density d phase n actual_volume v ... ]

où k est le numéro du corps ; f1 f2 f3... sont les numéros des faces constituant son bord ; volume indique que le corps
a un volume constant indiqué par v ; volconst spécifie vc, la constante d’ajustement du volume ; pressure indique que
le corps a une pression constante indiquée par p (elle est incompatible avec le volume constant) ; density indique que la
constante de gravitation G est à spécifier ; phase est utilisée pour calculer la tension superficielle sur les faces communes
à deux corps.

L’énergie totale utilisée


P par Surface Evolver pour animer un corps peut avoir plusieurs composantes. La tension
superficielle est la somme faces (aire_face × tension_face) des produits des aires des faces par les tensions (= 1 par
défaut) qui s’y appliquent. Pour les cordes, la tension est calculée à l’aideRRR des longueurs des arêtes. Lorsque le corps
possède une densité ρ, l’énergie potentielle gravitationnelle est donnée par corps Gρz dV et calculée par le théorème
RR z2 ~
de divergence ~
facettes Gρ 2 k · dS (comme la somme de toutes les intégrales doubles sur les faces). La constante
gravitationnelle G (= 1 par défaut) peut être spécifiée par la commande G. Quand une face est commune à deux objets
constituant le corps et de densités différentes, Surface Evolver utilise la différence des deux densités. Une face située dans
le plan z = 0 neR contribue pas à l’énergie potentielle gravitionnelle. L’énergie générée par les contraintes sur les arêtes
est donnée par aretes F · dl, où l’intégrand est déclaré par constraint dans le script. Notons que peuvent contribuer
au calcul de l’énergie totale : les contraintes de convexité ; l’incompressibilité des corps initiaux ; les prescriptions de
pressions ; la coubure moyenne ; la courbure de Gauss ; les intégrands crystallins. Il est également possible de changer la
méthode de calcul de l’énergie totale.

Quelques commandes de calculs d’intégrales :


• square_curvature : pour inclure, dans l’énergie totale, l’intégrale du carré de la valeur moyenne (sur les sommets
du modèle) de la courbure moyenne.
• mean_curvature_integral : pour inclure, dans l’énergie totale, l’intégrale de la courbure moyenne.
• square_gaussian_curvature : pour inclure, dans l’énergie totale, l’intégrale du carré de la courbure de Gauss.
• hessian : pour ajuster la vitesse de déplacement de chaque sommet à la matrice hessienne de l’énergie totale.
• hessian_normal : pour ajuster le déplacement normal de chaque sommet à la matrice hessienne de l’énergie totale.
• lagrange 1 : pour convertir au modèle de lagrange d’ordre 1.

6.4 Exemples
exemple 1
1 // cube.fe
2 // Donnees Evolver pour un cube de volume prescrit.
3
4 vertices
5 1 0.0 0.0 0.0
6 2 1.0 0.0 0.0
7 3 1.0 1.0 0.0
8 4 0.0 1.0 0.0
9 5 0.0 0.0 1.0
10 6 1.0 0.0 1.0
11 7 1.0 1.0 1.0

91 (H. Quadjovie, FDS/UL, 2009)


CHAPITRE 6. LE SIMULATEUR SURFACE EVOLVER 6.4. EXEMPLES

12 8 0.0 1.0 1.0


13
14 edges /* given by endpoints and attribute */
15 1 1 2
16 2 2 3
17 3 3 4
18 4 4 1
19 5 5 6
20 6 6 7
21 7 7 8
22 8 8 5
23 9 1 5
24 10 2 6
25 11 3 7
26 12 4 8
27
28 faces /* given by oriented edge loop */
29 1 1 10 -5 -9
30 2 2 11 -6 -10
31 3 3 12 -7 -11
32 4 4 9 -8 -12
33 5 5 6 7 8
34 6 -4 -3 -2 -1
35
36 bodies /* one body, defined by its oriented faces */
37 1 1 2 3 4 5 6 volume 1
38
39 read
40
41 // Typical evolution to sphere
42 gogo := { g 5; r; g 5; hessian; r; g 5; hessian; }
43
44 // Evolution to very high accuracy, using higher-order Lagrange elements.
45 // To be run on original datafile.
46 gogo2 := { g 5; r; g 5; hessian; r; g 5; hessian;
47 lagrange 2; g 5; hessian;
48 lagrange 4; g 5; hessian;
49 lagrange 6; g 5; hessian;
50 ideal_rad := (3*body[1].volume/4/pi)^(1/3);
51 printf "Area error: %g\n",total_area - 4*pi*ideal_rad^2;
52 printf "Vertex radius spread: %g\n",
53 max(vertex,sqrt((x-.5)^2+(y-.5)^2+(z-.5)^2))
54 - min(vertex,sqrt((x-.5)^2+(y-.5)^2+(z-.5)^2));
55 }

exemple 2
1 // column.fe
2 // Example of calculating forces exerted by a
3 // column of liquid solder in shape of skewed catenoid.
4
5 // All units cgs
6 parameter RAD = 0.05 // ring radius
7 parameter ZH = 0.08 // total height
8 parameter SHIFT = 0.025 // shift
9 #define SG 8 // specific gravity of solder
10 #define TENS 460 // surface tension of solder
11 #define GR 980 // acceleration of gravity
12
13 gravity_constant GR
14
15 BOUNDARY 1 PARAMETERS 1
16 X1: RAD*cos(P1)

(H. Quadjovie, FDS/UL, 2009) 92


CHAPITRE 6. LE SIMULATEUR SURFACE EVOLVER 6.4. EXEMPLES

17 X2: RAD*sin(P1) + SHIFT


18 X3: ZH
19 CONTENT // used to compensate for missing top facets
20 c1: 0
21 c2: ZH*x
22 c3: 0
23 ENERGY // used to compensate for gravitational energy under top facets
24 e1: 0
25 e2: GR*ZH^2/2*x
26 e3: 0
27
28 BOUNDARY 2 PARAMETERS 1
29 X1: RAD*cos(P1)
30 X2: RAD*sin(P1)
31 X3: 0
32
33 vertices // given in terms of boundary parameter
34 1 0.00 boundary 1 fixed
35 2 pi/3 boundary 1 fixed
36 3 2*pi/3 boundary 1 fixed
37 4 pi boundary 1 fixed
38 5 4*pi/3 boundary 1 fixed
39 6 5*pi/3 boundary 1 fixed
40 7 0.00 boundary 2 fixed
41 8 pi/3 boundary 2 fixed
42 9 2*pi/3 boundary 2 fixed
43 10 pi boundary 2 fixed
44 11 4*pi/3 boundary 2 fixed
45 12 5*pi/3 boundary 2 fixed
46
47 edges
48 1 1 2 boundary 1 fixed
49 2 2 3 boundary 1 fixed
50 3 3 4 boundary 1 fixed
51 4 4 5 boundary 1 fixed
52 5 5 6 boundary 1 fixed
53 6 6 1 boundary 1 fixed
54 7 7 8 boundary 2 fixed
55 8 8 9 boundary 2 fixed
56 9 9 10 boundary 2 fixed
57 10 10 11 boundary 2 fixed
58 11 11 12 boundary 2 fixed
59 12 12 7 boundary 2 fixed
60 13 1 7
61 14 2 8
62 15 3 9
63 16 4 10
64 17 5 11
65 18 6 12
66
67 faces
68 1 -1 13 7 -14 density TENS
69 2 -2 14 8 -15 density TENS
70 3 -3 15 9 -16 density TENS
71 4 -4 16 10 -17 density TENS
72 5 -5 17 11 -18 density TENS
73 6 -6 18 12 -13 density TENS
74
75 bodies
76 1 1 2 3 4 5 6 volume 0.00045 density SG
77
78 read

93 (H. Quadjovie, FDS/UL, 2009)


CHAPITRE 6. LE SIMULATEUR SURFACE EVOLVER 6.4. EXEMPLES

79
80 // horizontal force on upper pad by central differences
81 dy := .0001
82 do_yforce := { oldshift := shift; shift := shift + dy;
83 set vertex y y+dy*z/zh; // uniform shear
84 recalc;
85 energy1 := total_energy -
86 body[1].pressure*(body[1].volume - body[1].target);
87 oldshift := shift; shift := shift - 2*dy;
88 set vertex y y-2*dy*z/zh; // uniform shear
89 recalc;
90 energy2 := total_energy -
91 body[1].pressure*(body[1].volume - body[1].target);
92 yforce := -(energy1-energy2)/2/dy;
93 printf "restoring force: %20.15f\n",yforce;
94 // restore everything
95 oldshift := shift; shift := shift + dy;
96 set vertex y y+dy*z/zh; // uniform shear
97 recalc;
98 }
99
100 // vertical force on upper pad by central differences.
101 dz := .0001
102 do_zforce := { oldzh := zh; zh := zh + dz;
103 set vertex z z+dz*z/oldzh; recalc; // uniform stretch
104 energy1 := total_energy -
105 body[1].pressure*(body[1].volume - body[1].target);
106 oldzh := zh; zh := zh - 2*dz;
107 set vertex z z-2*dz*z/oldzh; recalc; // uniform stretch
108 energy2 := total_energy -
109 body[1].pressure*(body[1].volume - body[1].target);
110 zforce := -(energy1-energy2)/2/dz;
111 printf "vertical force: %20.15f\n",zforce;
112 // restore everything
113 oldzh := zh; zh := zh + dz;
114 set vertex z z+dz*z/oldzh; recalc; // uniform stretch
115 }
116
117 // Sample evolution and force calculation
118 gogo := { u; g 5; r; g 5 ; r; g 5; hessian; hessian;
119 do_yforce; do_zforce;
120 }

exemple 3
1 // phelanc.fe
2
3 // Structure that beats Kelvin’s partition of space.
4 // In 1887, Lord Kelvin posed the problem of finding the partition
5 // of space into equal volume cells minimizing the interface area.
6 // He suggested the cell shown in twointor.fe, which is basically
7 // the voronoi cell for a bcc lattice. Now Robert Phelan and Denis
8 // Weaire of Trinity College, Dublin, have found a structure using
9 // two types of cells that has 0.3% less area than Kelvin’s. This is
10 // their Evolver datafile. There are 8 cells in a
11 // cubic 2x2x2 flat torus, which start as Voronoi cells on centers
12 //
13 // 0 0 0
14 // 1 1 1
15 // 0.5 0 1
16 // 1.5 0 1
17 // 0 1 0.5
18 // 0 1 1.5

(H. Quadjovie, FDS/UL, 2009) 94


CHAPITRE 6. LE SIMULATEUR SURFACE EVOLVER 6.4. EXEMPLES

19 // 1 0.5 0
20 // 1 1.5 0
21
22 // Just evolve to get the volumes all to 1, and Kelvin is beat.
23 // With more evolution, the ratio V^2/A^3 beats Kelvin by a
24 // whopping 1%. The Weaire-Phelan structure has its tetrakaidecahedra
25 // stacked on their hexagonal faces in three sets of perpendicular,
26 // mutually interlocking columns, with interstices filled by the
27 // dodecahedra.
28
29 // phelanc.fe with colored bodies
30
31 TORUS_FILLED
32 periods
33 2.000000 0.000000 0.000000
34 0.000000 2.000000 0.000000
35 0.000000 0.000000 2.000000
36
37 view_transform_generators 6
38 1 0 0 2
39 0 1 0 0
40 0 0 1 0
41 0 0 0 1
42
43 1 0 0 0
44 0 1 0 2
45 0 0 1 0
46 0 0 0 1
47
48 1 0 0 0
49 0 1 0 0
50 0 0 1 2
51 0 0 0 1
52
53 1 0 0 -2
54 0 1 0 0
55 0 0 1 0
56 0 0 0 1
57
58 1 0 0 0
59 0 1 0 -2
60 0 0 1 0
61 0 0 0 1
62
63 1 0 0 0
64 0 1 0 0
65 0 0 1 -2
66 0 0 0 1
67
68 vertices
69 1 1.374833 0.000542 0.313036
70 2 1.582639 1.583805 0.417091
71 3 1.999414 1.687884 0.625562
72 4 0.999778 0.000517 0.500564
73 5 1.686693 1.374893 1.999381
74 6 1.999036 0.312928 0.625224
75 7 0.416118 1.583554 0.417247
76 8 1.416641 1.417638 0.583002
77 9 0.999380 1.626008 0.687643
78 10 1.374528 0.000836 1.688167
79 11 1.582887 1.582882 1.583776
80 12 1.583228 0.416633 0.417188

95 (H. Quadjovie, FDS/UL, 2009)


CHAPITRE 6. LE SIMULATEUR SURFACE EVOLVER 6.4. EXEMPLES

81 13 0.415660 0.417170 0.416774


82 14 0.312152 1.375055 0.000199
83 15 1.999782 1.500468 1.000033
84 16 1.625132 1.312811 1.000465
85 17 1.312290 1.000953 0.374434
86 18 0.999015 1.625244 1.312907
87 19 0.582337 1.417418 0.583502
88 20 0.999205 0.000988 1.500509
89 21 1.582954 0.417290 1.583964
90 22 1.499589 1.000835 1.999244
91 23 1.687315 0.625137 1.999668
92 24 0.624322 0.000725 0.312769
93 25 0.416475 1.583942 1.583184
94 26 0.374830 1.313082 0.999521
95 27 1.624817 0.687664 1.000333
96 28 0.686621 1.000835 0.374834
97 29 1.416503 1.416444 1.417442
98 30 0.624634 0.000964 1.687531
99 31 1.999937 1.687755 1.375079
100 32 1.312386 1.000647 1.625031
101 33 0.499725 1.000658 0.000553
102 34 0.311830 0.624975 0.000488
103 35 0.375186 0.688291 0.999389
104 36 1.416715 0.583171 0.583818
105 37 0.582556 0.584101 0.583805
106 38 0.583642 1.417297 1.416440
107 39 1.999485 0.312616 1.375471
108 40 0.416489 0.416552 1.584015
109 41 1.999161 0.500331 0.999822
110 42 0.999925 0.375397 0.688204
111 43 0.688262 1.000529 1.624602
112 44 1.416155 0.584231 1.417123
113 45 0.584307 0.583998 1.416583
114 46 0.999499 0.376190 1.313024
115
116 edges
117 1 1 2 * - *
118 2 2 3 * * *
119 3 1 4 * * *
120 4 2 5 * * -
121 5 3 6 * + *
122 6 3 7 + * *
123 7 2 8 * * *
124 8 4 9 * - *
125 9 1 10 * * -
126 10 5 11 * * *
127 11 6 12 * * *
128 12 6 13 + * *
129 13 7 14 * * *
130 14 3 15 * * *
131 15 8 16 * * *
132 16 8 17 * * *
133 17 9 8 * * *
134 18 9 18 * * *
135 19 9 19 * * *
136 20 10 20 * * *
137 21 10 21 * * *
138 22 11 10 * + *
139 23 5 22 * * *
140 24 5 14 + * +
141 25 12 1 * * *
142 26 12 23 * * -

(H. Quadjovie, FDS/UL, 2009) 96


CHAPITRE 6. LE SIMULATEUR SURFACE EVOLVER 6.4. EXEMPLES

143 27 13 24 * * *
144 28 7 19 * * *
145 29 14 25 * * -
146 30 15 26 + * *
147 31 16 15 * * *
148 32 16 27 * * *
149 33 17 22 * * -
150 34 17 28 * * *
151 35 18 29 * * *
152 36 19 26 * * *
153 37 20 30 * * *
154 38 21 23 * * *
155 39 11 31 * * *
156 40 11 29 * * *
157 41 22 32 * * *
158 42 14 33 * * *
159 43 23 34 + * +
160 44 24 7 * - *
161 45 24 30 * * -
162 46 19 28 * * *
163 47 25 30 * + *
164 48 25 31 - * *
165 49 26 35 * * *
166 50 16 29 * * *
167 51 27 36 * * *
168 52 17 36 * * *
169 53 28 33 * * *
170 54 28 37 * * *
171 55 18 38 * * *
172 56 29 32 * * *
173 57 26 38 * * *
174 58 20 18 * - *
175 59 31 39 * + *
176 60 22 23 * * *
177 61 33 34 * * *
178 62 34 13 * * *
179 63 34 40 * * -
180 64 30 40 * * *
181 65 35 41 - * *
182 66 35 37 * * *
183 67 36 12 * * *
184 68 36 42 * * *
185 69 33 43 * * -
186 70 37 42 * * *
187 71 37 13 * * *
188 72 38 25 * * *
189 73 32 43 * * *
190 74 32 44 * * *
191 75 24 4 * * *
192 76 35 45 * * *
193 77 21 39 * * *
194 78 39 40 + * *
195 79 41 27 * * *
196 80 42 46 * * *
197 81 43 38 * * *
198 82 42 4 * * *
199 83 44 27 * * *
200 84 44 46 * * *
201 85 15 31 * * *
202 86 45 43 * * *
203 87 45 46 * * *
204 88 41 39 * * *

97 (H. Quadjovie, FDS/UL, 2009)


CHAPITRE 6. LE SIMULATEUR SURFACE EVOLVER 6.4. EXEMPLES

205 89 21 44 * * *
206 90 6 41 * * *
207 91 46 20 * * *
208 92 45 40 * * *
209
210 faces
211 1 1 2 5 11 25 color 1 backcolor 4
212 2 -1 3 8 17 -7 color 8 backcolor 4
213 3 2 6 13 -24 -4 color 5 backcolor 1
214 4 5 12 27 44 -6 color 3 backcolor 1
215 5 11 26 43 62 -12 color 5 backcolor 1
216 6 1 4 10 22 -9 color 8 backcolor 1
217 7 17 16 34 -46 -19 color 2 backcolor 8
218 8 7 16 33 -23 -4 color 8 backcolor 5
219 9 -2 7 15 31 -14 color 5 backcolor 4
220 10 -6 14 30 -36 -28 color 5 backcolor 3
221 11 -13 28 46 53 -42 color 5 backcolor 8
222 12 24 29 48 -39 -10 color 6 backcolor 1
223 13 44 13 29 47 -45 color 1 backcolor 8
224 14 62 27 45 64 -63 color 1 backcolor 7
225 15 25 9 21 38 -26 color 7 backcolor 1
226 16 -3 9 20 37 -45 75 color 8 backcolor 7
227 17 -10 23 41 -56 -40 color 8 backcolor 6
228 18 -22 39 59 -77 -21 color 4 backcolor 1
229 19 8 19 -28 -44 75 color 3 backcolor 8
230 20 -18 19 36 57 -55 color 2 backcolor 3
231 21 -17 18 35 -50 -15 color 2 backcolor 4
232 22 34 53 69 -73 -41 -33 color 8 backcolor 7
233 23 -46 36 49 66 -54 color 5 backcolor 2
234 24 -16 15 32 51 -52 color 2 backcolor 5
235 25 31 30 49 65 79 -32 color 6 backcolor 5
236 26 -53 54 71 -62 -61 color 5 backcolor 7
237 27 42 61 -43 -60 -23 24 color 5 backcolor 6
238 28 48 59 78 -64 -47 color 1 backcolor 3
239 29 43 63 -78 -77 38 color 1 backcolor 6
240 30 -41 60 -38 89 -74 color 7 backcolor 6
241 31 -56 -35 55 -81 -73 color 2 backcolor 8
242 32 40 -35 -58 -20 -22 color 8 backcolor 4
243 33 -57 -30 85 -48 -72 color 6 backcolor 3
244 34 50 56 74 83 -32 color 2 backcolor 6
245 35 34 54 70 -68 -52 color 7 backcolor 2
246 36 69 81 72 -29 42 color 6 backcolor 8
247 37 -33 52 67 26 -60 color 7 backcolor 5
248 38 49 76 86 81 -57 color 2 backcolor 6
249 39 66 71 -12 90 -65 color 3 backcolor 5
250 40 51 67 -11 90 79 color 5 backcolor 4
251 41 -37 58 55 72 47 color 8 backcolor 3
252 42 -89 -21 20 -91 -84 color 7 backcolor 4
253 43 74 84 -87 86 -73 color 7 backcolor 2
254 44 83 51 68 80 -84 color 4 backcolor 2
255 45 70 82 -75 -27 -71 color 3 backcolor 7
256 46 -68 67 25 3 -82 color 4 backcolor 7
257 47 -69 61 63 -92 86 color 6 backcolor 7
258 48 -76 65 88 78 -92 color 3 backcolor 6
259 49 -66 76 87 -80 -70 color 3 backcolor 2
260 50 90 88 -59 -85 -14 5 color 4 backcolor 3
261 51 79 -83 -89 77 -88 color 4 backcolor 6
262 52 -91 -87 92 -64 -37 color 3 backcolor 7
263 53 -85 -31 50 -40 39 color 6 backcolor 4
264 54 -82 80 91 58 -18 -8 color 3 backcolor 4
265
266 bodies

(H. Quadjovie, FDS/UL, 2009) 98


CHAPITRE 6. LE SIMULATEUR SURFACE EVOLVER 6.4. EXEMPLES

267 1 1 -3 -4 -5 -6 -12 13 14 -15 -18 28 29 volume 0.976527


268 2 7 20 21 -23 24 31 34 -35 38 -43 -44 -49 volume 0.976538
269 3 39 45 48 49 -50 4 54 -28 52 -33 19 -20 -41 -10 volume 1.007698
270 4 -40 44 46 50 51 -1 -42 -54 -53 -9 18 -2 -32 -21 volume 1.007902
271 5 3 -8 9 10 11 -24 -25 23 26 27 -37 40 -39 5 volume 1.007528
272 6 33 -38 25 12 36 -48 53 -51 -34 -27 47 -17 -30 -29 volume 1.008217
273 7 -22 30 35 -26 37 42 43 -45 -46 -47 15 -52 -16 -14 volume 1.008071
274 8 2 6 -7 8 16 17 -19 22 -31 32 -36 -11 41 -13 volume 1.007564
275
276 read
277 set body target 1
278 column_color := { /* colors bodies alike that are in same columns */
279 set facet frontcolor green where frontcolor==blue;
280 set facet backcolor green where backcolor==blue;
281 set facet frontcolor red where frontcolor==cyan;
282 set facet backcolor red where backcolor==cyan;
283 set facet frontcolor lightgray where frontcolor==darkgray;
284 set facet backcolor lightgray where backcolor==darkgray;
285 set facet frontcolor magenta where frontcolor==brown;
286 set facet backcolor magenta where backcolor==brown;
287 }
288 dodecs:= show facet ff where max(ff.body,id==1 or id==2)
289 column1:= show facet ff where max(ff.body,id==3 or id==4)
290 column2:= show facet ff where max(ff.body,id==5 or id==6)
291 column3:= show facet ff where max(ff.body,id==7 or id==8)
292 bunch := transform_expr "abc"
293 lots := transform_expr "abcdef"
294 few := transforms off
295 all := show facet
296
297 // Typical evolution
298 gogo := { g 5; r; g 5; hessian; r; g 5; hessian; }

99 (H. Quadjovie, FDS/UL, 2009)


CHAPITRE 6. LE SIMULATEUR SURFACE EVOLVER 6.4. EXEMPLES

(H. Quadjovie, FDS/UL, 2009) 100


Chapitre 7

Le solveur Freefem
Le solveur Freefem, qui tente de reproduire certaines fonctionnalités de FemLab, est un environnement interactif
libre conçu pour la modélisation et la simulation des processus physiques qui sont décrits par des équations aux dérivées
partielles (ingénieurie chimique, électromagnétisme, mécanique des structures etc). Freefem utilise une approximation
par la méthode des éléments finis, avec un maillage automatique ou adapté en éléments géométriques triangulaires ou
tétraédriques pour :
– résoudre des problèmes combinant plusieurs modèles,
– visualiser le maillage et les solutions en représentant les valeurs prises aux sommets du maillage en tons de couleurs,
– optimiser et procéder à des analyses paramétriques des performances,
– prédire des résultats.
Les points forts de Freefem sont son autonomie, sa gestion multiphysique, sa consommation faible de place mémoire et
sa rapidité de compilation.

Mots-clé : maillage ; nœud ; élément ; champ local ; formulation variationnelle ; discrétisation ; assemblage ; résolu-
tion ; exploitation.

7.1 Freefem++
Freefem++ est un logiciel libre conçu pour aider à la résolution numérique des équations aux dérivées partielles
(edp) en 2D par éléments finis triangulaires, avec maillage automatique et adaptatif. Il crée, édite et visualise une
triangulation conforme (ensemble de triangles recouvrant un domaine polygonal correspondant au domaine d’étude Ω,
avec les propriétés : l’intersection de deux triangles ne peut être que vide, un sommet ou une arête entière ; les coins du
domaine doivent être des sommets de la triangulation ; les coins du domaine approché doivent être sur la fontière du
domaine initial), représente graphiquement des fonctions sur une triangulation et résoud des edp.

7.1.1 Prise en mains de Freefem++


On crée le repertoire de travail avec un gestionnaire de fichiers (tkdesk, file manager, windows explorer...). On
active Freefem avec la commande freefem++ ou dclick sur icône. Le logiciel, une fois lancé, se présente sous la forme
d’un compilateur pouvant exécuter tout fichier.edp, dans lequel une série d’instructions (ou script Freefem++) a été
saisie au préalable à l’aide d’un éditeur de texte (taper freefem++ fichier.edp à partir de la console sous Unix). Pour
corriger le script fichier.edp, on l’ouvre et on procède aux modifications souhaitées. Le résultat de l’exécution d’un
script peut être exporté au format postscript par : plot(nom_maill, ps="nom_maill.ps"); pour une triangulation et
plot(u,ps="u.ps"); pour la solution d’une edp. On quitte Freefem++ en fermant la fenêtre de dialogue qui s’affiche à
la fin de l’exécution.

Les opérations basiques de Freefem++ sont donc de lire et d’exécuter un fichier texte (ou script). Un script Free-
fem++ comporte trois (3) parties :
– le maillage,
– la définition et la résolution du problème sous des conditions aux limites,
– les représentations graphiques.

Dans un script Freefem++, toutes les variables sont déclarées avec leurs types. Les principaux types de variables sont :
bool pour les valeurs bouléennes ;

101
CHAPITRE 7. LE SOLVEUR FREEFEM 7.1. FREEFEM++

int pour les entiers ;


real pour les réels ;
complex pour les complexes ;
string pour les chaînes de caractères ;
real[int] ou real[string] pour les domaines d’éléments finis ;
mesh pour un maillage par éléments finis ;
func pour une fonction d’éléments finis ;
fespace pour définir un nouvel espace bidimensionnel d’éléments finis ;
problem pour définir un système d’équations aux dérivées partielles sans le résoudre ;
solve pour définir un système d’edp et le résoudre ;
varf pour définir la forme variationnelle d’un système d’edp ;
matrix pour les matrices ;
cout << "nom_var_aff =" << expr << "\n"; pour afficher le calcul de expr suivant nom_var_aff = resultat (remar-
quer que "\n" marque la fin d’une ligne d’affichage) ;
ofstream pour créer et envoyer dans un fichier ;
ifstream pour importer depuis un fichier.
Quelques expressions globales : x,y les coordonnées du point courant P ; t le paramètre en fonction duquel les coor-
données d’un point courant sont exprimées ; solver la méthode d’éléments finis choisie ; label le numéro de référence
d’un point courant situé sur le bord du domaine d’étude (=0, si le point est intérieur) ; region le numéro de région du
point courant ; N le vecteur normal au point courant ; lenEdge le périmètre du triangle courant ; hTriangle la hauteur
du triangle courant ; area
√ la superficie du triangle courant ; cout console ostream ; cin console istream ; true vrai ; false
faux ; pi =3.1416 ; I = −1. De plus,

; : marque la fin d’une instruction.


{...} : sont les délimiteurs d’un ensemble d’instructions.
/*...*/ : sont les délimiteurs de commentaires.
nom_type nom_var; : déclare la variable nommée nom_var.
nom_var := val; : affecte la valeur val à la variable nommée nom_var.
iv : numéro d’ordre affecté (par Freefem++) à chaque sommet de la triangulation.
ib : numéro de référence de contour dont la valeur est déterminée par l’utilisateur.
N.x et N.y : composantes de la normale aux coins de la frontière du domaine.

Les fonctions mathématiques s’écrivent : sin, cos, ln, exp, sqrt, abs, acos, asin, tan, cosh, sinh, tanh, one, min, max
et les opérateurs arithmétiques :

& : ET logique.
| : OU logique.
! : NON logique.
== : égalité.
!= : 6= ou différence.
<= : plus petit ou égal.
>= : plus grand ou égal.
^ : élevation à la puissance.
* : multiplication.
.* : multiplication terme à terme.
/ : division.
./ : division terme à terme.
id : identité.
dx(u) : ∂u/∂x.
dy(u) : ∂u/∂y.
dxx(u) : ∂ 2 u/∂x∂x.
dyy(u) : ∂ 2 u/∂y∂y.
dxy(u) : ∂ 2 u/∂x∂y.
laplace(u) : le laplacien ∆u.
dnu : dérivée normale. R
scal(u,v) :Rle produit scalaire Ω uv̄ dxdy
int1d(u) : RΓ u dl
int2d(u) : Ω u dxdy

(H. Quadjovie, FDS/UL, 2009) 102


CHAPITRE 7. LE SOLVEUR FREEFEM 7.1. FREEFEM++

intalledges : intègre sur toutes les arêtes des triangles.


convect([v1,v2],-dt,u0) : = u0 (P + v(P )dt), où dt est le pas de temps, v = (v1, v2) la vitesse de convection et u0
la position initiale.

Tous les types, opérateurs et fonctions s’obtiennent par dumptable(cout). Le type border permet de décrire les
mailleurs analytiques ou polygonaux. Chaque mailleur est décrit suivant l’algorithme de Delaunay-Voronoï, la taille des
triangles étant réglée par la taille des arêtes au bord du domaine (donc pour avoir un maillage fin, il faut raffiner le
bord) et les bords internes du maillage étant décrits dans le sens trigonométrique inverse de telle manière que le maillage
se trouve toujours à gauche. On peut adapter le maillage grâce à la commande adaptmesh par rapport à une fonction
analytique (de façon à minimiser l’écart par rapport à cette fonction) ou solution d’une edp précédemment calculée. Le
problème sera de définir un indicateur d’erreur local contenant les informations nécessaires pour optimiser le maillage.
Le solveur ne reconnaît que la formulation faible d’un problème (forme variationnelle linéaire ou bilinéaire). Pour
résoudre plusieurs edp, il est impératif de les coupler. Freefem++ permet la résolution de problèmes non stationnaires par
un schéma de type Euler implicite. Enfin, la mémorisation de résultats s’opèrent par : save(’u.dat’,u) qui sauve dans
le fichier u.dat les valeurs de la fonction u en chacun des points du maillage ; et leur consultation par : load(’u.dat’,u)
qui lit dans le fichier u.dat les valeurs de la fonction u en chacun des points du maillage.

7.1.2 Opérateurs de maillage


border nom_front(t=t_min,t_max){x:=f(t);y:=g(t);label=n.;}; : définition du bord n. du domaine d’étude ( doit
être positif pour que des conditions aux limites puissent y être définies). Une ligne polygonale peut être définie
par : nom_var =[label=n1,[x_1,y_1],...,[x_s,y_s],[x_{s+1},y_{s+1},label=n2],[x_{s+1},y_{s+1}],...],
pour signifier que le label des arêtes change de n1 à n2 lorsqu’on traverse le point (x_{s+1},y_{s+1}). Deux
arêtes d’une frontière ne peuvent se rencontrer qu’en un point extrémité.

mesh nom_maill=square(nmax_points_absc,nmax_points_ordon [,expr1(x,y),expr2(x,y)]); : construction et visua-


lisation d’un maillage sur un domaine restangulaire nmax_points_absc × nmax_points_ordon, dont les bords sont
donnés par les expressions expr1(x,y) et expr2(x,y). En l’absence des expressions, le carré [0, 1]2 est quadrillé.

mesh nom_maill=buildmesh(nom_front_1(+/-nmax_points_1)+ ... +nom_front_s(+/-nmax_points_s); : construction


et visualisation d’un maillage sur un domaine dont le bord est la réunion des frontières nom_front_1 à nom_front_s,
le signe + (resp -) indiquant que le domaine est à gauche (resp à droite) de la frontière orientée.

mesh nom_maill=movemesh(nom_maill,expr1(x,y),expr2(x,y)); : déformation du maillage nom_maill.

mesh nom_nouv_maill=adaptmesh(nom_anc_maill,nom_font_1,nom_font_2); : adaptation et visualisation du maillage


nom_anc_maill aux fonctions nom_font_1 et nom_font_2. Freefem++ définit pour cela une nouvelle métrique à
partir du hessien des fonctions (leurs dérivées secondes). Cette métrique contient des informations sur la taille
des éléments auxquels chaque point appartient, ainsi que sur leur étirement.

mesh nom_nouv_maill=trunc(nom_anc_maill,label=1,split=n2); : créer une troncature du maillage en raffinant, par


n1 × n1, chaque triangle de nom_anc_maill.

mesh nom_maill=triangulate("xyf"); : construire une triangulation à partir d’un fichier de données donnant les co-
ordonnées des points du maillage.

savemesh(nom_maill,"fichier.mesh"); : sauvegarde du maillage.

mesh nom_maill=readmesh("fichier.mesh"); : lecture et chargement du maillage mémorisé sur disque.

plot(nom_maill,ps="fichier.ps") : affiche et exporte le maillage dénommé nom_maill au format postscript dans


fichier.ps.

7.1.3 Opérateurs de résolution des edp


fespace nom_esp(nom_maill,type_ef); : définit un nouvel espace bidimensionnel d’éléments finis en spécifiant
la méthode d’éléments finis type_ef ∈ {P0, P1, P2, RT0, P1nc, P1dc, P2dc, P1b}. P0 pour les éléments finis discontinus
constants par morceaux ; P1 (conseillée pour les éléments triangulaires) pour les éléments finis continus affines par mor-
ceaux ; P2 pour les éléments finis continus par morceaux ; RT0 pour les éléments finis de Raviart-Thomas.

103 (H. Quadjovie, FDS/UL, 2009)


CHAPITRE 7. LE SOLVEUR FREEFEM 7.1. FREEFEM++

La syntaxe pour définir, résoudre une edp ou un système d’edp sous des conditions aux limites et visualiser le résultat
est :
code
1 border nom_front(t_min,t_max){x:=f(t);y:=g(t);label=n.;};
2 mesh nom_maill=buildmesh(nom_front_1(+/-nmax_points_1)+...+nom_front_s(+/-nmax_points_s);
3 mesh nom_maill=square(nmax_points_absc,nmax_points_ordon [,expr1(x,y),expr2(x,y)]);
4 fespace nom_esp(nom_maill,type_ef);
5 nom_esp uh,vh; // fonctions inconnue et test
6 func nom_fonct_mem_droite = expr; // fonction intervenant dans l’edp
7 func nom_fonct_cond_lim = expr; // fonction intervenant aux limites
8 solve nom_probl(uh,vh) =
9 expr_mem_gauche
10 - expr_mem_droite
11 + on(nom_front_1,...,nom_front_s,uh=nom_fonct_cond_lim); // conditions aux limites
12 plot(uh,ps="nom_probl.ps" [,value=true,...]);

où plot possède de multiples arguments optionnels comme wait qui impose un arrêt sur image après visualisation
(c’est la forme prévue par défaut). Lorsque le maillage est défini par square, la partition de la frontière est donnée par
on(1,2,3,4,uh=nom_fonct_cond_lim);. La commande problem définit l’edp ou le système d’edp avec les conditions aux
limites, sans le résoudre. Sa syntaxe est identique à celle de solve et il spécifie en plus la méthode de résolution (LU par
défaut ; CG ; Crout ; Cholesky ; GMRES...).
code
1 border nom_front(t_min,t_max){x:=f(t);y:=g(t);label=n.;};
2 mesh nom_maill=buildmesh(nom_front_1(+/-nmax_points_1)+...+nom_front_s(+/-nmax_points_s);
3 mesh nom_maill=square(nmax_points_absc,nmax_points_ordon [,expr1(x,y),expr2(x,y)]);
4 fespace nom_esp(nom_maill,type_ef);
5 nom_esp uh,vh; // fonctions inconnue et test
6 func nom_fonct_mem_droite = expr; // fonction intervenant dans l’edp
7 func nom_fonct_cond_lim = expr; // fonction intervenant aux limites
8 problem nom_probl(uh,vh,solver=nom_solveur) =
9 expr_mem_gauche
10 - expr_mem_droite
11 + on(nom_front_1,...,nom_front_s,uh=nom_fonct_cond_lim); // conditions aux limites
12 nom_probl; // resoud le probleme
13 plot(uh,ps="nom_probl.ps" [,value=true,...]);

Enfin, varf définit les formes variationnelles utilisables pour la définition des membres de gauche et droite d’edp à
résoudre et l’opérateur convect(v1,v2,-dt,u0) = u0(P + v(P )dt) ayant pour syntaxe :
code
1 func u0 = expr; // l’initiale
2 real dt := val; // pas de temps
3 func v1 = expr; // abscisse de la vitesse
4 func v2 = expr; // ordonn\’ee de la vitesse
5 for i=val_min to val_max do { // nombre d’iterations
6 u =convect(v1,v2,-dt,u0);
7 u0=u; // recuperation a chaque iteration
8 plot(u);}; // trace pour toutes les iterations

aide à la résolution des équations paraboliques, elliptiques et hyperboliques, ou plus particulièrement des équations
de convection-diffusion en approximant (de manière stable et aux erreurs de quadrature près) les termes d’évolution-
1
convection ∂t u + v · ∇u, i = val_min, ..., val_max fois et à intervalle régulier de dt, par dt [ui+1 (P ) − ui (P + v(P )dt)].

7.1.4 Exemples
exemple 1
1 // -laplacien(v)=xy sur S^1 et v=0 au bord
2 border a(t=0,2*pi){x=cos(t);y=sin(t);label=5;};

(H. Quadjovie, FDS/UL, 2009) 104


CHAPITRE 7. LE SOLVEUR FREEFEM 7.1. FREEFEM++

3 mesh Th = buildmesh (a(50));


4 fespace Vh(Th,P2);
5 Vh u,v;
6 func f=x*y;
7 problem laplace(u,v,solver=LU) =
8 int2d(Th)(dx(u)*dx(v)+dy(u)*dy(v)) // partie bilineaire
9 - int2d(Th)(f*v) // membre de droite
10 + on(5,u=0); // Condition de Dirichlet aux frontieres
11 real cpu=clock();
12 laplace; // RESOUD L’EDP
13 plot(u);
14 cout << " CPU = " << clock()-cpu << endl;

exemple 2
1 // -laplacien(v)=1 sur ]0,1[x]0,1[ et v=0 au bord
2 mesh Th=square(10,10);
3 fespace Vh(Th,P1); // P1 espace d’elements finis
4 Vh uh,vh; // inconnue et fonction test
5 func f=1; // membre de droite
6 func g=0; // conditions aux limites
7 solve laplace(uh,vh) = // definion et resolution du probleme
8 int2d(Th)( dx(uh)*dx(vh) + dy(uh)*dy(vh) ) // forme bilineaire
9 + int2d(Th)( -f*vh ) // forme lineaire
10 + on(1,2,3,4,uh=g) ; // a lock boundary condition form
11 f=x+y;
12 laplace; // nouvelle resolution avec la nouvelle fonction f
13 plot(uh,ps="Laplace.eps",value=true); // visualiser la solution

exemple 3
1 // formulation mixte du probleme precedent
2 mesh Th=square(10,10);
3 fespace Vh(Th,RT0);
4 fespace Ph(Th,P0); // maillage fonctions test
5 Vh [u1,u2],[v1,v2]; // fonctions=vecteurs
6 Ph p,q;
7 problem laplaceMixte([u1,u2,p],[v1,v2,q],solver=LU,eps=1.0e-30) =
8 int2d(Th)( p*q*1e-10+ u1*v1 + u2*v2 + p*(dx(v1)+dy(v2)) + (dx(u1)+dy(u2))*q )
9 + int2d(Th) ( q)
10 + int1d(Th)( (v1*N.x +v2*N.y)/-2);
11 laplaceMixte; // the problem is now solved
12 plot([u1,u2],coef=0.1,wait=1,ps="lapRTuv.eps",value=true); // champ (u1,u2)
13 plot(p,fill=1,wait=1,ps="laRTp.eps",value=true); // isovaleurs de p

exemple 4
1 mesh Th=square(8,8);
2 fespace Xh(Th,P2);
3 fespace Mh(Th,P1);
4 Xh u2,v2;
5 Xh u1,v1;
6 Mh p,q;
7
8 solve Stokes ([u1,u2,p],[v1,v2,q],solver=Crout) =
9 int2d(Th)( ( dx(u1)*dx(v1) + dy(u1)*dy(v1)
10 + dx(u2)*dx(v2) + dy(u2)*dy(v2) )
11 + p*q*(0.000001)
12 + p*dx(v1)+ p*dy(v2)
13 + dx(u1)*q+ dy(u2)*q
14 )
15 + on(3,u1=1,u2=0)

105 (H. Quadjovie, FDS/UL, 2009)


CHAPITRE 7. LE SOLVEUR FREEFEM 7.2. FREEFEM3D

16 + on(1,2,4,u1=0,u2=0);
17
18 plot(coef=0.2,cmm=" [u1,u2] et p ",p,[u1,u2]);
19
20 Xh psi,phi;
21
22 solve streamlines(psi,phi) =
23 int2d(Th)( dx(psi)*dx(phi) + dy(psi)*dy(phi))
24 + int2d(Th)( -phi*(dy(u1)-dx(u2)))
25 + on(1,2,3,4,psi=0);
26
27 plot(psi,wait=1);
28 int i=0;
29 real nu=1./100.;
30 real dt=0.1;
31 real alpha=1/dt;
32
33 Xh up1,up2;
34
35 problem NS ([u1,u2,p],[v1,v2,q],solver=Crout,init=i) =
36 int2d(Th)(
37 alpha*( u1*v1 + u2*v2)
38 + nu * ( dx(u1)*dx(v1) + dy(u1)*dy(v1)
39 + dx(u2)*dx(v2) + dy(u2)*dy(v2) )
40 + p*q*(0.000001)
41 + p*dx(v1)+ p*dy(v2)
42 + dx(u1)*q+ dy(u2)*q
43 )
44 + int2d(Th) ( -alpha*convect([up1,up2],-dt,up1)*v1 -alpha*convect([up1,up2],-dt,up2)*v2 )
45 + on(3,u1=1,u2=0)
46 + on(1,2,4,u1=0,u2=0)
47 ;
48
49 for (i=0;i<=20;i++)
50 {
51 up1=u1;
52 up2=u2;
53 NS;
54 if ( !(i % 10))
55 plot(coef=0.2,cmm=" [u1,u2] et p ",p,[u1,u2]);
56
57 } ;
58 if ( (i % 10))
59 plot(coef=0.2,cmm=" [u1,u2] et p ",p,[u1,u2]);
60 streamlines;
61 plot(psi,wait=1);

7.2 Freefem3d
Freefem3d est un logiciel libre conçu pour aider à la résolution numérique des équations aux dérivées partielles
(edp) en 3D par la méthode des éléments finis tétraédriques de Galerkin appliquée à la formulation variationnelle ou
forte du problème, avec maillage automatique et adaptatif. Il nécéssite la connaissance des logiciels povray pour décrire
la géométrie du domaine de résolution et les cœfficients de discrétisation, medit (sous Windows ou Linux) et opendx
(sous Linux) pour visualiser graphiquement les solutions du système.

7.2.1 Prise en mains de Freefem3d


Freefem3d est un compilateur capable de lire et d’exécuter un fichier texte (ou script, dans lequel une série d’instruc-
tions a été saisie au préalable à l’aide d’un éditeur brut de texte (tel que crimson) avec l’instruction ff3d nom_fichier.ff.
Freefem3d ne disposant pas d’interface graphique intégré, le résultat de l’exécution d’un script est un couple de fichiers

(H. Quadjovie, FDS/UL, 2009) 106


CHAPITRE 7. LE SOLVEUR FREEFEM 7.2. FREEFEM3D

de données aux formats .mesh et .bb par :


code
1 save(medit,"nom_recuperation",nom_maillage)
2 save(medit,"nom_recuperation",nom_solution,nom_maillage)

Pour visualiser le résultat de la compilation, on saisit depuis le terminal l’instruction medit nom_recuperation, qui lit
les valeurs de la fonction nom_solution en chacun des points du maillage nom_maillage.

Un script Freefem3d comporte trois (3) parties :


– la géométrie du domaine,
– la définition et la résolution du problème sous des conditions aux limites,
– les représentations graphiques.

Dans un script Freefem3d, toutes les variables sont déclarées avec leurs types. Les principaux types de variables sont :
bool pour les valeurs de vérité ;
double pour les réels ;
vector pour les vecteurs ;
vertex pour les points P ;
function pour les fonctions s’appliquant en P ;
femfunction pour les fonctions retournant les valeurs en les points d’un maillage par éléments finis ;
scene pour les constituants de la frontière du domaine de résolution ;
mesh pour un maillage par éléments finis ;
domain pour le domaine de résolution ;
solve pour définir un système d’edp et le résoudre ;
ofstream pour créer et envoyer dans un fichier.
On distingue également les expressions globales : x,y,z les coordonnées du point courant P ; u,v les paramètres en
fonction desquels les coordonnées d’un point courant sont exprimées ; solver la méthode d’éléments finis choisie ; N le
vecteur normal au point courant ; cout << "nom_var_aff =" << expr << "\n"; pour afficher le résultat du calcul de
expr sous la forme nom_var_aff = resultat (remarquer que "\n" marque la fin d’une ligne d’affichage) ; true vrai ;
false faux ; De plus,

; : marque la fin d’une instruction.


{...} : sont les délimiteurs d’un ensemble d’instructions.
/*...*/ : sont les délimiteurs de commentaires.
nom_type nom_var; : déclare la variable nommée nom_var.
nom_type nom_var = val; : affecte la valeur val à la variable nommée nom_var.

Les fonctions mathématiques s’écrivent : sin, cos, ln, exp, sqrt, abs, acos, asin, tan, cosh, sinh, tanh, one, min, max
et les opérateurs arithmétiques et de différentiations partielles :

& : ET logique.
| : OU logique.
! : NON logique.
== : égalité.
!= : 6= ou différence.
<= : plus petit ou égal.
>= : plus grand ou égal.
^ : élevation à la puissance.
* : multiplication.
.* : multiplication terme à terme.
/ : division.
./ : division terme à terme. R
f*u : discrétisée par l’opérateur bilinéaire : Ω f u v dP , ∀v ∈ H01 (Ω).
R
dx(u) : ∂u/∂x discrétisée par l’opérateur bilinéaire : Ω ∂x u v dP , ∀v ∈ H01 (Ω).
R
dy(u) : ∂u/∂y discrétisée par l’opérateur bilinéaire : Ω ∂y u v dP , ∀v ∈ H01 (Ω).
R
f*dz(u) : f ∂z u discrétisée par l’opérateur bilinéaire : Ω f ∂z u v dP , ∀v ∈ H01 (Ω).
R
dx(f*dy(u)) : ∂x (f ∂y u) discrétisée par l’opérateur bilinéaire : − Ω f ∂y u ∂x v dP , ∀v ∈ H01 (Ω).

107 (H. Quadjovie, FDS/UL, 2009)


CHAPITRE 7. LE SOLVEUR FREEFEM 7.2. FREEFEM3D

R
dx(dx(u))+dy(dy(u))+dz(dz(u)) : ∂x22 u+∂y22 u+∂z22 u discrétisée par l’opérateur bilinéaire : − Ω (∂x u ∂x v+∂y u ∂y v+
∂z u ∂z v) dP , ∀v ∈ H01 (Ω).
grad(u) : le gradient de u.
div(u) : la divergence de u. R
div(grad(u)) : le laplacien ∆u, discrétisé par l’opérateur bilinéaire : − Ω ∇u · ∇v dP , ∀v ∈ H01 (Ω).
dnu(u) : dérivée conormale de u, intégrant provenant de l’application de la formule de Green dans la formulation
variationnelle du problème.
R
int(Gamma)(u) : Γ u ds, intégration dans R2 .
R
int(u) : Ω u dP , intégration dans R3 .
convect(u,v1,v2,v3) : = u(P + v(P )), où v = (v1, v2, v3) est la vitesse de convection, approxime le terme
d’évolution-convection ∂t u + v · ∇u, par la méthode des caractéristiques discrète.

7.2.2 Opérateurs de description et résolution


Parmi les conventions du langage povray, celles qui suivent sont les plus usitées en association avec Freefem3D :

• sphere {<x0,y0,z0>, R, pigment{color rgb <a,b,c>}} : la sphère de centre le point (x0 , y0 , z0 ), de rayon R et
ayant pour label <a,b,c>.
• box {<x0,y0,z0>, <x1,y1,z1>, translate <v1,v2,v3> pigment{color rgb <a,b,c>}} : la boîte parallélépipédi-
que construite sur les points (x0 , y0 , z0 ) et (x1 , y1 , z1 ), translatée suivant le vecteur (v1 , v2 , v3 ) et ayant pour label
<a,b,c>.
• cylinder {<x0,y0,z0>, <x1,y1,z1>, R, pigment{color rgb <a,b,c>}} : le cylindre d’axe la droite passant par
les points (x0 , y0 , z0 ) et (x1 , y1 , z1 ), de rayon R et ayant pour label <a,b,c>.
• cone {<x0,y0,z0>, R0, <x1,y1,z1>, R1, pigment{color rgb <a,b,c>}} : le cône d’axe la droite passant par
les points (x0 , y0 , z0 ) et (x1 , y1 , z1 ), dont la coupure orthogonale en (x0 , y0 , z0 ) (resp. (x1 , y1 , z1 )) est le cercle de
rayon R0 (resp. R1), et ayant pour label <a,b,c>.
• plane {<a,b,c>,d, pigment{color rgb <k,l,m>}} : le plan déquation ax + by + cz = d, et ayant pour label
<k,l,m>.
• quadric {<a,b,c>, <d,e,f>,<g,h,i>,j, pigment{color rgb <k,l,m>}} : la quadrique d’équation ax2 + by 2 +
cz 2 + dxy + exz + f yz + gx + hy + iz + j = 0, et ayant pour label <k,l,m>.
• cubic {<a0,...,a19>, pigment{color rgb <k,l,m>}} : la cubique d’équation a0x3 + · · · + a19 = 0, et ayant
pour label <k,l,m>.
• poly {n,<a_0,...,a_m>, pigment{color rgb <k,l,q>}} : la surface définie par le polynôme de degré n et dont
les cœfficients sont a0 , · · · , m = 1 + (n + 1)(n + 2)(n + 3)/6, et ayant pour label <k,l,q>.
• union{objet1 objet2 pigment{color rgb <a,b,c>}} : la réunion ensembliste.
• intersection{objet1 objet2 pigment{color rgb <a,b,c>}} : l’intersection ensembliste.
• difference{objet1 objet2 ... objetS pigment{color rgb <a,b,c>}} : la différence ensembliste des S − 1 der-
niers objets de la première.

La géométrie du domaine de résolution est alors décrite par :

<a,b,c> : désigne la référence d’un objet géométrique et indique le nombre de degrés de liberté de l’objet.
double nom_var = val; : affecte la valeur val à la variable nommée nom_var.
vertex nom_point = (x0,y0,z0); : définit le point de coordonnées (x0 , y0 , z0 ).
vector nom_vec = (v1,v2,v3); : définit le vecteur de coordonnées (v1 , v2 , v3 ).
function nom_fonc = expr; : définit la fonction ayant pour expression expr.
scene nom_scene = pov("fichier.pov"); : définit à l’aide des objets décrits dans fichier.pov, tous les éléments
constitutifs de la frontière du domaine de résolution. Lorsque plusieurs scènes sont définies, c’est la dernière qui
est activée pour ff3d. On spécifie la scène désirée par l’instruction using nom-scene_desiree;.
domain nom_dom = domain(nom_scene [,inside(ref_obj) && outside(ref_obj)]); : définit le domaine de résolution,
en tant qu’intérieur ou extérieur des éléments de la frontière.
mesh nom_maill = structured(nom_vec,nom_point1,nom_point2); : pour un maillage volumique structuré : boîte
construite sur nom_point1 et nom_point2 et divisée dans chaque direction suivant les coordonnées de nom_vec.
mesh nom_maill = surface(ref_objet,nom_scene,nom_maill_struc); : pour un maillage surfacique (uniquement pour
les calculs d’intégrales).
femfunction nom_ffonc(nom_maill) = expr; : définit la fonction ayant pour expression expr sur les points du maillage
nom_maill.

La syntaxe pour définir et résoudre une edp ou un système d’edp est :

(H. Quadjovie, FDS/UL, 2009) 108


CHAPITRE 7. LE SOLVEUR FREEFEM 7.2. FREEFEM3D

code
1 solve(U [,V,...]) in nom_dom by nom_maill
2 [ bicg(maxiter=...,epsilon=...)
3 ,bicgstab(maxiter=...,epsilon=...)
4 ,bicg(maxiter=...,epsilon=...)
5 ,cg(maxiter=...,epsilon=...)
6 ,multigrid(maxiter=...,level=...,nu1=...,nu2=...,mu1=...,mu2=...,epsilon=...,omega=...)
7 ,krylov(type=...,precond=...)
8 ,memory(matrix=...)
9 ,penalty(epsilon=...) ]
10 { pde(U)
11 form_forte_U;
12 cond_lim_U on [ <a,b,c> // valable sur le bord de l’objet labellis\’e par <a,b,c>
13 nom_maill // valable sur le bord de nom_maill
14 nom_maill [ xmin
15 ...
16 zmax ] // valable sur une partie du bord de nom_maill
17 nom_scene ]; // valable sur le bord de nom_scene
18 pde(V)
19 form_forte_V;
20 cond_lim_V on [ <a,b,c>
21 nom_maill
22 nom_maill [ xmin
23 ...
24 zmax ]
25 nom_scene ];
26 ... }

ou

code
1 solve(U [,V,...]) in nom_dom by nom_maill
2 [ bicg(maxiter=...,epsilon=...)
3 ,bicgstab(maxiter=...,epsilon=...)
4 ,bicg(maxiter=...,epsilon=...)
5 ,cg(maxiter=...,epsilon=...)
6 ,multigrid(maxiter=...,level=...,nu1=...,nu2=...,mu1=...,mu2=...,epsilon=...,omega=...)
7 ,krylov(type=...,precond=...)
8 ,memory(matrix=...)
9 ,penalty(epsilon=...) ]
10 { test(Uh [,Vh,...]) // fonctions test
11 form_faible;
12 cond_lim on ...;
13 ... }

Il est possible faire cohabiter des formulations fortes et faibles d’edp dans un même environnement solve.

7.2.3 Opérateurs de visualisation


medit est un logiciel de visualisation de résultats de calculs (en mécanique des solides ou des fluides, thermique,
électromagnétisme, etc) sur des maillages 2D (triangles et quadrangles), 3D (tétraères ou hexaères) ou de surfaces
(triangles et quandrangles). medit permet la manipulation et l’analyse des données de calculs (maillages structurés
et non-structurés, champs scalaires, vectoriels et tensoriels, animations, etc). medit présente une interface utilisateur
minimaliste centrée sur la simplicité et la rapidité des commandes utilisateur (raccourcis) ainsi que sur l’efficacité des
algorithmes de visualisation (courbes intégrales, particules, etc). Il est portable : medit est écrit en C ANSI et utilise
la librairie graphique OpenGL. medit permet de visualiser de gros maillages (plusieurs millions d’éléments de volume)
interactivement. Il offre en outre de nombreuses fonctions de post-traitement : courbes intégrales, vecteurs, carte de
couleurs, isosurfaces, etc. medit autorise également de lier deux fenêtres graphiques (ou plus) ainsi que de générer
facilement des séquences d’images. Les maillages sont au format .mesh et les solutions au format .bb. Leurs structures
sont respectivement :

109 (H. Quadjovie, FDS/UL, 2009)


CHAPITRE 7. LE SOLVEUR FREEFEM 7.2. FREEFEM3D

structure .mesh
1 MeshVersionFormatted 1
2 Dimension
3 val_dim
4 Vertices
5 nbre_points
6 x^i_{j=1,...,val_dim}, ref^i, i=1,...,nbre_points
7 Entity
8 nbre_entite
9 x^i_{j=1,...,degre_liberte_entite}, ref^k, i=1,...,nbre_points, k=1,...,nbre_entite

et
structure .bb
1 val_dim nbre_solutions nbre_points type
2 v^i, i=1,...,nbre_solutions x nbre_points

avec val_dim la dimension de l’espace, nbre_points le nombre de sommets du maillage, x^i_j les coordonnées des som-
mets du maillage, ref^i leurs références associées, Entity ∈ {Edges, Triangles, Quadrilaterals, Tetrahedra, Hexahedra},
nbre_entite le nombre d’entités de ce type, nbre_solutions le nombre d’inconnues solutions dont on recueille les valeurs
prises v^i (représentées par des tons de couleurs) aux sommets du maillage.

L’instruction medit nom_fichier_sauvegarde active l’opérateur de visualisation medit, lit tous les fichiers préfixés
par nom_fichier_sauvegarde, puis affiche dans une fenêtre graphique le maillage en mode fil-de-fer. La souris permet
d’agir sur l’objet graphique soit en modifiant son apparence (filaire, plan de coupe...), soit en lui appliquant des trans-
formations (rotation, translation, zoom...). En tapant :

b, la couleur de fond passe du noir au blanc ;


f, les faces cachées sont éliminées ;
m, active le mode métrique ;
k, construit et affiche en 2D une surface cartésienne basée sur le champ scalaire ;
z, zoom in ;
Z, zoom out ;
+, rapproche l’objet ;
-, éloigne l’objet ;
shift + souris gauche, sélectionne une entité d’un maillage ;
ctrl + souris gauche, encadre une portion du graphisme (à zoomer avec z) ;
F1, active le plan de coupe ;
F2, édite le plan de coupe (avec la souris) ;
i, reinitialise la vue ;
H, réalise une copie d’écran ;
F, affiche les numéros des faces ;
P, affiche les numéros des sommets ;
L, lit le fichier de paramètres associé ;
a, mode animation ;
h, affiche dans la console la liste des commandes et leurs fonctions ;
medit prefix -a debut fin, lance une animation basée sur : prefix_debut.mesh à prefix_fin.mesh.

7.2.4 Exemples
exemple 1
1 vector n = (20, 20, 20);
2 vertex a = (-1,-1,-1);
3 vertex b = ( 1, 1, 1);
4 double pi = 4*atan(1);
5
6 scene Sc = pov("example1.pov"); // the pov-ray file for the geometry
7
8 mesh M = structured(n,a,b);
9

(H. Quadjovie, FDS/UL, 2009) 110


CHAPITRE 7. LE SOLVEUR FREEFEM 7.2. FREEFEM3D

10 domain O = domain(Sc,inside(<1,0,0>));
11
12 function KiO = one(<1,0,0>);
13
14 function uexact = (x*(x-1) + y*(y-1) + z*(z-1));
15 function vexact = sin(pi*x)*sin(pi*y)*sin(pi*z);
16
17 solve(u,v) in O by M method(type=penalty)
18 {
19 pde(u)
20 - dx(KiO*dx(u)) - dy(KiO*dy(u)) - dz(KiO*dz(u)) + KiO*v
21 = -6*KiO + KiO*vexact;
22 u = uexact on <1,0,0>;
23
24 pde(v)
25 KiO*v - div(KiO*grad(v)) + KiO*u
26 = KiO*(3*pi^2 + 1)*vexact + KiO*uexact;
27 v = vexact on <1,0,0>;
28 }
29
30 double I=int(M)(KiO*(uexact-u)^2);
31 double J=int(M)(KiO*uexact^2);
32 cout << sqrt(I/J) << "\n";
33 I = int(M)(KiO*(vexact-v)^2);
34 J = int(M)(KiO*vexact^2);
35 cout << sqrt(I/J) << "\n";
36
37 mesh T = tetrahedrize(O, M);
38
39 save(medit,"v",KiO*v,T);
40 save(medit,"v",T);
41 save(medit,"u",KiO*u,T);
42 save(medit,"u",T);

exemple 2
1 vector n = (10,10,10);
2 vector a = (0,0,0);
3 vector b = (1,1,1);
4 mesh M = structured(n,a,b);
5
6 scene S = pov("void.pov");
7 domain Omega = domain(S);
8
9 double pi = 4*atan(1);
10
11 function Du = pi^2*sin(pi*x);
12 function Dv = -6;
13
14 function f1 = Du + 0.5*Dv;
15 function f2 = Dv + 0.5*Du;
16
17 function u0 = sin(pi*x);
18 function u1 = -pi*cos(pi*x);
19
20 function v0 = x^2+y^2+z^2;
21 function v1 = 2*x;
22
23 solve(u,v) in Omega by M
24 memory(matrix=none)
25 {
26 test(w1,w2)
27 int(grad(u)*grad(w1)) + int(0.5*grad(v)*grad(w1))

111 (H. Quadjovie, FDS/UL, 2009)


CHAPITRE 7. LE SOLVEUR FREEFEM 7.2. FREEFEM3D

28 + int(0.5*grad(u)*grad(w2)) + int(grad(v)*grad(w2))
29 = int(f1*w1) + int(f2*w2)
30 + int(M xmin)(v1*w2 + u1*w1)
31 + int(M xmin)(0.5*v1*w1 + 0.5*u1*w2);
32 u=u0 on M xmax;
33 u=u0 on M ymin;
34 u=u0 on M ymax;
35 u=u0 on M zmin;
36 u=u0 on M zmax;
37 v=v0 on M xmax;
38 v=v0 on M ymin;
39 v=v0 on M ymax;
40 v=v0 on M zmin;
41 v=v0 on M zmax;
42 }
43
44 double I = int(M)((u-u0)^2+(v-v0)^2);
45
46 cout << "error: " << sqrt(I) << "\n";
47
48 mesh T = tetrahedrize(Omega, M);
49
50 save(medit,"v",KiO*v,T);
51 save(medit,"v",T);
52 save(medit,"u",KiO*u,T);
53 save(medit,"u",T);

exemple 3
1 vector n = (20,20,20);
2 vector a = (0,0,0);
3 vector b = (1,1,1);
4
5 mesh M = structured(n,a,b);
6
7 scene S = pov("void.pov");
8 domain Omega = domain(S);
9
10 double pi = 4*atan(1);
11
12 function uexact = sin(pi*x) * sin(pi*y) * sin(pi*z);
13 function vexact = x*x * y*y * z*z;
14
15 double eps=1;
16
17 function f = 3*pi*pi*sin(pi*x)*sin(pi*y)*sin(pi*z)
18 + 2*x*y*z*(y*z + x*z + x*y)
19 ;
20
21 function g = -2*((y*z)^2+(x*z)^2+(x*y)^2)
22 + pi * ( cos(pi*x)*sin(pi*y)*sin(pi*z)
23 + sin(pi*x)*cos(pi*y)*sin(pi*z)
24 + sin(pi*x)*sin(pi*y)*cos(pi*z))
25 ;
26
27 function u = uexact;
28 function v = vexact;
29
30 double variational=0;
31
32 if(variational<1) {
33
34 cout << "## PDE ##\n";

(H. Quadjovie, FDS/UL, 2009) 112


CHAPITRE 7. LE SOLVEUR FREEFEM 7.2. FREEFEM3D

35
36 solve (u,v) in Omega by M
37 memory(matrix=none)
38 {
39 pde(u)
40 - div(grad(u))+dx(v)+dy(v)+dz(v)
41 = f;
42 u = uexact on M;
43
44 pde(v)
45 - div(grad(v))+dx(u)+dy(u)+dz(u)
46 = g;
47 v = vexact on M;
48 // xmax;
49 // v = vexact on M ymax;
50 // v = vexact on M zmax;
51 }
52
53 } else {
54
55 cout << "## VF ##\n";
56
57 solve (u,v) in Omega by M
58 memory(matrix=none)
59 {
60 test(U,V)
61 int(eps*grad(u)*grad(U))
62 + int(dx(v)*U) + int(dy(v)*U) + int(dz(v)*U)
63 + int(eps*grad(v)*grad(V))
64 + int(dx(u)*V) + int(dy(u)*V) + int(dz(u)*V)
65 = int(f*U+g*V);
66 u = uexact on M;
67 v = vexact on M;
68 }
69 }
70
71 double J = int(M)((uexact)^2+(vexact)^2);
72 double I = int(M)( (u-uexact)^2+ (v-vexact)^2);
73
74 cout << "Erreur: " << sqrt(I/J) << "\n";
75
76 mesh T = tetrahedrize(Omega, M);
77
78 save(medit,"v",KiO*v,T);
79 save(medit,"v",T);
80 save(medit,"u",KiO*u,T);
81 save(medit,"u",T);

113 (H. Quadjovie, FDS/UL, 2009)


CHAPITRE 7. LE SOLVEUR FREEFEM 7.2. FREEFEM3D

(H. Quadjovie, FDS/UL, 2009) 114


Chapitre 8

Le logiciel de calcul statistique R

Aujourd’hui le logiciel R s’impose comme l’outil libre d’analyse de données universellement utilisé par tous les
statisticiens professionnels. R est un langage de programmation interactif interprété et orienté objet contenant une très
large collection de méthodes statistiques et des facilités graphiques importantes. Ce petit guide se propose de présenter
les fonctionnalités du programme R utilisées le plus couramment en fouille de données.

8.1 Prise en mains de R


On active le logiciel R en tapant R depuis le terminal. Depuis la console, on crée les éléments de base du langage R,
qui sont les objets de la session en cours. Ce sont des données (vecteurs, matrices, séries chronologiques. . .), des fonc-
tions, des graphiques, etc. Chaque objet possède un mode (qui décrit son contenu) qui s’obtient par mode(nom_objet)
et une classe (qui décrit sa structure) qui s’obtient par class(nom_objet). Un objet créé est affecté à la variable nom-
mée nom_var par l’instruction : nom_var<-instr_objet. Par exemple, les données tabulées tab se saisissent dans le
tableur intégré dans R par l’instruction tab<-edit(data.frame()). Les objets créés durant une session s’enregistrent
par save.image("nom_session.RData") et se reactivent par load("nom_session.RData"). La commande q() quitte le
programme R. Plusieurs lignes d’instructions R sont sauvegardées à l’aide d’un éditeur de texte brut dans un fichier
nom_fichier.R et sont exécutées depuis la console avec source("nom_fichier.R"). Les commentaires peuvent y être
indiqués par # et plusieurs instructions y sont séparées par ;. Enfin, R dispose de quelques interfaces graphiques : Rcmdr
et ade4TkGUI, qui se lancent respectivement par library(Rcmdr) et ade4TkGUI(show = FALSE, history = FALSE).

Les principaux modes de R :


null (object vide),
numeric (nombres réels),
complex (complexes),
logical (valeurs de vérité),
character (chaînes de caractères).

Les principales classes de R :


vector (pour les vecteurs de valeurs prises par une variable statistique),
matrix (pour les matrices),
array (pour les matrices à plus de deux dimensions),
list (pour les collections ordonnées d’objets)
data.frame (pour les tableaux statistiques : tableaux de données brutes, des effectifs ou des fréquences, disjonctifs,
de Burt ou de contingence),
factor (pour les variables qualitatives),
time-series (pour les séries temporelles).

Les principales commandes de survie de R :


getwd() : affiche le repertoire courant.
setwd(’chemin_repertoire’) : positionne dans le repertoire de travail.
ls() ou objects() ou ls.str() : liste (avec plus ou moins de détails) les objets créés durant la session en cours.

115
CHAPITRE 8. LE LOGICIEL DE CALCUL STATISTIQUE R 8.1. PRISE EN MAINS DE R

rm(a,b) : permet de détruire les objets affectés aux variables a et b.


history() : affiche la liste des commandes exécutées durant la session en cours.
help.start() : donne accès à l’aide de R au format html.
help(nom_fonction) : affiche un manuel décrivant la fonction nom_fonction dans tous les packages chargés en
mémoire. L’instruction help(nom_fonction, try.all.packages=TRUE) affiche un manuel décrivant la fonction
nom_fonction dans tous les packages installés, tandis que help(nom_fonction, packages="nom_package") affiche
un manuel décrivant la fonction nom_fonction dans le package spécifié. L’échappement étant obtenu par q.
example(nom_fonction) : affiche des exemples d’utilisation de la fonction nom_fonction.
demo(nom_demo) : démontre les possibilités offertes par R via nom_demo. La commande demo() affiche la liste des
démonstrations dans les packages.
names(nom_fonction) <- c("nom1",...,"nomN") : attribue des noms aux colonnes de nom_fonction. (Idem pour
rownames et colnames).
attributes(nom_fonction) : affiche les noms des objets R composants nom_fonction.
save.image("chemin_nom_session.RData") : enregistre les objets créés durant la session.
load("nom_session.RData") : charge en mémoire les objets créés durant la session dénommée nom_session.RData.
print(nom_objet) : optimise l’affichage écran d’un objet créé.
data() : ouvre une fenêtre listant l’ensemble des tableaux de données disponibles dans R.
library(nom_package) : charge une extension en mémoire. La commande search() affiche les packages chargés au
démarrage et help.search("Packages") la liste des packages disponibles. L’instruction library(help=nom_package)
liste les fonctions définies dans un package.
install.packages("nom_package",dependencies=TRUE) : installe depuis la console-R une extension et toutes ses
dépendances depuis un dépôt choisi dans une liste proposée. Il est possible d’installer depuis le terminal-Linux
une extension téléchargée en local par l’instruction : R CMD INSTALL nom_package.
help(Devices) : liste les pilotes accessibles dans cette version de R. Le chargement d’un pilote s’obtient par
nom_pilote() et il se désactive par dev.off(). La liste des périphériques ouverts est affichée par dev.list(),
celui qui est actif par dev.cur() et le changement parmi les périphériques ouverts par dev.set(nom_periph).
colors() : liste les noms des 657 couleurs disponibles.
digits=n : fixe le nombre de décimales après la virgule à n.
date() : affiche la date du jour et l’heure de l’instant

Les packages disponibles par défaut sont :


base Fonctions de base de R
boot Méthodes de ré-échantillonnage et de bootstrap
class Méthodes de classification
cluster Méthodes d’aggrégation
datasets Jeux de données de base
foreign Fonctions pour importer des données provenant de Minitab, S, SAS, SPSS, Stata, Systat, dBase
graphics Mode graphique de base
grDevices Périphériques graphiques pour base et grid
grid Mode graphique grid
KernSmooth Méthodes pour le calcul de fonctions de densité
lattice Mode graphique en treillis (graphes conditionnels)
MASS Fonctions, utilitaires et jeux de données de Venables et Ripley
methods Méthodes, classes et utilitaires pour la programmation
mgcv Modèles additifs généraloisés
nlme Modèles (non-)linéaires à effets mixtes
nnet Réseaux de neurones et modèles Log-linéaires multinomiaux
rpart Méthodes de partitionnement récursif
spatial Analyses spatiales (Kriging and Point Pattern Analysis)
splines Régression et classes utilisant des représentations polynômiales
stats Fonctions statistiques
stats4 Fonctions statistiques utilisant la classe S4
survival Analyse de survie
tcltk Fonctions pour utiliser les éléments de l’interface Tcl/Tk
tools Utilitaires de développement de package et d’administration
utils Fonctions utilitaires de R

Les opérations standards dans R :


help(Syntax) : affiche un tableau décrivant les règles de priorité entre opérateurs
+ : addition

(H. Quadjovie, FDS/UL, 2009) 116


CHAPITRE 8. LE LOGICIEL DE CALCUL STATISTIQUE R 8.1. PRISE EN MAINS DE R

- : soustraction
* : multiplication
^ : puissance
.* : multiplication terme à terme
/ : division
./ : division terme à terme
%/% : division euclidienne
%% : reste de la division euclidienne
%x% : produit de Kronecker
choose(n,k) : Cn k

expression(instr_expr) : construction d’une expression sans l’évaluer


eval(nom_expr) : évalue une expression déjà construite
D(nom_expr,"nom_var") : opérateur dérivée partielle

Les opérateurs logiques dans R :


& : ET logique
| : OU logique
! : NEGATION logique
!= : différent de
== : égal à
< : inférieur à
<= : inférieur ou égal à
> : supérieur à
>= : supérieur ou égal à
%in% : appartenance
nom_varlog <- nom_var > n : construit un vecteur logique de même dimension que nom_var dont la ie coordon-
née est TRUE si la condition nom_var[i] > n est vérifiée, et FALSE sinon

Les vecteurs arithmétiques dans R :


n:m : génère une suite de nombres de n à m par pas de 1. Cette opération est prioritaire sur les autres.
seq(x,y,by=p) : génère une suite de nombres de x à y par pas de p
seq(x,y,length=n) : génère une suite de n nombres de x à y
seq(from=x,by=p,length=n) : génère une suite de n nombres à partir de x par pas de p
seq(to=y,by=p,length=n) : génère une suite de n nombres par pas de p finissant à y
c(elt1,elt2,...) : crée le vecteur ligne (elt1, elt2, ...) et l’affecte à la variable par défaut
sequence(c(n_1,n_2,...,n_k)) : génère le vecteur ligne 1, 2, . . . , n1 , 1, 2, . . . , n2 , . . . , 1, 2, . . . , nk .
rep(a,n) : génère le vecteur ligne (a, a, . . . , a), le a étant répété n fois
gl(k,m [,length=n, labels=c("lab_1","lab_2",...,"lab_k")]) : génère (la longueur de chaque réplication
étant m) le vecteur ligne 1, . . . , 1, 2, . . . , 2, . . . , k, . . . , k et la longueur du vecteur étant égale à n. Avec l’option
labels, les niveaux entiers sont remplacés par les chaînes de caractères spécifiées.
letters(1:n) ou LETTERS(1:n) : génère les lettres dans l’ordre alphabétique : (a, b, . . .) ou (A, B, . . .).

nom_vec <- c(elt1,elt2,...) : crée le vecteur ligne (elt1, elt2, ...) et l’affecte à la variable nommée nom_vec
nom_vec[-i] : supprime la ie coordonnée de nom_vec
nom_vec[i] : affiche la ie coordonnée de nom_vec
nom_vec[i,j,k] : affiche les ie , je et ke coordonnées de nom_vec
nom_vec[i:j] : affiche de la ie à la je coordonnées de nom_vec
rep(nom_vec,times=n) : produit le vecteur formé de n copies successives de nom_vec
length(nom_vec) : longueur (nombre d’élément) de la variable nom_vec
sum(nom_vec) : affiche la somme des éléments de nom_vec
cumsum(nom_vec) : affiche la somme cumulée des éléments de nom_vec
prod(nom_vec) : affiche le produit des éléments de nom_vec
cumprod(nom_vec) : affiche le produit cumulé des éléments de nom_vec
factor(nom_vec, labels=c("niveau1",...,"niveauN")) : affiche une variable catégorielle avec les niveaux de
valeurs de nom_vec
min(nom_vec) : affiche la valeur minimale parmi les coordonnées de nom_vec

117 (H. Quadjovie, FDS/UL, 2009)


CHAPITRE 8. LE LOGICIEL DE CALCUL STATISTIQUE R 8.1. PRISE EN MAINS DE R

max(nom_vec) : affiche la valeur maximale parmi les coordonnées de nom_vec


abs(nom_vec) : affiche le vecteur des valeurs absolues des coordonnées de nom_vec
log(nom_vec) : affiche le vecteur des logaritmes népériens des coordonnées de nom_vec
log(nom_vec,a) : affiche le vecteur des logaritmes en base a des coordonnées de nom_vec
sin(nom_vec) : affiche le vecteur des sinus des coordonnées de nom_vec
cos(nom_vec) : affiche le vecteur des cosinus des coordonnées de nom_vec
tan(nom_vec) : affiche le vecteur des tangentes des coordonnées de nom_vec
exp(nom_vec) : affiche le vecteur des exponentielles des coordonnées de nom_vec
sqrt(nom_vec) : affiche le vecteur des racines carrées des coordonnées de nom_vec
t(nom_vec) : transposition de la variable nom_vec
nom_vec1 %*% nom_vec2 : produit scalaire de deux vecteurs
round(nom_vec,n) : arrondit les coordonnées de nom_vec à n chiffres après la virgule
rev(nom_vec) : inverse l’ordre des coordonnées de nom_vec
sort(nom_vec) : trie dans l’ordre ascendant les coordonnées de nom_vec
rev(sort(nom_vec)) : trie dans l’ordre descendant les coordonnées de nom_vec

Les vecteurs de chaînes de caractères dans R :


c("grand","pe \n tit","mince","obese") : suite de chaînes de caractères (grand, petit, mince, obese)
paste(c(elt1,...,eltk)) : convertit chaque élément en chaînes de caractères, puis les concatène en une seule
chaîne. Exemple : paste("Today is", date()).
paste(c("X","Y"), 1:10, sep="") : produit "X1" "Y2" "X3" "Y4" "X5" "Y6" "X7" "Y8" "X9" "Y10"

Les matrices dans R :


matrix(nom_vec,nrow=nbre_lig,ncol=nbre_col [,byrow=T]) : crée une matrice de nbre_lig lignes et nbre_col
colonnes avec les éléments de nom_vec rangés en colonnes (en lignes lorsque l’option byrow=T est spécifiée). On
peut ne signifier que l’un ou l’autre des arguments nbre_lig ou nbre_col
nom_mat[i,j] : affiche l’élément de ligne i et de colonne j de nom_mat
nom_mat[i,] : affiche la ligne i de nom_mat
nom_mat[i:j,] : affiche les lignes de i à j de nom_mat
nom_mat[c(i,j,k),] : affiche les lignes i, j et k de nom_mat
nom_mat[-i,] : supprime la ligne i de nom_mat
nom_mat[-c(i,j,k),] : supprime les lignes i, j et k de nom_mat
nom_mat[,i] : affiche la colonne i de nom_mat
nom_mat[,i:j] : affiche les colonnes de i à j de nom_mat
nom_mat[,c(i,j,k)] : affiche les colonnes i, j et k de nom_mat
nom_mat[,-i] : supprime la colonne i de nom_mat
nom_mat[,-c(i,j,k)] : supprime les colonnes i, j et k de nom_mat
dim(nom_mat) : dimension de la matrice nom_mat
length(nom_mat) : longueur de la matrice nom_mat
det(nom_mat) : déterminant d’une matrice
diag(nom_mat [,nr=nbre_lig, nc=nbre_col]) : matrice de taille nbre_lig × nbre_col, dont la diagonale est
nom_vec et qui est complétée par des zéros
sum(diag(nom_mat)) : trace d’une matrice
t(nom_mat) : matrice transposée
ncol(nom_mat) : nombre de colonnes d’une matrice
nrow(nom_mat) : nombre de lignes d’une matrice
nom_mat1 %*% nom_mat2 : produit matriciel de deux matrices
rbind(nom_mat1,nom_mat2,...) : concaténation verticale de plusieurs matrices
cbind(nom_mat1,nom_mat2,...) : concaténation horizontale de matrices
apply(nom_mat,1,nom_fonct) : affiche le vecteur des valeurs prises par nom_fonct sur chaque ligne des éléments
de nom_mat. On peut substituer à la fonction les chaînes de caractères "nom_symb", où nom_symb peut être le
symbole de n’importe quel opérateur (+, -, etc)
apply(nom_mat,2,nom_fonct) : affiche le vecteur des valeurs prises par nom_fonct sur chaque colonne des éléments
de nom_mat
solve(nom_mat) : inverse d’une matrice
eigen(nom_mat)$vectors : vecteurs propres d’une matrice inversible

(H. Quadjovie, FDS/UL, 2009) 118


CHAPITRE 8. LE LOGICIEL DE CALCUL STATISTIQUE R 8.2. STATISTIQUE EXPLORATOIRE

eigen(nom_mat)$values : valeurs propres d’une matrice inversible


qr(nom_mat) : orthonormalisation de Gram-Schmidt d’une matrice
svd(nom_mat) : décomposition en valeurs singulières d’une matrice

Les matrices de plus de deux dimensions dans R : On les rencontre, par exemple, pour décrire des tableaux de
contingence avec plus de deux variables.
array(nom_vec,c(nbre_lig,nbre_col,nbre_mat)) : crée un tableau de nbre_lig lignes, nbre_col colonnes et
nbre_mat matrices avec les éléments de nom_vec rangés en colonnes, successivement dans les nbre_mat matrices.
nom_arr1 %o% nom_arr2 : produit extérieur (tous les produits possibles).
outer(nom_arr1,nom_arr2,nom_fonct) : produit extérieur (tous les produits possibles par nom_fonct).

Les listes dans R :


list(nom1=obj1,nom2=obj2,...,nomN=objN) : crée une collection ordonnée d’objets non nécessairement de même
mode.
nom_list[[i]] : affiche le ie élément de la liste nommé nom_list.
nom_list$nom_i : affiche l’élément de la liste nommé nom_i.

Les structures de données multivariées dans R :


data.frame(nom_var1,factor(nom_var2),...) : constitue le tableau ayant en colonnes les valeurs prises par
plusieurs variables statistiques. Celles précédées de factor sont considérées comme des variables qualitatives.
Toutes les variables sont de la classe vector.
nom_tab$Vi : affiche les valeurs prises par la ie variable d’un tableau
row.names(nom_tab) <- c("nom_var-ligne1",...) : attribue des noms aux lignes du tableau nom_tab.
col.names(nom_tab) <- c("nom_var-ligne1",...) : attribue des noms aux colonnes du tableau nom_tab.
data(nom_tab) : charge le tableau de données nommé nom_tab (format .R)
names(nom_tab) : affiche les noms de variables du tableau de données nommé nom_tab
attach(nom_tab) : donne accès aux variables du tableau nommé nom_tab
detach(nom_tab) : désactive l’accès aux variables du tableau nommé nom_tab
read.table("chemin/nom_fichier.txt",header=T,sep=";",dec=",",na="n.d.",row.names = 1) : importe dans
R les données tabulées contenues dans nom_fichier.txt produit à l’aide d’un logiciel autre que R.
nom_tab<-edit(data.frame()) : ouvre l’éditeur de tableau incorporé dans R et sauvegarde automatiquement dans
l’objet nom_tab les données que l’on saisit.
edit(data.frame(nom_tab)) : édite les données contenues dans nom_tab à l’aide de l’éditeur incorporé dans R. La
sauvegarde des modifications effectuées par l’éditeur R s’opère par nom_tab<-edit(data.frame(nom_tab)).
write.table(nom_tab,file="nom_fichier.txt/dat") : enregistre nom_tab en nom_fichier.txt/dat.
expand.grid(nom_col1=vec1,nom_col2=vec2,...) : produit un tableau de toutes les combinaisons possibles avec
les coordonnées des vecteurs en argument.

Les fonctions dans R :


f <- function(e1,e2,...){instr} : définit la fonction f par l’instruction instr.
fix(f) : définit la fonction f à l’aide d’un éditeur associé à cet effet pour recevoir les instructions de définition.
L’éditeur activé par défaut sous linux est vi (taper i pour passer en mode insertion avant la saisie des instructions,
echap pour basculer en mode commande et :x puis valider pour enregistrer et quitter vi).

8.2 Statistique exploratoire


C’est une méthode scientifique qui consiste à réunir des données chiffrées sur des ensembles nombreux, puis à
analyser, à commenter et à critiquer ces données.

8.2.1 Statistique descriptive


La synthèse de l’information contenue dans les données s’opère par :

119 (H. Quadjovie, FDS/UL, 2009)


CHAPITRE 8. LE LOGICIEL DE CALCUL STATISTIQUE R 8.2. STATISTIQUE EXPLORATOIRE

X Statistiques descriptives Tableaux Synthèses graphiques


√ √
Nominal
√ √ √
Ordinal
√ √ √
D’intervalle
√ √ √
Ratio
1/ N = cardΩ 1/ Données brutes 1/ Cammembert
2/ E(X) 2/ Fréquences/effectifs 2/ Tuyaux d’orgue
3/ V (X) 3/ Disjonctif 3/ Histogramme
4/ σ 4/ Burt/contingence 4/ Boîte de Tukey
5/ Yule / Pearson(γ1 et β) 5/ Tige-et-feuilles
6/ Fisher(γ2 ) 6/ Courbe de normalité
7/ max
8/ Q3
9/ Mediane
10/ Q1
11/ min
12/ Etendue
13/ Etendue inter-quartile
14/ Mode
X
où les données statistiques sont modélisées par : (Ω, A, p) −→ (X, AX , pX , FX , ϕX ), avec Ω la population observée, A
une tribu sur Ω (ensemble de parties de Ω, contenant Ω et stable par passage au complémentaire et par les réunions
dénombrables), p une probabilité sur A (application de A dans [0, 1], nulle sur la partie vide et additive sur les familles
disjonctives). Le triplet (Ω, A, p) est un espaces probabilisé. L’application X : A → X est une variable aléatoire (applica-
tion bijective sur A. L’ensemble AX est la tribu borélienne sur X (la plus petite des tribus constituées d’ouverts) muni
d’une topologie. La distribution de X est définie par :
pX : AX → [0,
8 1] −1
< p{X (B)} , si X est disrète
B 7→ ou
: R
R 1B (x)fX (x) dx , si X est continue de densité fX (fonction positive d’intégrale 1)
L’application FX : R → [0, 1], x 7→ p(X < x), est la fonction de répartition de X. Elle est croissante et est pratique
pour le calcul de p(a < X < b) = FX (b) − FX (a). La fonction caractéristique ϕX de X, est la transformée de Fourier
de la distribution X. Elle aide au calcul des moments de X, notamment l’espérance et la variance de X. Le moment
d’ordre r centré en a pour X est :
8 P
< r
x (x − a) pX (x) , si X est discrète
µr (X) = ou
: R r
R (x − a) 1X (x) fX (x) dx , si X est continue,
avec
r = 1 et a = 0 µ1 (X) := E(X), espérance de X
r = 2 et a = E(X) µ2 (X) := V (X), variance de X
µ3 (X)
r = 3 et a = E(X) 3/2 := β, 2e cœfficient d’asymétrie de Pearson
V (X)
µ4 (X)
r = 4 et a = E(X) 2
V (X)
− 3 := γ2 , cœfficient d’aplatissement de Fisher
(r)
a=0 µr (X) := i1r ϕX (0)
Les moments contribuent à l’étude du positionnement, de la dispersion et de la forme des valeurs prises par X. L’es-
pérance est une forme linéaire, tandis que la variance (moment d’ordre 2 minimal) ne l’est pas. Les cœfficient β et γ2
s’interprètent :
= 0 symétrique
β < 0 oblique à droite
> 0 oblique à gauche
et
2
= 0 normale, fX (x) = √1 e−x /2

γ2 < 0 aplatie
> 0 non aplatie
Les quartiles sont les valeurs Q1 , médiane et Q3 telles que FX (Q1 ) = 0.25, FX (mediane) = 0.5 et FX (Q3 ) = 0.75.
La médiane, par exemple, s’obtient
8 )
>
> x N +1 , si N impair
>
< 1
2 déroulement ր des valeurs avec répétition
(x N + x N +1 ) , si N pair
M édiane = 2 2 2
>
> ou
>
:
interpolation linéaire sur la classe médiane [ei−1 , ei ] telle que FX (ei−1 ) < 0.5 et FX (ei ) > 0.5

(H. Quadjovie, FDS/UL, 2009) 120


CHAPITRE 8. LE LOGICIEL DE CALCUL STATISTIQUE R 8.2. STATISTIQUE EXPLORATOIRE

La somme des écarts minimale est la somme des écarts à la médiane, et 50% de la population prennent des valeurs
appartenant à l’intervalle interquartile [Q1 , Q3 ]. Les quartiles permettent d’évaluer la symétrie de la distribution par le
biais du cœfficient de Yule :
(Q3 − mediane) − (mediane − Q1 )
Y ule = ,
(Q3 − mediane) + (mediane − Q1 )
qui s’interprète :
= 0 symétrique (mode = médiane = moyenne)
Y ule < 0 oblique à droite (mode > médiane > moyenne)
> 0 oblique à gauche (mode < médiane < moyenne)
Les distributions :
Pour chaque distribution, on dispose de quatre commandes préfixées par une des lettres d, p, q, r et suivie du
nom de la distribution :
dnom_dist : pour définir la fonction de densité (resp. la fonction de probabilité), P (X = k), d’une distribution de
probabilité continue (resp. d’une distribution discrète),
pnom_dist : pour définir la fonction de répartition, F (x) = P (X ≤ x), ou densité de probabilité cumulée,
qnom_dist : pour définir la fonction des quantiles, c’est-à-dire la valeur pour laquelle la fonction de répartition
atteint une certaine probabilité ; dans le cas d’une variable discrète, cette fonction renvoie le plus petit entier u
tel que F (u) > p,
rnom_dist : pour pouvoir générer des réalisations aléatoires indépendantes de la distribution nommée nom_dist.

Les syntaxes d’utilisation sont par exemples :


dnom_dist(x,liste_param_distribution,liste_param_optionnels), pour évaluer les valeurs de cette fonction
en chaque coordonnée du vecteur x.
rnom_dist(n,liste_param_distribution,liste_param_optionnels), pour générer n observations aléatoires sui-
vant la distribution.
pnom_dist(x,liste_param_distribution,liste_param_optionnels), pour évaluer les valeurs de cette fonction
en chaque coordonnée du vecteur x.
qnom_dist(p,liste_param_distribution,liste_param_optionnels), pour générer le quantile correspondant à la
probabilité p, avec 0 < p < 1.

Les distributions usuelles s’écrivent dans R :


Γ(a+b)
beta(shape1=a,shape2=b) : loi Beta de densité fX (x) = Γ(a)Γ(b) xa−1 (1 − x)b−1 , pour a > 0 , b > 0 et 0 ≤ x ≤ 1,
R √
avec Γ(ν) := 0+∞ e−t tν−1 dt et vérifiant : Γ(ν) = (ν − 1)Γ(ν − 1) sur R∗+ , Γ(ν) = (ν − 1)! sur N∗ et Γ(1/2) = π.

binom(size=n,prob=p) : loi Binomiale. Soit (X1 , . . . , Xn ) (où Xi , i = 1, . . . , n, est une loi de Bernouilli de
probabilité
P P (Xi = 1) = p et Xi = {0, 1}) le résultat de n tirages non exhaustifs (avec remise). Alors la variable
X := n n
i=1 Xi donnant le nombre de 1 dans chaque tirage (x1 , . . . , xn ) ∈ ×i=1 Xi (Ω) est régie par :

P (X = k) = Cnk pk (1 − p)n−k

E(X) = np
V (X) = np(1
“ − p) ” n
ϕX (t) = (1 − p) + peit

cauchy(location=m [0],scale=s [1]) : loi de Cauchy.


m −1
chisq(df=m) : loi du χ2 ou de Pearson de densité fX (x) = m
1
2 2 Γ( m )
x 2 e− x2 . Elle s’applique dans le cadre de
2
la comparaison de proportions, des tests de conformité d’une distribution observée à une distribution théorique
et le test d’indépendance de deux caractères qualitatifs. On a :
E(X) = m
V (X) = 2m
m
ϕX (t) = (1 − 2it)− 2
exp(rate=1/λ [1]) : loi Exponentielle de densité fX (x) = λe−λx , pour x ≥ 0.

f(df1=m1,df2=m2) : loi de Fisher-Snedecor, qui est utilisée pour comparer deux variances observées et qui sert
surtout dans les très nombreux tests d’analyse de variance et de covariance. Elle est régie par :
m2
E(X) = m2 −2
, si m2 > 2
2m22 (m1 +m2 −2)
V (X) = m1 (m2 −4)(m2 −2)2
, si m2 > 4

121 (H. Quadjovie, FDS/UL, 2009)


CHAPITRE 8. LE LOGICIEL DE CALCUL STATISTIQUE R 8.2. STATISTIQUE EXPLORATOIRE

λν
gamma(shape=ν,scale=λ [1]) : loi Gamma de densité fX (x) = Γ(ν)
e−λx xν−1 1[0,+∞[ (x). On a :
ν
E(X) = λ
ν
V (X) = λ2
“ ”ν
λ
ϕX (t) = λ−it

geom(prob=p) : loi Géométrique. Soit X1 une loi de Bernouilli de probabilité P (X1 = 1) = p et X1 = {0, 1}. Alors
la variable X donnant le nombre d’expériences successives nécessaires pour arriver à 1, est régie par :

P (X = k) = p(1 − p)k−1
E(X) = p1
1−p
V (X) = p2

hyper(Np,N(1-p),n) : loi Hypergéométrique. Soit (X1 , . . . , Xn ) (où Xi , i = 1, . . . , n, est une loi de Bernouilli
de probabilité
P P (Xi = 1) = p et Xi = {0, 1}) le résultat de n tirages exhaustifs (sans remise). Alors la variable
X := n n
i=1 Xi donnant le nombre de 1 dans chaque tirage (x1 , . . . , xn ) ∈ ×i=1 Xi (Ω − {w1 , . . . , wi−1 }) est régie,
si N = cardΩ (Np est le nombre de 1 dans la population totale et N(1-p) y est le nombre de 0), par :
k n−k
CN p CN (1−p)
P (X = k) = n
CN
E(X) = np
V (X) = N−n
N−1
np(1 − p), N−n
N−1
est le facteur d’exhaustivité

lnorm(meanlog=m [0],sdlog=σ [1]) : loi Log-Normale définie par X = eσY +m , où Y est une loi normale de
moyenne 0 et d’écart-type 1. On a :
σ2
E(X) = em+ 2
2 2
V (X) = (eσ − 1)e2m+σ
x−m x−m
1
logis(location=m [0],scale=s [1]) : loi Logistique de densité fX (x) = s
e s (1 + e s )−2 . On a :
1
FX (x) =
1+ e− x−m
s
E(X) = m
π2
V (X) = 3s2

1 2
norm(mean=m [0],sd=σ [1]) : loi Normale de densité fX (x) =
σ
√1

e− 2σ2 (x−m) , avec X ∼ norm(m, σ) ⇔
X−a
b−a
∼ norm(0, 1). On a :
E(X) = m
V (X) = σ2
σ 2 t2
ϕX (t) = eimt− 2

pois(lambda=λ) : loi de Poisson. La variable X prend ses valeurs dans X = {0, 1, . . .} et sa fonction de probabilité
λk −λ
e
est donnée par : P (X = k) = k!
, une décroissance rapide en fonction de k (c’est la loi des événements rares
cadencés). On a :
E(X) = λ
V (X) = λ
it
ϕX (t) = eλ(e −1)

“ ” m+1
2 − 2 R
t(df=m) : loi de Student de densité fX (x) = √
1
1,m) 1+ xm , avec : β(p, q) := 01 tp−1 (1−t)q−1 dx. Elle
m β( 2 2
est utilisée lors des tests de comparaison de paramètres comme la moyenne, et dans l’estimation de paramètres
de la population à partir de données sur un échantillon. On a :
E(X) = 0
m
V (X) = m−2

1 X−a
unif(min=a [0],max=b [1]) : loi Uniforme de densité fX (x) = b−a 1[a,b[ (x), avec X ∼ unif([a, b]) ⇔ b−a

unif([0, 1]). On a :
E(X) = 21 (a + b)
1
V (X) = 12 (a + b)2

(H. Quadjovie, FDS/UL, 2009) 122


CHAPITRE 8. LE LOGICIEL DE CALCUL STATISTIQUE R 8.2. STATISTIQUE EXPLORATOIRE

a x a−1 −( x )a
weibull(shape=a,scale=b [1]) : loi de Weibull de densité f (x) = ( )
b b
e
b , pour x > 0. On a :
−( x )a
FX (x) = 1 − e b
1
E(X) = bΓ(1
“ + a
) ”
2 1
V (X) = b2 Γ(1 + a
) − Γ2 (1 + a
)

wilcox(m,n) : loi de Wilcoxon. Soit (X1 , . . . , Xm ) et (Y1 , . . . , Yn ) deux listes de nombres aléatoires. Alors la
variable X donnant le nombre de couples (Xi , Yj ), tels que Xi ≥ Yj , prend ses valeurs dans X = {0, 1, . . . , mn}
et on a :
E(X) = mn 2
mn(m+n+1)
V (X) = 12
Les fonctions de statistique exploratoire dans R :
summary(nom_objet) : renvoie un résumé sur le contenu d’un objet créé.
table(nom_var) : affiche la table des éffectifs.
table(factor(cut(nom_var1,breaks=35+10*(0:7))),nom_var) : affiche la table des éffectifs suivant les intervalles
à bords spécifiés.
table(nom_var1,nom_var2) : affiche le tableau de contingence de deux variables.
mean(nom_var) : calcule la moyenne empirique de la variable nommée nom_var.
median(nom_var) : calcule la médiane de la variable nommée nom_var.
quantile(nom_var) : calcule les quantiles empiriques de la variable nommée nom_var.
sd(nom_var) : calcule l’écart-type de la variable nommée nom_var.
var(nom_var) : calcule la variance empirique de la variable nommée nom_var d’estimateur non biaisé.

Les procédures graphiques dans R :


plot(nom_tab1[,i],nom_tab2[,j] [,type=["p","l","b","n"] ,main="...", sub="..."]) : construit le nuage
de points de la variable nom_tab2[,j] (les ordonnées) contre la variable nom_tab1[,i] (les abscisses). L’argument
type spécifie le type de tracé ; main (resp. sub) pour sur-titrer (resp. sous-titrer).
plot(nom_var1,nom_var2) : construit le nuage de points nom_var2 contre nom_var1.
barplot(nom_var) : affiche le diagramme en barre de la variable nommée nom_var.
boxplot(nom_var1,nom_var2,...) : affiche les diagrammes boîtes et moustaches de plusieurs variables dans le
même reférentiel.
pie(nom_var,labels=c("lab1",..,"lab_length(nom_var)"),col=c("nc1","nc2",..,"nc_length(nom_var)")) :
affiche le diagramme en secteurs (camembert) de la variable nommée nom_var avec les couleurs nc listées dans
col. Les arguments optionnels, density=m1 et angle=m2, hachurent, avec la densité indiquée par m1, les secteurs
par des lignes faisant un angle m2 avec l’horizontal. On peut également faire usage des options font=2, edges=300,
radius=1, border=NA, init.angle=128.
dotchart(nom_var) : affiche le diagramme de Cleveland la variable nommée nom_var.
stem(nom_var) : affiche le diagramme tige-et-feuilles (stem-and-leaf) de la variable nommée nom_var.
matplot(nom_tab1,nom_tab2) : affiche le graphe bivarié de la 1re colonne de nom_tab1 contre la 1re colonne de
nom_tab2, la 2e colonne de nom_tab1 contre la 2e colonne de nom_tab2, etc.

hist(nom_var[,nclass=n,breaks=c(born1,...,bornN),xlab="...",ylab="...",col="nc1",border="nc2"]) : af-
fiche l’histogramme de la variable nommée nom_var. L’argument nclass fixe la largeur de chaque classe à
Xmax −Xmin
, qui est par défaut, fixée soit par la règle de Sturge : 1 + 3, 3 ln(nbreV ), soit par celle de Yule :
√n
2, 5 4 nbreV ; breaks est un vecteur (donnant les bornes des classes) ou un nombre (fixant le nombre de classes) ;
xlab (resp. ylab) pour mettre une légende sur l’axe des abscisses (resp. des ordonnées) ; col (resp. border) pour
dfinir la couleur de remplissage nc1 (resp. des traits de contour des rectangles). On construit l’histogramme des
fréquences (au lieu des effectifs) avec l’argument optionnel probability=TRUE ou prob=TRUE.

image(nom_var1,nom_var2,nom_var3) : représente nom_var3 en tons de couleurs sur la grille rectangulaire cons-


truite sur nom_var1 et nom_var2.
contour(nom_var1,nom_var2,nom_var3) : représente les lignes de contours de nom_var3 sur la grille rectangulaire
construite sur nom_var1 et nom_var2.
persp(nom_var1,nom_var2,nom_var3) : construit la surface 3D sur les valeurs prises par trois variables.
qqnorm(nom_var) : construit la courbe (nom_var, dnorm(nom_var,0,1)).
qqline(nom_var) : construit la courbe des quartiles à travers la distribution.
qqplot(nom_var1,nom_var_2) : trace les quartiles de la première variable contre ceux de la deuxième.

123 (H. Quadjovie, FDS/UL, 2009)


CHAPITRE 8. LE LOGICIEL DE CALCUL STATISTIQUE R 8.2. STATISTIQUE EXPLORATOIRE

Les paramètres optionnels locaux usuels sont :

pch=n : pour choisir le style et la marque de tracé, où n∈ {0, 1, 2, . . . , 25} ∪ {"+","-",...}.


lwd=n : pour fixer l’épaisseur du trait de tracé.
col="nom_couleur" : pour activer la couleur des symboles de tracé.
bg="nom_couleur" : définit la couleur de fond de certains symboles de tracé.
font=n : pour définir les fontes actives, n=2 pour l’italique, n=3 pour le gras et n=4 pour le gras italique.
axes=FALSE : supprime les axes d’un graphique

Toutes les commandes précédentes activent la fenêtre graphique de R, ou si elle est déjà activée, remplace l’avant-
dernière construction par l’actuelle. Les paramètres suivantes doivent être fixés globalement avec par() :

par(bg="nom_couleur" : fixe la couleur de fond de la fenêtre graphique.


col.axis="nom_couleur" : définie la couleur de tracé des axes (idem pour col.lab, col.main et col.sub).
xlim=c(x_min,x_max) : pour fixer les valeurs extrêmes en abscisses.
ylim=c(y_min,y_max) : pour fixer les valeurs extrêmes en ordonnées.
help(par) : liste tous les paramètres graphiques.

Une fenêtre graphique vide s’obtient par windows() sous Windows et x11() sous Unix. Il existe des commandes
de bas-niveau permettant de faire des ajouts aux graphiques :

arrows(x1,y1,x2,y2) : trace une flèche joignant les points dont les coordonnées sont données.
segment(x1,y1,x2,y2) : trace un segment joignant les points dont les coordonnées sont données.
text(x0,y0[,val_label],"...") : pour mettre une étiquette au point (x0 , y0 ).
legend(x0,y0,"..."[,fill=n]) : pour mettre une légende au point (x0 , y0 ), avec une boîte de la couleur corres-
pondante au numéro n.
title(sur_titre[,sous_titre]) : pour sur-titrer un graphique et optionnellement le sous-titrer.
abline(a,b) : pour tracer la droite oblique d’équation y = ax + b.
abline(h=y0) : pour tracer la droite horizontale d’équation y = y0 .
abline(v=x0) : pour tracer la droite verticale d’équation x = x0 .

postscript("nom_fichier.eps" [,horizontal=FALSE, pointsize=n, onefile=FALSE]) : exporte le graphique


affiché au format postscript et en mode paysage. L’argument horizontal=FALSE spécifie le mode portrait et
pointsize la taille des caractères en points.

layout(matrix(1:n,n1,n2) [,widths=c(w_1,...,w_n2), heights=c(h_1,...,h_n1)]) : partitionne la fenêtre


graphique active en n = n1 × n2 parties numérotées, sur lesquelles sont affichés les graphes successivement.
Si on remplace 1:n par c(m1,...,mk), une collection d’entiers au nombre de n avec répétitions, alors les cases
portant le même numéro sont concaténées et celles portant le numéro 0 ne sont pas affichées. Les arguments op-
tionnels widths et heights fixent les proportions des lignes et colonnes de la partition. L’affichage de la partition
réalisée s’obtient par l’instruction layout.show(n).

8.2.2 Analyse de données


Ensemble des techniques de visualisation des données, de classification en groupes homogènes sur un ensemble de
variables, de réduction factorielle du nombre de variables et d’étude canonique des liaisons entre variables. L’analyse en
composantes principales étudie les corrélations, les redondances et réduit un grand nombre de variables inter-correlées
en un petit nombre de facteurs indépendants. L’analyse des correspondances simple permet un grand nombre de
tris croisés, met en correspondance plusieurs variables et est adaptée au traitement des matrices marques/attributs.
L’analyse des correspondances multiple étudie la structure des réponses d’un questionnaire d’enquête et réduit
des variables nominales ou ordinaires en un petit nombre de variables numériques indépendantes. La segmentation
maximise ou minimise la valeur d’une variable dans chacun des groupes.

La classification dans R :
On charge le package library(class) et on dispose des fonctions :

kmeans(x,centers,iter.max,algorithm) : pour classer les individus suivant plusieurs groupes disjoints, en indi-
quant la matrice des données, le nombre de classe à former, le nombre maximum d’itérations et le type d’algorithme
à implémenter pour la détermination des classes. La fonction retourne :

(H. Quadjovie, FDS/UL, 2009) 124


CHAPITRE 8. LE LOGICIEL DE CALCUL STATISTIQUE R 8.2. STATISTIQUE EXPLORATOIRE

– cluster : vecteur d’entiers qui indique la classe de chaque individu.


– centers : la matrice des centres des classes.
– size : la matrice des effectifs de chaque classe.
– withinss : la matrice de la sommes des distances de chaque individu et du centre de la classe.

clusplot(x,pam(x,nb)$clustering) : pour un partitionnement autour de medoïdes.


clusplot(x,clara(x,nb)$clustering) : pour un partitionnement de grandes bases de données.
clusplot(x,daisy(x,nb)$clustering) : pour une matrice de dissimilarité pour variables quanti/qualitatives.
clusplot(x,dist(x,nb)$clustering) : pour une matrice de dissimilarité pour variables quantitatives.
clusplot(x,fanny(x,nb)$clustering) : pour un partitionnement flou.

hclust(dist(x),"com") : pour classer les individus à l’aide d’un dendogramme, en indiquant la matrice des
données et la méthode de classification complete (peut être remplacée par average ou centroid). La fonction
retourne :
– merge : la construction étape par étape de l’arbre hiérarchique,
– height : la matrice (n − 1,n − 1) de vaeurs réels croissantes,
– order : la matrice d’ordre de l’arbre.

L’analyse en composantes principales dans R :


On charge l’extension library(stats) qui donne accès aux commandes :

princomp(x,cor=faux,scores=vrai,covmat=vrai) : pour une ACP centrée et non réduite des données x, avec
production des coordonnées sur les composantes principales et de la matrice de covariances-variances. Cette
instruction retourne après exécution une liste de résultats qui sont :
– x : contient les coordonnées des variables suivant les nouveaux axes obtenus,
– sdev : l’écart-type des composantes principales,
– loadings : les vecteurs propres,
– scores : les coordonnées sur les composantes principales,
– scale : les écarts-types des variables de départ,
– center : les moyennes des variables de départ,
– N.obs : le nombre d’observations.

prcomp(x,rect=vrai,center=vrai,scale=vrai) : pour une ACP centrée et réduite des données x. Cette instruc-
tion retourne après exécution la liste de résultats suivants :
– x : contient les coordonnées des variables suivant les nouveaux axes obtenus,
– sdev : contient l’écart-type des composantes principales,
– rotation : contient les coordonnées des vecteurs propres,
– center : contient les moyennes des variables de départ,
– scale : contient les écars-types des variables de départ.

En outre, le laboratoire de biométrie et biologie évolutive de l’Université Lyon 1 a développé le package ade4
(avec une interface graphique ade4TkGUI) qui permet d’opérer des ACP avec la commande :

dudi.pca(df,row.w,col.w,center=vrai,scale=vrai,scannf=faux,nf) : pour une ACP centrée et normée sur le


tableau de données avec n lignes (les individus) et p colonnes (les variables numériques), avec les poids correspon-
dants et le nombre de valeurs propres à retenir (sinon le nombre est par défaut 2). La fonction dudi.pca retourne
après exécution la liste de résultats :
– tab : contient les données après tranformations et dépend des arguments center et scale.
– cw : poids des colonnes (variables).
– rw : poids des lignes (individus).
– eig : contient les valeurs propres.
– rank : le nombre de variables.
– nf : nombre de valeurs propres retenues.
– c1 : contient les vecteurs propres.
– l1 : contient les vecteurs propres.
– li : contient les coordonnées des individus par rapport aux nouveaux axes.
– co : contient les coordonnées des variables par rapport aux nouveaux axes.
– cent : contient la moyenne des variables de départ.
– norm : contient l’écart-type des variables de départ.

125 (H. Quadjovie, FDS/UL, 2009)


CHAPITRE 8. LE LOGICIEL DE CALCUL STATISTIQUE R 8.3. STATISTIQUE INFÉRENTIELLE

8.3 Statistique inférentielle


Valider ou infirmer des hypothèses a priori ou formulées après une phase exploratoire. La statistique inférentielle
parle de la population à partir de l’échantillon.

8.3.1 Régressions et modèles statistiques


Définition de la formule d’ajustement dans R :
Une formule dans R est de la forme y~modele, où y est la réponse analysée et modele est un ensemble de termes
pour lesquels les paramètres sont estimés. Les principaux modèles sont :
var1+var2 : les effets additifs
var1:var2 : les effets interactifs
var1*var2 : les effets additifs et interactifs
var^n : toutes les interactions jusqu’au niveau n

Régression linéaire dans R :


cor(nom_var1,nom_var2 [,method="kendall" ["spearman"]]) : calcule le cœfficient de corrélation linéaire em-
pirique de Pearson entre les variables nommées nom_var1 et nom_var2.
lm(expr_formule, data=nom_var) : procède à une interpolation linéaire.

exemple
1 ctl <- c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14)
2 trt <- c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69)
3 group <- gl(2,10,20, labels=c("Ctl","Trt"))
4 weight <- c(ctl, trt)
5 anova(lm.D9 <- lm(weight ~ group))
6 summary(lm.D90 <- lm(weight ~ group - 1))
7 summary(resid(lm.D9) - resid(lm.D90))
8
9 opar <- par(mfrow = c(2,2), oma = c(0, 0, 1.1, 0))
10 plot(lm.D9, las = 1)
11 par(opar)

glm() : régression logistique


Régression non linéaire dans R :
library(splines) :
library(nlme) :
nls() : procède à un ajustement non-linéaire par la méthode des moindres-carrés

8.3.2 Tests d’hypothèses


La vraisemblance d’une hypothèse pour une observation est la probabilité d’observer ce résultat sous l’hypothèse,
L(H) = PH vraie (Observation). Elle est déterminée par la courbe de vraisemblance. Estimer, c’est choisir une des
hypothèses. Estimer au maximum de vraisemblance, c’est choisir l’hypothèse qui donne à l’observation la plus grande
vraisemblance. Tester une hypothèse, c’est décider au vu du résultat, si elle est vraie ou fausse. Le risque de 1re espèce
est la probabilité de rejeter l’hypothèse quand elle est vraie. Le risque de 2e espèce est la probabilité d’accepter l’hypothè
ese quand elle est fausse. La puissance du test est la probabilité d’erreur quand on accepte l’hypothèse nulle. La syntaxe
pour procéder à un test est la suivante :

library(ctest) : appelle la librairie des tests.


nom_test(taille_ech,taille_pop,conf=0.n) : éffectue le test.

Les différents tests implémentés dans le programme R sont :

chisq.test() : test de la médiane


wilcox.test() : test de la somme des rangs de Wilcoxon
kruskal.test() : test de la somme des rangs de Kruskal-Wallis
friedman.test() : test de la somme des rangs de Friedman

(H. Quadjovie, FDS/UL, 2009) 126


CHAPITRE 8. LE LOGICIEL DE CALCUL STATISTIQUE R 8.4. PRÉVISION STATISTIQUE

8.3.3 Estimation d’intervalle de confiance


L’estimation a pour but de déterminer les valeurs inconnues des paramètres, (proportion, moyenne, variance) ou
(p, µ, σ2 ), de la population à partir des données, (f, x̄, s2 ), de l’échantillon. Il est alors nécéssaire de déterminer la pré-
cision de ces estimations en établissant un intervalle de confiance autour de ces valeurs prédites.

Si trouver dans un n-échantillon d’une N -population un résultat de j opinions favorables, conduit à penser qu’il y a
entre a et b opinions favorables dans toute la population avec α% de chance de se tromper, alors on dit [a, b] est appelé
intervalle de confiance au risque de α% ou au niveau de confiance de 100 − α%. On obtient l’intervalle de confiance avec
le programme R par : prop.test(taille_ech,taille_pop,conf=0.n).

8.3.4 Re-échantillonnage
Un échantillon est aléatoire lorsque chaque individu de la population a une probabilité connue et non nulle d’apparte-
nir à l’échantillon. On a le prélèvement au hasard, qui assure l’indépendance des erreurs et l’absence d’autocorrélations
parmi les données relatives à un même caractère : sample(nom_vec,n,replace=TRUE [FALSE]) : échantillonnage à n
éléments avec remise dans les coordonnées de nom_vec. Le bootstrap et le Jacknife sont d’autres techniques d’échan-
tillonnage couramment utilisées.

Bootstrap dans R : Le principe de bootstrap est de baser la mesure de l’erreur d’échantillonnage sur le seul échan-
tillon. La syntaxe d’utilisation est :

library(boot) : appelle la librairie de bootstrap.


boot(data=nom_var,statistic=nom_fonct,R=...) : génère un nouvel échantillon d’une statistique pour une ob-
servation.

Jacknife dans R : Le principe du Jacknife est d’énumérer tous les sous-échantillons de l’échantillon observé, obtenu
par élimination d’un seul point. Si l’échantillon de départ contient n points, il y a n sous-échantillons de taille
n − 1. L’objectif est de voir si la suppression d’un point influe beaucoup sur la statistique étudiée. La syntaxe
d’utilisation est :

library(boot) : appelle la librairie de bootstrap.


jacknife(x=nom_var,theta=t,...) : procède à l’estimation de Jacknife.

8.4 Prévision statistique


Discrimination, modèles log-linéaires, séries temporelles, scoring.

Les séries temporelles dans R :


ts(nom_objet, start=c(val_annee,1 /2)), frequency=12 : séries temporelles

8.5 Réseaux de neurones


Analyse neuronales dans R :
library(nnet) :

127 (H. Quadjovie, FDS/UL, 2009)


CHAPITRE 8. LE LOGICIEL DE CALCUL STATISTIQUE R 8.5. RÉSEAUX DE NEURONES

(H. Quadjovie, FDS/UL, 2009) 128


Chapitre 9

Le système formel Maxima

9.1 Prise en mains de Maxima


Maxima est un logiciel interactif libre dédié au calcul formel (dérivation, intégration, cacul de limites, résolution
d’équations, factorisation de polynômes, développement de fonctions en séries entières etc). On démarre une session
Maxima en tapant maxima ou par dclick sur icône. Chaque ligne d’entrées d’instructions (resp. de sorties de résultats)
est indiquée par une invite cN (resp. dN). Ces invites sont en même temps les noms des variables d’affectation par défaut.
Toute instruction, pour être exécutée, doit se terminer par ; (pour que le résultat soit affiché) ou par $ (pour que le
résultat ne le soit pas). La commande d’échappement standard sous Maxima est Ctrl C. L’interruption d’une instruction
en cours d’exécution se fait à l’invite >> de Maxima. Le rappel d’une instruction s’opère en faisant précéder son label
par ’’ (exemple ’’cN). Le rappel de l’instruction précédente s’ordonne par %. On quitte Maxima par quit();.

La description d’une primitive Maxima s’ordonne principalement par l’instruction describe(nom_primitive). Les
programmes de démonstrations sont accessibles par demo("nom_demo.dem"), où nom_demo peut prendre les valeurs :
array, cf, dblint, declin, delta, demo, differ, eaton1, eaton2, eigen, ezgcd, functs, hypgeo, lrats, macex, macro,
nchrpl, newfac, optvar, pfaff, qq, recur, rncomb, rombrg, subscr, sumcon, trgsmp, vect.
Les exemples d’utilisations de certaines commandes sont disponibles et s’obtiennent en tapant example(nom_comm),
où nom_comm peut être :
"//" ADDITIVE ALGSYS ALLROOTS ANTISYMMETRIC APPEND
ARRAYINFO ARRAYS AT ATVALUE AUGCOEFMATRIX BEZOUT
BLOCK BOTHCOEFF CATCH CF CFDISREP CFEXPAND
CHANGEVAR CHARPOLY COEFF COMBINE COMMUTATIVE COMPLEX
CONTENT DEFMATCH DEFTAYLOR DELETE DEPENDS DERIVDEGREE
DESOLVE DIFF DISPLAY DIVIDE DO DOTSCRULES
DPART ECHELON ELIMINATE ENTERMATRIX EQUATIONS EV
EVALUATION EVENFUN EXP EXPAND FACTCOMB FACTOR
FACTORSUM FEATUREP FREEOF FULLMAP FULLMAPL FUNCSOLVE
FUNCTIONS GENMATRIX GET GFACTOR GRADEF HORNER
IF ILT INPART INTEGRATE IS ISOLATE
LAMBDA LAPLACE LASSOCIATIVE LET LETRULES LIMIT
LINEAR LINSOLVE LISTOFVARS LISTS LOGCONTRACT MAP
MATCHDECLARE MATRICES MINFACTORIAL MULTIPLICATIVE MULTTHRU NARY
NOUNIFY NROOTS NUMFACTOR NUSUM ODDFUN ODE2
OPTIMIZE ORDERGREAT ORDERLESS OUTATIVE PART PARTFRAC
PARTITION PICKAPART POISSIMP POLARFORM POLY_DISCRIMINANT POSFUN
POWERSERIES PRINTPROPS PRODUCT PROPERTIES PROPVARS QUNIT
RADCAN RANK RASSOCIATIVE RATCOEFF RATDIFF RATEXPAND
RATSIMP RATSUBST RATWEIGHT REALPART REALROOTS RESIDUE
RESULTANT REVEAL REVERSE RISCH ROOTSCONTRACT SCANMAP
SCSIMP SOLVE SPECINT SQFR SUBST SUBSTINPART
SUBSTPART SUM SYMMETRIC SYNTAX TAYLOR TAYTORAT
TELLRAT TELLSIMP TRIANGULARIZE TRIG TRIGEXPAND TRIGREDUCE
UNORDER XTHRU ZEROEQUIV

129
CHAPITRE 9. LE SYSTÈME FORMEL MAXIMA 9.2. PRIMITIVES MAXIMA

Les packages supplémentaires sont disponibles avec l’instruction load(nom_package) ;, où nom_package peut être :
asympa, pdiff, qual pour le calcul mathématique ; dimen, dimension, physconst pour la physique

9.2 Primitives Maxima


Objets Maxima :
[a_1,...,a_S] : définit une liste de nombres.

Entrées/Sorties :
save("nom_fichier.max",all) : sauve sur disque une session Maxima dans un fichier
writefile("nom_fichier.txt",all) : enregistre une session Maxima dans un fichier texte
loadfile("chemin/nom_fichier.max") : charge le contenu d’un fichier
batch("chemin/nom_fichier.max") : exécute avec echo le contenu d’un fichier
kill(nom_var) : supprime une variable, ainsi que son contenu et ses propriétés
restart : commence une nouvelle session maxima

Constantes :
%e : la base du logarithme néperien

%i : le nombre complexe −1
%pi : le nombre π
inf : infini
minf : moins infini
true : le bouléen vrai
false : le bouléen faux

Opérations arithmétiques :
+ : addition
- : soustraction
* : produit
/ : division
^ : élevation à la puissance
. : produit matriciel
>= : supérieur ou égal
: : opérateur d’assignation d’une valeur à une variable
:= : opérateur de définition d’une fonction
= : indique une équation
fpprec:nbr : fixe le nombre de décimales à nbr. La valeur par défaut est 16.
expr,numer : affiche la valeur numérique d’une expression symbolique
realpart(compl) : partie réelle d’un complexe
imagpart(compl) : partie imaginaire d’un complexe
expand(expr) : développe une expression
factor(expr) : factorise une expression
num(expr) : affiche le numérateur d’une expression
denom(expr) : affiche le dénominateur d’une expression
coeff(expr,nom_var,n) : affiche le cœfficient du terme d’ordre n en la variable npm_var dans une expression

fonctions primitives
sin(...) : sinus
cos(...) : cosinus
tan(...) : tangente
cot(...) : cotangente
csc(...) : cosecante
sec(...) : secante
asin(...) : Arcsinus
acos(...) : Arccosinus

(H. Quadjovie, FDS/UL, 2009) 130


CHAPITRE 9. LE SYSTÈME FORMEL MAXIMA 9.2. PRIMITIVES MAXIMA

atan(...) : Arctangente
acot(...) : Arccotangente
acsc(...) : Arccosecante
asec(...) : Arcsecante
sinh(...) : sinus hyperbolique
cosh(...) : cosinus hyperbolique
tanh(...) : tangente hyperbolique
coth(...) : cotangente hyperbolique
csch(...) : cosecante hyperbolique
sech(...) : secante hyperbolique
sqrt(...) : racine carrée
abs(...) : valeur absolue
exp(...) : exponentielle
ln(...) : logarithme néperien

Calculs :
sum(expr,nom_compteur,nbr1,nbr2) : somme discrète incrémentée
lsum(expr,nom_compteur,[liste_valeurs]) : somme discrète incrémentée sur une liste de valeurs
product(expr,nom_compteur,nbr1,nbr2) : produit discret incrémenté
limit(expr,nom_var,point [,plus minus])| : calcule la limite de expr en un point, par valeurs supérieures ou
inférieures
diff(expr,nom_var,n) : dérivée ne de expr
integrate(expr,nom_var) : affiche une primitive de expr
integrate(expr,nom_var,val1,val2) : calcule une intégrale définie de expr
taylor(expr,nom_var,point,ordre) : affiche le développement en série de Taylor de expr en un point jusqu’à un
ordre donné

Polynômes :
expr,nom_var=expr_subst : substitue expr_var à la variable de expr
ratsimp(expr) : rend au même dénominateur une expression

Equations :
solve([equ1,...,equN],[inc1,...,incS]) : résoud un système d’équations
’diff(y,x,n) : notation différentielle dn y/dxn (sert à écrire les équations différentielles)
ode2(expr,fonct_inc,nom_var) : résoud une équation différentielle ordinaire
rhs(nom_equ) : affiche le membre de droite d’une équation
lhs(nom_equ) : affiche le membre de droite d’une équation

Trigonométrie :
trigexpand(expr) : simplifie une expression en utilisant les formules trigonométriques
trigreduce(expr) : convertit une expresion en une somme de termes, dans chacun desquels sin ou cos n’apparaît
qu’une seule fois en facteur

Matrices :
entermatrix(nbr_lig,nbr_col) : appel à la construction élément par élément d’une matrice
matrix([a11,...,a1S],...,[aR1,...,aRS]) : construit une matrice de type (R,S)
transpose(nom_mat) : transpose une matrice
determinant(nom_mat) : affiche le déterminant d’une matrice
invert(nom_mat) : inverse une matrice
eigenvalues(nom_mat) : affiche les valeurs propres d’une matrice et leurs multiplicités
eigenvector(nom_mat, val_propre) : affiche un vecteur propre associé à une valeur propres
eigenvectors(nom_mat) : affiche les valeurs propres, leurs multiplicités et les vecteurs propres d’une matrice
normalise : true : configure Maxima pour des sorties normalisées de l’exécution des commandes à venir
Suites :
difference(%,nom_suite) : exprime le terme général de la suite en fonction de l’indice
differverbose : true : configure Maxima pour des sorties normalisées de l’exécution des commandes à venir

131 (H. Quadjovie, FDS/UL, 2009)


CHAPITRE 9. LE SYSTÈME FORMEL MAXIMA 9.3. SCRIPTS MAXIMA

9.3 Scripts Maxima


Maxima est doté d’un langage propre permettant d’étendre ses possibilités. Un script Maxima est écrit à l’aide
de n’importe quel éditeur de texte (qui ne formate pas le texte), doit être enregistré avec l’extension .max et exécuté
dans Maxima avec la commande batch("chemin\nom_fichier.max"). Les commentaires sont portés entre /*...*/ et les
instructions successives séparées par une virgule. La syntaxe générique peut s’écrire :
code
1 nom_script():=(
2 print("description du programme"),
3 nom_fonct:read("entrer nom_fonct(x,y)"), /* demande d’entree d’une fonction */
4 print("nom_fonct = ", nom_fonct), /* verification de l’entree */
5 instr1,
6 ..., /* instructions du script */
7 instrN
8 )$

(H. Quadjovie, FDS/UL, 2009) 132


Bibliographie

[1] Baudoin M., Apprends LATEX, Ecole nationale supérieure de techniques avancées, 1997.
[2] Brakke K., Surface Evolver manual, 2003.
[3] Bressan S. - Gurari E., TEXProject manual, 2001.
[4] Delafond G., Guide de survie sous Linux, v.06/06/2004.
[5] Del Pino S. - Pironneau O., ff3d documentation, 2003.
[6] Eisenbud D. - Grayson D. - Stillman M. - Sturmfels B., Computations in algebraic geometry with Macaulay2, 2001.
[7] Frey P., Medit : outil interactif de visualisation de maillages, rapport technique Inria 0247, 2001.
[8] Frey P. - Saiac J-H, Simulation numérique en géométries complexes : apport des techniques modernes de l’adapta-
tion de maillages, ressource pédagogique L2, Jussieu, 2004.
[9] Girou D., Seminar FAQ, v 2.1, 1997.
[10] Goossens M. - Mittelbach F. - Samarin A., The LATEX companion, Addison-Wesley publishing, Massachussetts,
1994.
[11] Guarrigues J., La méthode des éléments finis, Notes de cours, 2002.
[12] Hand R., Introduction to Macsyma, Cornell University, 2000.
[13] Hecht F. - Ohtsuka K. - Pironneau O., Freefem++ manual, 2003.
[14] INRIA Meta2 Project/ENPC Cergrence, Scilab reference manual, 1997.
[15] Kelley C. - Williams T., Gnuplot, An interactive ploting program, 1998.
[16] Lamport L., LATEX : a document preparation system, Addison-Wesley publishing, Massachussetts, 2nd edition,
1994.
[17] Lévy B., Méthodes numériques pour la modélisation 3D, notes de cours, 2000.
[18] Lobry J., Régression non linéaire, notes de travaux dirigés, 2005.
[19] Œtiker T. - Partl H. - Hyna I. - Schlegl E. - Flipo D., Une courte introduction à LATEX 2ε , 2005.
[20] Paradis E., R pour les débutants, rapport technique ISE-Univ-Montpellier, 2005.
[21] Rolland C., LATEX par la pratique, Editions O’Reilly, 1999.
[22] Viennet E., Introduction au système Unix, 2001.

133