133
Outils interactifs libres d’aide à la création scientifique Horatio Quadjovie 1 [email protected] 24 avril 2009 1 Copyright c 2005-2008 Quadjovie, Département de mathématiques, (FDS/UL, Togo), BP. 1515 Lomé, Tél: 002289106688

Outils interactifs libres d’aide à la création scientifique · 2.3.7 Mode mathématique ... 4 Le logiciel de calcul numérique Scilab 69 ... la définition graphique et la simulation

  • Upload
    vokhanh

  • View
    212

  • Download
    0

Embed Size (px)

Citation preview

Outils interactifs libres

d’aide à la création scientifique

Horatio Quadjovie1

[email protected]

24 avril 2009

1Copyright 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.2 Shell d’administration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.3 Accès aux applications de calculs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2 Le formateur de texte LATEX2ǫ 21

2.1 Prise en mains de LATEX2ǫ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.2 Préambule d’un texte d’entrée LATEX2ǫ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222.3 Corps d’un texte d’entrée LATEX2ǫ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

2.3.1 Accents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232.3.2 Tailles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242.3.3 Paragraphes, commentaires et encadrements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242.3.4 Espacements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252.3.5 Fontes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252.3.6 Environnements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262.3.7 Mode mathématique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282.3.8 Insertion de graphiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302.3.9 Sectionnement d’un travail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302.3.10 Bibliographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312.3.11 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332.3.12 Glossaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

2.4 Organigrammes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332.5 Diagrammes en barres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362.6 Confection de transparents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372.7 Afficher un document LATEX2ε sur le Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412.8 Rédaction des actes d’un colloque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422.9 Rédaction d’un curriculum vitæ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432.10 Gestion de projet avec LATEX2ε . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

2.10.1 Définition du projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452.10.2 Mode illustration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462.10.3 Beyond the TEXProject Native Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

3 Le traceur Gnuplot 59

3.1 Prise en mains de Gnuplot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593.2 Tracer par défaut le graphique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

3.2.1 Scripts courants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593.2.2 Définir ses propres variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613.2.3 Fichiers de points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

3.3 Personnaliser le graphique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643.3.1 Généralités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643.3.2 Autres commandes de set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

3

TABLE DES MATIÈRES

4 Le logiciel de calcul numérique Scilab 694.1 Prise en mains de Scilab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

4.1.1 Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694.1.2 Fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

4.2 Analyse matricielle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 724.3 Représentations graphiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

4.3.1 2D-courbes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 744.3.2 3D-courbes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 754.3.3 3D-surfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

4.4 Equations différentielles ordinaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 764.5 Interpolation de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 784.6 De scilab à octave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

5 Le logiciel de calcul algébrique Macaulay2 815.1 Installation manuelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 815.2 Prise en mains de Macaulay2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 815.3 Arithmétique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 825.4 Géométrie des schémas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

5.4.1 Variétés algébriques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 855.4.2 Morphismes de variétés algébriques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

5.5 De Macaulay2 à Singular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

6 Le simulateur Surface Evolver 876.1 Prise en mains de Surface Evolver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 876.2 Syntaxe et commandes Evolver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 896.3 Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 896.4 Exemples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

7 Le solveur Freefem 1017.1 Freefem++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

7.1.1 Prise en mains de Freefem++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1017.1.2 Opérateurs de maillage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1037.1.3 Opérateurs de résolution des edp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1037.1.4 Exemples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

7.2 Freefem3d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1067.2.1 Prise en mains de Freefem3d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1067.2.2 Opérateurs de description et résolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1087.2.3 Opérateurs de visualisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1097.2.4 Exemples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110

8 Le logiciel de calcul statistique R 1158.1 Prise en mains de R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1158.2 Statistique exploratoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119

8.2.1 Statistique descriptive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1198.2.2 Analyse de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124

8.3 Statistique inférentielle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1268.3.1 Régressions et modèles statistiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1268.3.2 Tests d’hypothèses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1268.3.3 Estimation d’intervalle de confiance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1278.3.4 Re-échantillonnage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127

8.4 Prévision statistique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1278.5 Réseaux de neurones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127

9 Le système formel Maxima 1299.1 Prise en mains de Maxima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1299.2 Primitives Maxima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1309.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 pourla 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 LATEX2ε, 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 unemeilleure compréhension des modèles examinés. Ces programmes ne sont pas toujours livrés en standard avec toutes lesdistributions Linux.

cygwin permet l’accès aux fonctionnalités d’appel et outils standards Linux (de développement entres autres). Unedistribution 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 standardGNU.

TkDesk est un gestionnaire de fichiers sous X-Window avec une interface très agréable, d’utilisation intuitive et offrantun important degré de personnalisation.

LATEX2ǫ est l’outil de traitement de texte universellement utilisé par tous les scientifiques professionnels. LATEX2ε est unensemble de macros permettant à un auteur de mettre en forme son texte et ses équations mathématiques, avec lameilleure qualité typographique et en utilisant un format professionnel prédéfini. LATEX2ε nécéssite quelqu’effortsd’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 desbases 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’entemps 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 matricesconstants. Scilab fournit une variété de primitives pour l’analyse des systèmes non-linéaires. La résolution dessystè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’afficheret être manipulables de la même manière que les matrices ou les suites. Enfin, Scilab supporte les données detype 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, lesopérations arithmétiques sur les anneaux et les matrices, les résolutions projectives de modules, la déterminationde la base de Gröbner, le calcul des séries de Hilbert sur les anneaux gradués ou les modules, le calcul de lacohomologie 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 avoirplusieurs composantes : tensions superficielles, énergie potentielle gravitationnelle ou énergies générées par lesdiverses 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 conformeaux contraintes du mouvement ; le déplacement actuel est calculé en multipliant la force par un facteur globald’échelle.

Freefem++ est un logiciel libre conçu pour aider à la résolution numérique des équations aux dérivées partiellesen 2D par éléments finis triangulaires, avec maillage automatique et adaptatif. Il crée, édite et visualise unetriangulation (ensemble de triangles recouvrant un domaine polygonal correspondant au domaine d’étude Ω, avecles 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èredu 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 3Dpar 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étriedu domaine de résolution et les cœfficients de discrétisation, medit (sous Windows) et opendx (sous Unix) pourvisualiser 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 langagede programmation interactif interprété et orienté objet contenant une très large collection de méthodes statistiqueset 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 unaperç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 à êtrecapables d’anticipation, en usant pleinement de leurs aptitudes symboliques, cognitives et imaginatives. Nous espéronsque 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. Enshell Linux, la séquence d’échappement standard est Ctrl-C. Pour quitter une commande on pourra presque toujoursutiliser Ctrl-C (sauf pour less et more, pour lesquels, on utilise q). Une option est toujours précédée d’un signe -. Uneoption assez générale et bien utile est --help qui fournit généralement une aide sommaire sur les options disponiblespour la commande. Exemples : ls --help ; cp --help. On notera que les options peuvent être cumulées. Ainsi, au lieude 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éedans /etc/default/acpi-support par ACPI-SLEEP=true et ACPI-HYBERNATE=true. La relance d’une connexion coupées’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 commandesde shell reconnaissant les spécifications de chemins Microsoft et/ou Linux et permettant de configurer la plupart deslogiciels basés sur le standard GNU. Il est doté à l’installation de tous les compilateurs et convertisseurs et il permetaussi 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 desapplications dans différentes fenêtres). La commande startx &, saisie depuis un terminal cygwin, génère une consolespé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 lamé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 deless, taper h) et info nom_commande (défilement : espace, suivant : n, précédant : p, page parente : U, quitter la fenêtreau 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 oul’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 droitde lecture et leur ajoute le droit d’exécution sur le dossier toto). L’option -R permet d’appliquer les permissionsde façon récursive à tous les sous-dossiers ou sous-fichiers. Pour accorder toutes les permissions à tout le mondechmod 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éedans la source vers la destination). cp -i source destination (copie interactive ou sécurisée : vérifie si le fichierou 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 permetde reconfigurer le montage automatique des supports externes sous Linux-Debian ou Ubuntu. On peut égalementemployer 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’estpossible 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) ougzip 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 indiquantle 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 lesfichiers .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 pouraccepter 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 obtenuen 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 souventpour la réalisation de tubes, c’est-à-dire la redirection d’une action provoquant un défilement trop rapide et donton 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 commencepar un . n’apparaissent pas. Options : ls -la (liste tous les fichiers (y compris ceux dont le nom commence parun .) 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 imprimela 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 lecteurde 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 leproprié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écursiveet 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’administrateurchange 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 parles 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 combinaisonavec -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 fichierscréés sont par défaut xaa xab ..., x étant le préfixe par défaut. Le script split -b 1m fichier prefixe permetde 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 fichiersproduits 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 compteadministrateur, 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 uncompte 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 desuppression et d’ajoût de logiciels. L’installation de Easy Ubuntu permet la configuration automatique de tout lesystè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 pluginsné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éeavec gzip ; le 3e extrait une archive, c’est-à-dire rend les fichiers archives ; le 4e lit une archive et donne la listedes noms des fichiers contenus ; le 5e extrait une archive compressée. Dans toutes ces commandes, le v signifieverbose (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é, vimest soit en mode commande, soit en mode insertion. En mode commande, les caractères tapés sont interprétéscomme des commandes d’édition. vim démarre dans ce mode par défaut, il faut donc lui indiquer (commandei) que l’on veut insérer du texte. En mode insertion, les caractères sont insérés dans le texte édité. On peutquitter 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 sontpas 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 poursauvegarder les documents HTML avec l’extension .html. Lorsque survient une coupure de la connexion, relancerla 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’undocument 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, recherchedirectement 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 activerla 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 boutonactiver, ce qui lance OpenOffice. Acceptez alors l’utilisation des macros et dans le document ouvert, cliquez lebouton «Accept UNO connections », avant de fermer complètement OpenOffice. Il est conseillé de réduire le niveaude 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 lecalendrier 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 apprisesau 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ériquede cet objet (S3 désigne un segment de la figure et sa longueur, poly1 désigne un polygone de la figure etson 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 paragraphesuivant, 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 quellefonction.

4. Il est possible d’écrire des formules avec des « si » et même écrire des formules qui contiennent des expressionsdu 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 dessusde 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éé depuislongtemps, 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 objetsles uns en dessous des autres, dans des calques différents. Par exemple, si un triangle est dans le calque n 1et si un point est dans le triangle mais dans le calque n 2 alors le triangle est au dessus du point et celui-ciest caché si le triangle est opaque. Si le triangle est dans le calque n 2 et le point dans le calque n 1, alorsle 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 cesmacros, 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 commandeset 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 avantcaractè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 avantcaractè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 utilisantles 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 à destensions 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 fichierde 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 modulesde 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éesnommée gcourrier à l’aide de phpmyadmin et on déclare base=’gcourrier’ dans le fichier connexion.php. On selogue 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èresimple d’exécuter le fichier de sortie est de copier nom_fichier.exe dans les binaires de CygWin, puis de lancerla 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èresimple d’exécuter le fichier de sortie est de copier nom_fichier.exe dans les binaires de CygWin, puis de lancerla 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’autreslangages 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 decartographie. . . 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é à LATEX2ε. Syntaxe : kile nom_fichier.tex &.

k3b : pour lancer le programme de gravure interfaçant cdrecord. Syntaxe : k3b &. Il offre des fonctions avancées tellesque : 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 lacompilation s’arrête sur une erreur à corriger, x interrompt la compilation ; r ignore les fautes tout en poursuivantla compilation de tout le fichier source ; la touche enter ignore la faute et se positionne sur la faute suivante.

bardiag.sty : un style LATEX2ε, pour la réalisation des diagrammes en barres 2D et 3D. Il nécessite les packagesbardiag.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éerque 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-LATEX2ε 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 sousLinux, 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\pagebreaket une rubrique libre par \section\closesection.

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

pstplus : pour lancer l’assistant permettant l’écriture de script-LATEX2ε 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 figurecorrespondante à 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 LATEX2ε. Syntaxe : startTeXgraph. Le principede 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 sontprédéfinis, comme la grille, les axes, les courbes paramétrées, les courbes poly-béziers, les splines, les équationsdifférentielles etc. Mais on peut aussi créer ses propres éléments graphiques, écrire ses propres fonctions (oumacros) dans des fichiers (et les importer), et faire du dessin à la souris. L’installation de TEXgraph requiert lalibrairie 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 TEXgraphet on trouvera sur http://melusine.eu.org/syracuse/texgraph plusieurs animations réalisées avec TEXgraph etswftools.

texmaker : pour lancer l’éditeur dédié à LATEX2ε. Syntaxe : texmaker nom_fichier.tex &. Ses versions Linuxet 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 packagesTeXProject.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 lavisualisation du projet en réseau Pert (Program evaluation and review technique), en arbres hiérarchiques et endiagrammes de Gantt.

umrand : pour activer l’extension-LATEX2ε générant des motifs bordant les cadres (page de titre par exemple).Syntaxe : \usepackageumrand. 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 permetentre autres :

1. la conversion des textes d’un format traitement de texte à un format Web, via le styliste-Lodel (s’installecomme 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 manipulationde tout type d’anneaux, les opérations arithmétiques sur les anneaux et les matrices, les résolutions projectivesde modules, la détermination des bases de Gröbner, le calcul des séries de Hilbert sur les anneaux gradués ou lesmodules, 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 deformation 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 fonctionsd’organisation et de gestion des petites, moyennes et grandes entreprises : gestion commerciale, gestion des stockset des achats, comptabilité générale et analytique, logistique, production, relation client et fournisseur, ressourceshumaines, 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 rendreaccessibles 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, lessociétés, etc. Il est donc impossible de dire ce que fait précisément OpenERP sans dire dans quel module. Parexemple, le module ventes permet de définir ses clients, ses prix de produits, d’enregistrer des commandes, de lesimprimer, 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ôtspar 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 etsudo 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échargeablesur 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, barcodeetc). 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 leslancer library(Rcmdr) et ade4TkGUI(F,F).

regina : pour le calcul en théorie des surfaces normales utilisant les procédures et algorithmes d’analyses topologiquessur 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éationde 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ûtsde 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 lesdé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), eny incorporant directement les script Java. Syntaxe : scribus &. Il fonctionne essentiellement par importation detextes (.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/MySQLlibre et opensource. Un serveur local est installé par : apache2, mysql-server, php5 et phpmyadmin. On copie alorsdans son localhost (dossier www du serveur installé) le site spip (http://localhost/nom_site), puis on déclaresuccessivement :

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 deressources, 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 pouraider à 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 lesactions courantes. Les opérations que l’on veut effectuer sur les différents fichiers peuvent être appelées de labarre de menu, de la barre icône, ou du menu popup (déclenché par un clic du bouton droit sur le nom dufichier, il propose les options les plus complètes, mettre une image en fond d’écran, ouvrir le fichier dans emacs ouNetscape, suivant son extension...). De façon générale, on peut facilement copier, déplacer, supprimer, créer desliens (symboliques ou pas), etc. Il est possible, entre autre, de choisir l’option Info, qui vous donnera accès à uneboite 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 uneannotation, qui sera alors sauvegardée. Vous pouvez évidemment faire des recherches de fichiers basées sur leursannotations (avec expression régulière de plus). Il est aussi possible de compresser, éditer, d’exécuter. Et lorsquela sélection est un repertoire, vous pouvez le traverser. C’est-à-dire que le sous-menu contiendra les noms de sessous-repertoires, et ainsi de suite, en cascade, jusqu’à ce que vous trouviez votre destination (c’est la navigationrapide 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 sonorespour 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 plusieursfenêtres). On peut sélectionner le texte avec la touche shift enfoncée et en déplaçant les flèches, on copie avecCtrl-C, on coupe avec Ctrl-X et on colle avec Ctrl-V. Lors de l’édition des fichiers de configuration, la toucheF5 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é lacommande "éditer tous les fichiers de configuration"). Il faut noter aussi qu’il est possible de "lâcher" sur la barred’application des fichiers "attrapés" sur le gestionnaire de fichier (c’est le Drag&Drop). On peut donc envoyer uneimage vers xv, ou un texte dans l’éditeur, ou encore un exécutable sur le bouton de l’aide, TkDesk ouvrira alors lapage man correspondante. Le fichier de configuration "AppBar" permet d’y ajouter de nouvelles icônes, que l’onpeut 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 lataille 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é à LATEX2ε, 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 desystèmes chimiques en dimension trois XMakemol. Syntaxe : xmakemol & ou xmakemol nom_fichier.xyz &. Unexemple 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 lignessuivantes définissent le symbole et les coordonnées de chaque atome. Il est possible de tracer des vecteurs (3 aumaximum) s’appuyant sur un atome. Des animations peuvent être générées en mouvant d’un panneau à un autregrâ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 LATEX2ε s’impose comme l’outil de traitement de texte universellement utilisé par tous les scientifiquesprofessionnels. LATEX2ε 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. LATEX2εnécéssite quelqu’efforts d’apprentissage dûs au fait que l’on est à la fois auteur, éditeur et typographe. Ce petit guide sepropose donc de résumer l’utilisation du programme LATEX2ε et d’aider le débutant en introduisant quelques-unes descommandes les plus courantes.

Historique 1977 TEX Donald KNUTH1978 Plain TEX Donald KNUTH1982 LATEX2.09 Leslie LAMPORT1994 LATEX2ε Frank MITTELBACHFutur 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é duconcepteur) plutôt de différents programmes qui produisent un fichier d’entrée, qui compilent ce dernier pour générerun ensemble de fichiers parmi lesquels le fichier de sortie qui prévisualise le document LATEX2ε 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 documentLATEX2ε, 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’instructioncd chemin_repertoire ;

3./ puis on compile le fichier d’entrée avec l’instruction latex nom_fichier.tex (ou elatex nom_fichier.tex). Si lacommande latex signale des erreurs, on arrête la compilation en tapant x puis enter, on corrige l’erreur dansle fichier d’entrée, et on recompile. Lorsqu’il n’y a plus de message d’erreurs stoppant la compilation, le fichierde sortie nom_fichier.dvi est alors produit dans le repertoire de travail (Au moins deux compilations sontnécessaires pour stabiliser les références croisées). La distribution MikTeX propose la commande de compilationaméliorée texify en lieu et place de latex ;

4./ l’instruction xdvi nom_fichier.dvi & permet de visualiser le document LATEX2ε 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 oughostview). 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 uniquementsur le texte, en saisissant à sa place et par simple click les commandes de mise en forme du document produit ou cellesgénérant les divers symboles ou caractères spéciaux.

21

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

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

Un document d’entrée LATEX2ε est un fichier au format .tex, dans lequel toutes les commandes LATEX2ε commencentpar \ et dont le contenu a la structure :

code

1 \documentclass[liste_options]nom_classe

2 ... % "Pr\’eambule"

3 \begindocument

4 ... % "Corps du document"

5 \enddocument

La commande \documentclass indique le type de document que vous voulez produire. Ses principales optionssont : 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 (pourque 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 (pourles diaposives vidéoprojetées), letter (pour écrire des lettres), moderncv (pour les cirricula vitæ). Le préambule d’undocument LATEX2ε est l’endroit où sont saisies les instructions non destinées à être imprimées mais qui influenceront lestyle 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.\pagestyleheadings : met automatiquement le numéro de page et autres informations dans l’en-tête, les pieds de

page sont laissés vides.\usepackageliste_extensions : charge les packages (ou extensions séparées par une virgule) comme fontenc (avec

l’option T1, pour activer l’actuel codage LATEX2ε 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, pourutiliser les lettres accentées du clavier dans le document d’entrée), babel (avec l’option francais, pour adapteraux conventions typographiques de la langue française), latexsym (pour charger tous les symboles LATEX2ε),graphicx (avec l’option dvips, pour importer des graphismes), color (avec l’option usenames, pour l’utilisationdes 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 (pourdéfinir l’environnement de listes dinglist), multicol (avec \beginmulticolsnbre_col ...\endmulticols)pour produire le texte en plusieurs colonnes sur chaque page, vmargin (pour régler les marges et le format depapier avec les commandes \setpapersizeA4 et \setmarginsrbmgmhmdmbhehsehphsp, 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 \theoremstylebreak pour un changement deligne après le titre du théorème), shapepar (avec \diamondpartexte, \squarepartexte, \heartpartexte et\shapepar\nutshapetexte, pour produire un paragraphe ayant la forme d’un losange, d’une carré, d’un cœurou 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.\newtheoremdefi\scD\’efinition[chapter] : définit un environnement mettant en relief l’énoncé d’une asser-

tion (ici une définition).\newcommand\cqfd\mbox\nolinebreak\hfill\rule2mm2mm : définit les commandes dans les modes mathéma-

tique et texte.\renewcommand\headrulewidth0.2cm : redéfinit une commande déjà existante dans les modes mathématique et

texte.\setlength\unitlength1mm : spécifie l’unité de mesure de l’environnement picture.\linespread2 : 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 LATEX2ǫ 2.3. CORPS D’UN TEXTE D’ENTRÉE LATEX2ǫ

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 textedu 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).

\beginabstract ... \endabstract : produit le résumé ...

\parttitre_partie : sectionne le document en parties et gère automatiquement la numérotation.

\chaptertitre_chapitre : sectionne le document en chapitres et gère automatiquement la numérotation.

\sectiontitre_section : sectionne le document en sections et gère automatiquement la numérotation.

\subsectiontitre_sous-section, niveau 1 : sectionne le document en sous-sections et gère automatiquement lanumérotation.

\subsubsectiontitre_sous-section, niveau 2 : sectionne le document en sous-sous-sections et gère automatique-ment la numérotation.

\paragraphtitre_paragraphe : sectionne le document en paragraphes.

\subparagraphtitre_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 leurnumé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 \acutea

à \‘a \gravea

â \^a \hata

ä \"a \ddota

ã \~a \tildea

a \.a \dota

a \v a \checka

a a \=a \bara ou \overlinea

ă \u a \brevea

\b a \underlinea

⁀a \t a \stackrel\frowna

a \H a

a. \d a

a \c a

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

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

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 : \beginnom_taille ... \endnom_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 uneligne blanche et commence un nouveau paragraphe. % met en commentaire, \footnote... met la note ... en bas dela page où elle apparaît, \marginpartexte_marge met la note dans la marge à hauteur de la ligne où elle apparaîtet \thanks... met la note ... en bas de la page de titre (à utiliser exclusivement pour les auteurs). Lorsque l’appelde note est inopérante dans un environnement, il faut placer son paramètre n à l’endroit par \footnotemark[n] et lecontenu de la note en dehors de l’environnement par \footnotetexttexte_note. La commande \fbox... encadre..., \fboxrule0.5mm fixe l’épaisseur du trait d’encadrement à 0.5cm et \fboxsep2mm fixe l’écartement entre le cadre etson contenu à 2mm.

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

code

1 \pagestylefancy

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\headrulewidth0.01cm

8 \renewcommand\headwidth\textwidth

9 \renewcommand\headheight3cm

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 partiedroite ; O indique sa validité pour les pages recto ; E indique une spécification pour les pages verso ; \leftmark affichele numéro et le titre du chapitre courant ; \rightmark affiche le numéro et le titre de la section courante ; \headheightfixe 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êteet le corps du document à la valeur indiquée ; \headrulewidth fixe l’épaisseur du trait séparant l’en-tête et le corps dudocument à la valeur indiquée.

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

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

2.3.4 Espacements

Mode texte Mode mathématique\ \; → a b grand\hspace2cm \: → a b moyen\vspace3cm \, → a b petit\\[5cm] \! → ab négatif\hfil \quad → a b cadratin\vfil \qquad → a b 2 cadratins\hfill

\vfill

\hspacelongueur : espace horizontal ignoré en fin de ligne.\vspacelongueur : 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 LATEX2ε).

Les unités de longueurs reconnaissables par LATEX2ε sont :

sp le scaled point, la plus petite unité de TEXpt le point (=0,351 mm)bp le big point, le point postscriptdd le point Didôt (= 0,376 mm)mm le milimètrepc le pica (= 4,218 mm)cc le cicéro (= 4,531 mm)cm le centimètrein le inch (= 25,4 mm)ex la hauteur d’un x minusculeem la largeur du M majuscule

Les redéfinitions de longueurs s’opèrent par :\newlength\nom (déclare \nom comme une longueur),\setlength\nomval_longueur (fixe la valeur de \nom à val_longueur),\addtolength\nomval_longueur (ajoute val_longueur à \nom),\settowidth\nomtexte (fixe la valeur de \nom à la largeur de texte),\settoheight\nomtexte (fixe la valeur de \nom à la hauteur de texte) et\settodepth\nomtexte (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_macronouveau_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, pifontou 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’undocument LATEX2ε par :

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

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

À 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 \inputdvipsnam.def, on a accèsaux 68 couleurs dont les noms suivent :

Apricot Aquamarine Bittersweet BlackBlue BlueGreen BlueViolet BrickRedBrown BurntOrange CadetBlue CarnationPinkCerulean CornflowerBlue Cyan DandelionDarkOrchid Emerald ForestGreen FuchsiaGoldenrod Gray Green GreenYellowJungleGreen Lavender LimeGreen MagentaMahogany Maroon Melon MidnightBlue

Mulberry NavyBlue OliveGreen OrangeOrangeRed Orchid Peach PeriwinklePineGreen Plum ProcessBlue PurpleRawSienna Red RedOrange RedVioletRhodamine RoyalBlue RoyalPurple RubineRedSalmon SeaGreen Sepia SkyBlueSpringGreen Tan TealBlue ThistleTurquoise Violet VioletRed White ← WhiteWildStrawberry 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 couleursse font alors respectivement par les syntaxes :

\textcolornom_couleur... ou \colornom_couleur ... change la couleur du texte\colorboxnom_couleur_fond... crée une boîte de couleur\pagecolornom_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\definecolornouv_nomrgbp1,p2,p3

\definecolornouv_nomcmykp1,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

\beginnom_environnement ... \endnom_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 LATEX2ǫ 2.3. CORPS D’UN TEXTE D’ENTRÉE LATEX2ǫ

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

---------------------------------------------------------------------

\beginlist$\clubsuit$ ; \beginminipage[p]6cm

\item ... ...

... \endminipage

\endlist

---------------------------------------------------------------------

\begintable[b] ; \beginpicture(12,6)[h]

\centering \put(1,4)...

... ...

\labelref \endpicture

\captiontitre

\endtable

---------------------------------------------------------------------

\left\\beginarray[h]c@,lr|p6cm|

... & ... & ... & ... \\

\hline ... & ... & ... & ... \\

\cline1-3 ... & ... & ... & ... \\

\multicolumn2r|... & ... & ... \\

... & ... & ... & ...

\endarray\right.

---------------------------------------------------------------------

\multicolumn agglomère en un seul plot plusieurs colonnes et prend |c|l|r|c| comme suitz|

|c|z|

l|z|

r|z|

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 traceune ligne horizontale de longueur la largeur du tableau ; cline1-3 trace un segment horizontal couvrant les colonnes1 à 3 du tableau. L’ajout d’une barre oblique dans la première case d’un tableau se réalise en chargeant l’extensionslashbox, 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 colonnecorrespondante et compose la colonne en mode paragraphe bas).• redéfinir les puces des environnements itemize ou enumerate en saisissant après la commande \begindocument

l’instruction \renewcommand\labeliteminouv_commande ou \renewcommand\labelenum1nouv_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 \begintabular!\colorgreen\vline >\colorred\columncolor[gray].7l|l !\colorblue\vline

2 ... & ... \\

3 \rowcolor[gray].9 ... & ... \\

4 ... & ...

5 \endtabular

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 LATEX2ǫ 2.3. CORPS D’UN TEXTE D’ENTRÉE LATEX2ǫ

code

1 \usepackagemulticol

2 \setlength\columnsep... % largeur de l’espace inter-colonnes

3 \setlength\columnseprule... % trait vertical de separation

4 \begindocument

5 \beginmulticolsnbre_col[\sectiontitre] % 1 < nbre_col < 10

6 ...

7 \endmulticols

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

\beginVerbatim[numbers=left,frame=lines,framesep=3mm,label=\fbox\emphcode,rulecolor=\colorBlue]

....

\endVerbatim

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)\mathversionbold$...$\mathversionnormal ∀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 lacommande \labelnom_reference et cités dans le corps du document par \refnom_reference, de même que la pageoù ils apparaissent par \pagerefnom_reference. Leur syntaxe est :

code

1 \begintheorem \labelnom_reference ... \endtheorem

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 \newtheoremdefi\textscD\’efinition[chapter]

définit l’environnement nommé defi, dont le titre sera Définition suivi de numero_chapitre.numero_definition. Pourla numérotation, on peut aussi procéder par exemple comme suit :

code

1 \newtheoremdefi\textscD\’efinition \thechapter.\thesection.

qui produira : Définition suivi de numero_chapitre.numero_section.numero_definition. On peut aussi définir lecompteur \thedefi de l’environnement defi de la manière suivante :

code

1 \newcommand\thedefi\arabicchapter.\arabicsection.\arabicdefi

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

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

Notons aussi les déclarations : \theoremheaderfont\rmfamily et \theorembodyfont\itshape. Tous les compteurspeuvent être reinitialisés avec la commande setcounterdefi0 et désactivés par renewcommand\thenom_env. No-tons pour la pagination \setcounterpage1 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 \pmodn → a ≡ b(mod n) ; \mid →| ; \| → ‖ . . .

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 ; \sqrtx+y → √x+ y. . .

Les symboles divers : \Im → ℑ ; \wp → ℘ ; \hbar → ~ ; \ldots → . . . ; \cdots → · · · ; \vdots →... ; \ddots →

. . . ;\forall → ∀ ; \exists → ∃ ; \not\exists →6∃ ; \neg → ¬ ; \partial → ∂ ; \infty → ∞ ; \emptyset → ∅ ; \sum→P

; \prod →Q

; \int_a^b f(x)\,dx →R ba f(x) dx ; \oint →

H

; \langle → 〈 ; \rangle →〉 ; \left et \rightpour 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 : \widetildeabc → fabc ; \widehatabc → cabc ; \underlineabc →abc ; \overrightarrowabc → −→abc ; \sqrt[n]abc → n

√abc ; \fracabcxyz → abc

xyz; \stackrelf\mapsto

→ f7→ ; \rule[2mm]5cm0.5mm → ; \overbrace1 \cdots 1^n\ fois

→n foisz |

1 · · · 1 ; \underbrace1 \cdots 1_n\ fois → 1 · · · 1| z

n fois

; \lim\limits_x\to x_0 f → limx→x0

f ; f’ → f ′ ;

\sum\limits_0<i<n → P

0<i<n; \root n \of abc → n

√abc ; k\atop ij → k

ij; x\choose y →

`xy

´

;

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 letexte sur la flèche et \hole ajoute un petit cercle au centre de la flèche. Plusieurs types de flèches sont disponiblesdans le package, dont des arguments pour incurver vers le haut ou le bas la flèche. Exemple :

code

1 \xymatrixA \ar[d]^f \ar[dr]_g \ar[drr]|h & & \\ B & C \ar[r]|\hole & D

produit :A

f

g

@

@

@

@

@

@

@

hP

P

P

P

P

P

P

''P

P

P

P

P

P

P

B C // D

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

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

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 lerepertoire de travail) le chemin d’accès ... au graphique par \graphicspath/chemin_rep1/chemin_rep2 dans lepréambule et à l’endroit voulu et on insère le dessin par :

code

1 \beginfigure[h]

2 \centering

3 \includegraphics[width=3cm,height=3cm,angle=-90]sphere.ps

4 \captionLa sph\‘ere $S^2$

5 \labelSph

6 \endfigure

L’option h (ici) peut être remplacée par p (page séparée), t (haut de page) ou b (bas de page). La commandefigure~\refSph (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 LATEX2ε, 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\includegraphicsnom_graphique.eps

3 \begindocument

4 \usebox\nom_commande_de_sauvegarde

5 \scaleboxh_scale[v_scale]\usebox\nom_commande_de_sauvegarde

6 \resizeboxlargeur!\usebox\nom_commande_de_sauvegarde

7 \rotateboxangle\usebox\nom_commande_de_sauvegarde

8 \raiseboxhauteur\usebox\nom_commande_de_sauvegarde

L’insertion d’un graphique dans la marge à côté d’un paragraphe s’opère par :

code

1 \usepackagefloatflt

2 \begindocument

3 \beginfloatingfigurelargeur

4 ...

5 \captiontitre

6 \labelnom_graphique

7 \endfloatingfigure

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 LATEX2ε à des annotations alpha ou eqn1 figurant sur un graphique à l’aide de :

code

1 \usepackagepsfrag

2 ...

3 \psfragalpha$\alpha$

4 \psfrageqn1$\int_0^\infty\fracx^2yzx^\alpha\rm dx$

5 \includegraphicsfigure.eps

2.3.9 Sectionnement d’un travail

Le fichier principal a la structure :

code

1 \includeonlychap5

2 \begindocument

3 \includeintro

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

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

4 \includechap1

5 \includechap2

6 \includechap3

7 \includechap4

8 \includechap5

Le travail est sectionné en six fichiers intro.tex, chap1.tex, chap2.tex, chap3.tex, chap4.tex et chap5.tex, plusle fichier principal qui servira à la compilation. Ces six fichiers ne doivent contenir que le texte de chaque section (pas depréambule, pas de \begindocument, pas de \enddocument). La commande \includeonlychap5 dans le préambulestipule 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 \beginthebibliography99

2 \addcontentslinetocchapterBibliographie

3 \bibitem[designation_reference_1]nom_label_1 references1

4 \bibitem[designation_reference_2]nom_label_2 references2

5 ...

6 \endthebibliography

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

code

1 \usepackageminitoc

2 \begindocument

3 \dominitoc

4 \tableofcontents

5 ...

6 \chaptertitre_chapitre_1

7 \minitoc

8 ...

9 \chaptertitre_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 LATEX2ǫ 2.3. CORPS D’UN TEXTE D’ENTRÉE LATEX2ǫ

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é dansle document d’entrée par \citecle_ouvrage et la bibliographie est composée à l’endroit voulue en y saisissant lesinstructions :

code

1 \addcontentslinetocchapterBibliographie

2 \bibliographystylenom_style

3 \bibliographynom_fichier1,nom_fichier2,...

4 \nocitecle_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 LATEX2ε, et nom_style peutprendre 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 ouvragesdans 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éede publication) et abbrv (pour trier les ouvrages dans l’ordre alphabétique et les étiqueter par des nombres, mais lesprénoms, noms de mois et de journaux sont abrégés). Pour citer chaque référence suivant sa langue et gérer plusieursauteurs, utiliser les instructions :

code

1 \usepackagebabelbib

2 \usepackage[german,english,french]babel % la dernière langue citée en option, étant celle du document

3 ...

4 \begindocument

5 \bibliographystylebabplain-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, etenfin deux fois par latex fichier.tex. Il existe de nombreux autres styles de bibliographie et de types d’entrées dansun fichier .bib.

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

CHAPITRE 2. LE FORMATEUR DE TEXTE LATEX2ǫ 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 del’index en saisissant \indexmot_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\indexEnergie Energie, 10 Entrée normale\indexEnergie!Cin\’etique Cinétique, 12 Sous-entrée de ’Energie’\indexEnergie@\textsfEnergie Energie, 10 Entrée formatée\indexEnergie|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 dansle préambule ; ensuite on réalise chaque entrée du glossaire en saisissant \glossaryname=...,description=...

juste après le mot à faire entrer dans l’index ou \xglossaryname=...,description=...mot_a_indexer. Puis onsaisit la commande \printglossary à l’endroit où l’on veut insérer le glossaire ; enfin on compile le document d’entréecomme 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-LATEX2ε flow. La syntaxe d’utilisation est : flow nom_f.flo nom_f.pic. Pour l’installationdu 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 unscript .flo (qui se termine par une ligne blanche), les commentaires sont précédés du symbole %, toutes les commandessont saisies après un retour chariot sans alinéa et les contenus des boîtes après un retour chariot suivi d’unalinéa. L’unité de mesure est spécifiée dans le fichier .tex récepteur par \setlength\unitlength2em. 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 longueurpar 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éepar *.

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 LATEX2ǫ 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 lecontenu) 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 dimensionsdes 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 LATEX2ǫ 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 \textbfContenu 15 :

56 exemple d’organigramme

57 avec le package flow

58 sous \colorDarkOrchid \LaTeXe.

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

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

Contenu 1

?

Contenu 2

?

Contenu 3

?

Contenu 4

?

@@

@

@@

@

Contenu 5Y

N

?

@@

@

@@

@

Contenu 6Y

N

?

@@

@

@@

@

Contenu 7N

Y

?

Contenu 8

6

Contenu 9

6

Contenu 10

-

- Contenu 11

- Contenu 12 - Contenu 13

- Contenu 14

Contenu 15 :exemple d’organigrammeavec le package flowsous LATEX2ε.

2.5 Diagrammes en barres

code

1 \documentclassnom_classe

2 ...

3 \usepackage[dvips]graphicx

4 \usepackage[usenames]color

5 \usepackage[colorlinks]hyperref

6 \usepackagebardiag

7

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

CHAPITRE 2. LE FORMATEUR DE TEXTE LATEX2ǫ 2.6. CONFECTION DE TRANSPARENTS

8 \CenterWallPaper1.05entete.eps

9 \wpXoffset-2.5cm

10 \wpYoffset-2cm

11 ...

12 \begindocument

13 ...

14 \beginfigure[!htbp]

15 \centering

16

17 \renewcommand\ActiveBarPrimitive\barTDRect

18 \renewcommand\frameTD1

19 \renewcommand\tdx0.5

20 \renewcommand\tdy6

21

22 \def\onecolgreen

23 \def\twocolblue

24 \def\threecolred

25 \def\fourcolyellow

26 \def\fivecolbrown

27 \def\sixcolpink

28

29 \newpsstylediagframestylelinewidth=1pt,linecolor=black,fillcolor=white

30

31 %\bardiagrambegindiagheightdiagwidthbottomheightdbardxxunityunit

32 \bardiagrambegin175003.5cm170.7cm0.015cm

33

34 \renewcommand\barlabelangle30

35

36 \baritemEn poste (6)6\onecol

37 \subbaritemAnciens (1)1\twocol

38 \subbaritemComptes-services (49)49\threecol

39 \subbaritemComptes-syst\‘eme (15)15\fourcol

40 \subbaritemMentions-AUF (4)4\fivecol

41 \subbaritemEnfants-UL (3)3\sixcol

42 \baritemOrganismes (9)9\onecol

43 \subbaritemComptes non-expir\’es-UL179\twocol

44 \subbaritem\textcolorredComptes expir\’es-UL461\threecol

45 \subbaritemEtudiants-FOAD (11)11\fourcol

46 \subbaritemVisiteurs (3)3\fivecol

47 \subbaritemRetrait\’es-UL (3)3\sixcol

48 \baritemEn poste (9)9\onecol

49 \subbaritemAnciens (4)4\twocol

50 \subbaritemUniversit\’e de Kara (2)2\threecol

51

52 \bardiagramend\begintabularx-annotationy-annotation

53 \endfigure

54 ...

55 \enddocument

2.6 Confection de transparents

Les classes fournies avec LATEX2ε 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 \usepackagethumbpdf,babel

5 \inputdvipsnam.def

6 \pagecolornom_couleur

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

CHAPITRE 2. LE FORMATEUR DE TEXTE LATEX2ǫ 2.6. CONFECTION DE TRANSPARENTS

7 ...

8 \begindocument

9 \beginslide ... \endslide

10 ...

11 \beginnote ... \endnote

12 \enddocument

code

1 \documentclass[a4,landscape,french]seminar

2 \usepackage[dvips]graphicx

3 \usepackage[usenames]color

4 \usepackagepstricks,fancybox,fancyhdr,semcolor,slidesec,thumbpdf,babel

5 \inputdvipsnam.def

6 \inputseminar.bug

7 \inputseminar.bg2

8 \slidewidth15cm

9 \slideheight10cm

10 \slidesmagtaille % taille entre -5 et 9, le d\’efaut est 4

11 \slideframestyle_encadrement

12 \newcommand\SlideColours[1]\slideframe[\pssetfillcolor=#1,fillstyle=solid]scplain

13 \SlideColoursnom_couleur_de_fond

14 \newslideframeIMAGE\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\slidestretch2 % doubler l’interligne

19 \slidepagestylefancy

20 \renewcommand\headrulewidth0.0cm

21 \renewcommand\headwidth\textwidth

22 \fancyfoot[C]\thepage

23 \fancyfoot[R]\bf\tiny nom_auteur, affiliation_auteur

24 ...

25 \begindocument

26 \beginslide

27 \slideheadingtitre_section

28 \slidesubheadingtitre_sous-section

29 ...

30 \endslide

31 \beginslide* ... \endslide*

32 \beginslide*[15cm,10cm] ... \endslide*

33 ...

34 \beginnote ... \endnote

35 \enddocument

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 entoile 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 laclasse beamer, qui nécéssite l’installation des extensions pgf (pour la gestion des graphiques) et xcolor (pour la gestiondes couleurs). La syntaxe d’utilisation est la suivante :

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

CHAPITRE 2. LE FORMATEUR DE TEXTE LATEX2ǫ 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 \usethemeJuanLesPins

12 %\usetheme[hideothersubsections,width=...,height=...,left]Goettingen

13 \usecolorthemeorchid

14 \usefonttheme[onlysmall]structurebold

15 \useinnerthemerounded

16 \useouterthemeshadow

17

18 \pgfdeclareimage[height=96mm,width=128mm]nombidonploum

19 \setbeamertemplatebackground\pgfuseimagenombidon

20 \logo\includegraphics[height=...,width=...,angle=...]sixtu.ps

21

22 \setbeamercolortitlefg=,bg=Blue!30

23 \setbeamercolorauthorfg=BrickRed

24 %\setbeamercolorbackground canvasbg=...

25 \setbeamercoveredtransparent

26 %\setbeamercoveredhighly dynamic

27 \setbeamertemplateitemize item$\clubsuit$

28 \setbeamertemplatebackground canvas[vertical shading][bottom=white!10,top=yellow!10]

29 %\setbeamertemplatebackground canvas[horizontal shading][left=white!10,right=yellow!10]

30 \setbeamerfontheadlinefamily=\sf,series=\bf

31 \setbeamersizeheadline\tiny

32

33 %\AtBeginSection[]\frame\frametitleSommaire\tableofcontents[current]

34

35 \usepackagepgf,fancybox,colortbl,multimedia

36 \inputdvipsnam.def

37

38 \begindocument

39 \beginframe \titlepage \endframe

40 \beginframe... \tableofcontents[pausesections,pausesubsections] \endframe

41 \part...

42 \section...

43 \subsection...

44 \beginframe[t,c,l,r,fragile,label=identifiant_feuillet]

45 \frametitle... \dotfill \insertpagenumber \framesubtitle...

46 \tableofcontents[pausesections]

47

48 \beginitemize[<+-| @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 \enditemize

52

53 \beginblock... ... \endblock

54 \beginalertblock... ... \endalertblock

55 \beginexampleblock... ... \endexampleblock

56

57 \begincolumns[T]

58 \begincolumn3cm ... \endcolumn

59 \begincolumn7cm ... \endcolumn

60 ...

61 \endcolumns

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

CHAPITRE 2. LE FORMATEUR DE TEXTE LATEX2ǫ 2.6. CONFECTION DE TRANSPARENTS

62

63 \alert...

64 \structure...

65

66 \begindefinition ... \enddefinition

67 \begintheorem ... \endtheorem

68 \beginlemma ... \endlemma

69 \beginexample ... \endexample

70 \beginexamples ... \endexamples

71 \begincorollary ... \endcorollary

72 \beginproof ... \qedhere \endproof

73

74 \labelidentifiant_feuillet

75 \hyperlinkidentifiant_feuillet\beamerbutton...

76 \hyperlinkidentifiant_feuillet\beamergotobutton...

77 \hyperlinkidentifiant_feuillet\beamerreturnbutton...

78 \hyperlinkidentifiant_feuillet\beamerskipbutton...

79

80 \begintabularlcccc

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 \endtabular

86

87 \begintabularlc<\onslide<2->c<\onslide<3->c<\onslide<4->c<\onslidec

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 \endtabular

93

94 \endframe

95

96 \appendix

97 \enddocument

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 LATEX2ǫ 2.7. AFFICHER UN DOCUMENT LATEX2ε 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éerle sommaire visible dans la bande de navigation. L’option hideothersubsections n’affiche dans la barre de navigationque 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 lemême transparent et \item<n-> induit l’affichage du contenu sur le ne transparent et les suivants. Les codes verbatimdoivent être insérés dans \beginframe[fragile] ... \endframe. Pour obtenir une version imprimée, utiliser lemode \mode<handout>. Pour obtenir une version rétro-projetée, utiliser le mode \mode<trans>. Les autres outils utilisésdans l’affichage incrémental sont : \only, \uncover, \alt, \temporal et les arguments optionnels ajoutés entre < et >

par la classe beamer à toutes les commandes LATEX2ε. 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 LATEX2ε sur le Web

Le convertisseur TEX4ht, est à ce jour, le seul traducteur html qui peut revendiquer comprendre tout code LATEXet 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 :• urlhttp://www.tg.refer.org pour le référencement de sites Internet,• hrefmailto:[email protected] pour les contacts,• href/home/wissel/nom_fichier.pdfnom_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éspar \(...\) 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>, \HCharnombre ou \HPagetitre ... \EndHPage, \HChar156 pour œ \HChar160 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 \HPagetitre ... \ExitHPageRetour \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 \Preamblehtml,2,frames,jpg,info

2

3 \Configurecrosslinksgauchedroitesuivprecdebutfinaccueil

4

5 \Configureframes\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 LATEX2ǫ 2.8. RÉDACTION DES ACTES D’UN COLLOQUE

8 \Configuretableofcontentsavantfinapres\HCode<H3><FONT size="1">\HCode</FONT></H3>

9

10 \begindocument

11

12 \Cssdiv.author font-family: ...;

13

14 \CssH1 font-family: ...; color: ...; font-size: ...; background: ...;

15 \CssH2 font-family: ...; color: ...; font-size: ...; background: ...;

16 \CssH3 ... % correspond a section

17 \CssH4 ... % correspond a subsection

18 \CssH5 ...

19 \CssH6 ...

20 \CssBODY ...

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, telsque ceux exigés pour les actes d’une conférence. Il s’utilise avec les packages keyval, frenchle, combcite, combinet etcombnat. Dans l’exemple qui suit, sont chargés dans le préambule du document maître tous les préambules (sans lesappels 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 parnom_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 \usepackagefancyvrb,fancyhdr,keyval,combcite,amsfonts,amsmath,frenchle

10

11 \textwidth15cm

12 \textheight20cm

13 \hoffset-1cm

14

15 \pagestylefancy

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\headrulewidth0.0cm

22 \renewcommand\headwidth\textwidth

23

24 \setlength\toctitleindent1.5em

25

26 \begindocument

27 %\pagestylecombine

28 \maketitle

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

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

29

30 \vspace1cm

31

32 \begincenter

33 \includegraphics[height=10cm,width=10cm,angle=00.0]daniel.eps

34 \endcenter

35

36 \clearpage

37 \tableofcontents

38

39 \clearpage

40 \sectionAvant-propos

41 \labelintro

42 [ ... ]

43

44 \sectionRemerciements

45 \labelremer

46 [ ... ]

47

48 \beginpapers

49

50 \coltoctitletitre_art1

51 \coltocauthorauteur_art1

52 \titleheadauteur_art1, titre_art1

53 %\publishedPubli\’e dans ...

54 \labelart1

55 \importnom_dossier_art1/art1

56

57 \coltoctitletitre_art2

58 \coltocauthorauteur_art2

59 \titleheadauteur_art2, titre_art2

60 %\publishedPubli\’e dans ...

61 \labelart2

62 \importnom_dossier_art1/art2

63

64 ...

65

66 \endpapers

67

68 \enddocument

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 estlivrée avec des exemples dont on peut s’inspirer. Les sauts de page sont indiqués par \closesection\pagebreak etune rubrique libre par \section\closesection. Syntaxe :

code

1 \documentclass[10pt,french]moderncv

2 \moderncvstyle[nocolor,roman]casual

3 \usepackageamsfonts,babel

4

5 \photo[64pt]six2

6 \firstname\Huge prenom

7 \familyname nom

8 \titleCurriculum 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 LATEX2ǫ 2.10. GESTION DE PROJET AVEC LATEX2ε

14

15 \def\ConTeXtC\kern-.0333emo\kern-.0333emn\kern-.0667em\TeX\kern-.0333emt

16 \definecolorseergb0.5,0.5,0.5

17

18 \begindocument

19 \maketitle

20 \makequote

21

22 \sectionCentres d’int\’er\^ets

23 \cvitem

24

25 \sectionInstruction

26 \cventryanneediplometranscriptioninstitutionnotemention

27

28 \sectionThese / memoire

29 \cvitemtitre...

30 \cvitemsuperviseur(s)...

31 \cvitemdescription\footnotesize ...

32

33 \sectionAutres qualifications

34 \cventrydate

35

36 \sectionExp\’erience professionnelle

37 \cventrydate $\to$responsabilite

38

39 \sectionComp\’etences informatiques

40 \cvcomputerOS...administration...

41 \cvcomputerbureautique...diapositives...

42 \cvcomputersciences...graphes...

43 \cvcomputerstylique web...exerciseurs...

44 \cvcomputerIST...base de donn\’ees...

45

46 \sectionTravaux d’\’etudes et de recherches

47 \cventry

48

49 \sectionConf\’erences

50 \cventrytitre_conference

51 \cvlistitem

52 \cvlistdoubleitem

53

54 \sectionProjets principaux

55 \cventryanneetitre_projet

56

57 \sectionLangues

58 \cvlanguage...Langue d’usageParl\’ee, \’ecrite, lue et comprise

59

60 \section\closesection

61 \hfill \begintabularr Lom\’e, le \today \\

62 \includegraphics[width=3cm,height=1.5cm,angle=00.0]signature.eps \\

63 \underlinePr\’enom \textscNom \endtabular

64

65 \enddocument

2.10 Gestion de projet avec LATEX2ε

TEXProject est un outil conçu pour la rédaction de manuels de gestion de projet avec LATEX2ε. Il nécessite lespackages 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 projetet de rendre compte de la planification du projet selon la méthode du diagramme de Gantt (découpage du projet entâches, visualisation des dépendances, et gestion des ressources).

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

CHAPITRE 2. LE FORMATEUR DE TEXTE LATEX2ǫ 2.10. GESTION DE PROJET AVEC LATEX2ε

2.10.1 Définition du projet

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

\defprojectlabelnomliste-eltsliste-predescription

\defmilestonelabelnomdateliste-predescription % phases

\deftasklabelnomdebutfinliste-contr:roleliste-predescription % taches

code

1 \newproject

2

3 \defmilestonem1Announcement

4 27/02/95

5

6 You read the WWW announcement.

7

8 \deftaskt1.1FTP

9 28/02/9501/03/95

10 you:10

11

12 You ftp the .sty files, manuals and examples.

13

14 \deftaskt1.2Test

15 01/03/9502/03/95

16 you:60

17 t1.1

18 You test the system locally.

19

20 \deftaskt1.3Installation

21 02/03/9503/03/95

22 system~engineer:30

23 t1.2

24 You ask your system engineer to install the package for your center.

25

26 \defprojectt1Package

27 t1.1,t1.2,t1.3

28 m1

29 You get and install the package.

30

31 \deftaskt2.1Manual

32 01/03/9504/03/95

33 you:10

34 t1.1

35 You review the manual and examples.

36

37 \deftaskt2.2Ask

38 27/02/9504/03/95

39 you:5,someone:5

40

41 You communicate with others.

42

43 \deftaskt2.3Experiment

44 03/03/9504/03/95

45 you:30

46 t1.2

47 You set up a small example.

48

49 \defprojectt2Help

50 t2.1,t2.2,t2.3

51 m1

52 You get to know the system.

53

54 \defmilestonem2Usage

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

CHAPITRE 2. LE FORMATEUR DE TEXTE LATEX2ǫ 2.10. GESTION DE PROJET AVEC LATEX2ε

55 04/03/95

56 t1

57 You can use TeXProject.

58

59 \defprojecttexprojectTeXProject

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 LATEX2ε, à l’aide desprimitives :

\annotationlabel \namelabel

\resourcelabel \effortlabel

\effortlabel,contributeur \contributionslabel

\startlabel \finishlabel

code

1 Le projet s’appelle \nametexproject.

2 Il d\’ebute le \starttexproject et s’ach\‘eve le \finishtexproject.

3 Il implique les ressources suivantes : \resourcetexproject.

4 Il mobilise un nombre total de \efforttexproject personnes-minutes.

5 L’apport de \verb|you| est de \efforttexproject,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’aidedes 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,\contributorsprojectlabelnomliste-composantesdescription.

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 LATEX2ǫ 2.10. GESTION DE PROJET AVEC LATEX2ε

Announcement

FTP Test Installation

Package

Manual Ask Experiment

Help Usage

TeXProject

code

1 \Draw

2 \TreeAlign(H,-1,0)(0,0,0)

3 \treediagram(texproject)

4 \EndDraw

Announcement

FTP

Test

Installation

Package

Manual

Ask

Experiment

Help

Usage

TeXProject

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 LATEX2ǫ 2.10. GESTION DE PROJET AVEC LATEX2ε

Announcement Help

Package

Usage

code

1 \Draw

2 \pertnodestyle\annotation#1

3 \pertdiagram(texproject)

4 \EndDraw

You readthe WWW

announcement.

You get to knowthe system.

You get and installthe package.

You can useTeXProject.

code

1 \Draw

2 \ArrowHeads(1)

3 \pertlimits(,1)

4 \pertdiagram(texproject)

5 \EndDraw

Announcement

Package

Usage

Help

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 LATEX2ǫ 2.10. GESTION DE PROJET AVEC LATEX2ε

Announcement

Package

Usage

Help

L

HelpAnnouncement

Ressources, rôles et avancées

La commande effortchart(label) permet la visualisation des ressources qui interviennent sur le projet, leurs rôlesd’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

you

you

system engineer

0 35 70.0

Package

Help

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 LATEX2ǫ 2.10. GESTION DE PROJET AVEC LATEX2ε

you

someone

you

you

system engineer

you

you

0 30 60

FTP

Test

Installation

Manual

Ask

Experiment

code

1 \Draw

2 \Scale(1,0.6)

3 \effortlimits(2)

4 \effortchart(texproject,,,,2)

5 \EndDraw

you

someone

0 30 60

Ask

Experiment

you

you

0 30 60

Manual

system engineer

you

0 30 60

Test

Installation

you

0 30 60

FTP

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 LATEX2ǫ 2.10. GESTION DE PROJET AVEC LATEX2ε

you

someone

you

you

system engineer

you

0 30 60

Test

Installation

Manual

Ask

Experiment

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

27/02/95 04/03/95

Usage

Experiment

Ask

Manual

Installation

Test

FTP

Announcement

code

1 \Draw

2 \schedulelimits(3)

3 \schedulechart(texproject,,,,99)

4 \EndDraw

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

CHAPITRE 2. LE FORMATEUR DE TEXTE LATEX2ǫ 2.10. GESTION DE PROJET AVEC LATEX2ε

27/02/95 04/03/95

Test

FTP

Announcement

27/02/95 04/03/95

Ask

Manual

Installation

27/02/95 04/03/95

Usage

Experiment

Contributeurs

code

1 \Draw

2 \TreeAlign(H,-1,0)(0,0,0)

3 \treediagram(c)

4 \EndDraw

FTP

Test

Manual

Ask

Experiment

you

Installationsystem engineer

Asksomeone

contributors

code

1 \Draw

2 \schedulechart(c)

3 \EndDraw

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

CHAPITRE 2. LE FORMATEUR DE TEXTE LATEX2ǫ 2.10. GESTION DE PROJET AVEC LATEX2ε

27/02/95 04/03/95

someone

system engineer

you

Tag and Set Operations

code

1 \newcommand\getparent[1]

2 \sapplyp,up,#1

3 \sapplyp,\name

4

5 \newcommand\V[5]\sapplyall,merge,all,#1

6 \newcommand\Vii[7]\sapplyall,merge,all,#1

7 \sapplyall,merge,,

8 \rapplytexproject,\V,\V,\Vii

9 \sapplyall,subtract,all,texproject

10 \sapplyfoo,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 LATEX2ǫ 2.10. GESTION DE PROJET AVEC LATEX2ε

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 :

Announcement

Packageyou :

FTP

Helpyousomeone :

Ask

TeXProject :

PackagePackageyou :

Test

TeXProject :

Help

Helpyou :

Manual

Packagesystem

engineer :

Installation

Helpyou :

Experiment

TeXProject :

Usage

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 :

Announcement

Helpyousomeone :

Ask

TeXProject :

Help

TeXProject :

Package

Packageyou :

FTP

Packageyou :

Test

Helpyou :

Manual

Packagesystem

engineer :

Installation

Helpyou :

Experiment

TeXProject :

Usage

code

1 \Draw

2 \sapplyall,merge,all,texproject

3 \sapplyfoo,defproject,all,,

4 \effortchart(foo)

5 \EndDraw

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

CHAPITRE 2. LE FORMATEUR DE TEXTE LATEX2ǫ 2.10. GESTION DE PROJET AVEC LATEX2ε

system engineer

someone

you

you

someone

you

you

someone

you

system engineer

you

you

you

system engineer

0 57.5 115.0

Package

FTP

Test

Installation

Help

Manual

Ask

Experiment

TeXProject

code

1 \Draw

2 \schedulechart(foo)

3 \EndDraw

27/02/95 04/03/95

Usage

Experiment

Ask

Manual

Help

Installation

Test

FTP

Package

Announcement

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 LATEX2ǫ 2.10. GESTION DE PROJET AVEC LATEX2ε

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 test the

system locally.

01/03/95 02/03/95

You ask your system

engineer to install the

package for your center.

02/03/95 03/03/95

You get and install

the package.

28/02/95 03/03/95

You review the

manual and examples.

01/03/95 04/03/95

You communicate

with others.

27/02/95 04/03/95

You set up a

small example.

03/03/95 04/03/95

You get to know

the system.

27/02/95 04/03/95

You can use

TeXProject.

04/03/95 04/03/95

Welcome to TeXProject.

27/02/95 04/03/95

Schedule Charts

code

1 \newproject \minmaxdates0/0/0//100/0/0

2 \defprojecttasksa,b,c,d

3 \deftaskatask 10/0/03/0/0

4 \deftaskbtask 22/0/06/0/0

5 \deftaskctask 31/0/02/0/0

6 \deftaskdtask 45/0/07/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 LATEX2ǫ 2.10. GESTION DE PROJET AVEC LATEX2ε

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

11 \EndDraw

task 4

task 3

task 2

task 1

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

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

CHAPITRE 2. LE FORMATEUR DE TEXTE LATEX2ǫ 2.10. GESTION DE PROJET AVEC LATEX2ε

(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 graphiquementdes 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 tempsré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...). Onactive Gnuplot avec la commande gnuplot ou dclick sur icône. On se positionne dans le repertoire de travail avec lescommandes pwd pour connaître le repertoire dans lequel on se trouve et cd "nom_rep" ou cd ’chemin_rep’ pour sepositionner dans le repertoire dans lequel on désire classer le graphique. Le graphique tracé, on enregistre le script avecsave "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écutele script avec load "fichier.gnu" (après avoir lancé par set terminal x11 la fenêtre graphique par défaut). Pourmodifier 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écuteravec 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 affichel’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, tousles noms de commandes peuvent être abrégés et il est permis d’enchaîner plusieurs commandes sur une ligne séparéespar 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 commandehelp 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 construiten 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 enabscisses 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 pointsde même abscisse par un seul point d’ordonnée moyenne. Toutes les autres routines utilisent les données pourdéterminer les cœfficients d’une courbe continue entre les points extrémaux des données. Cette courbe est alorstracé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éesaient été ordonnées selon les abscisses croissantes, une courbe est construite par morceaux, à l’aide de segmentde polynômes cubiques, dont les cœfficients sont calculés à partir des points pondérés des données (les poids sontpris dans la 3e colonne du fichier de données). Ce comportement par défaut peut être modifié par la 3e entrée dela 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 pointsconsécutifs par des splines cubiques naturelles. Si les poids sont faibles, la courbe est composée de moins desegments et est donc plus lisse ; le cas limite est un simple segment produit par un ajustement aux moindrescarrés pondéré sur toutes les données. Le poids de lissage peut s’exprimer en termes d’erreurs comme : un poidsstatistique 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éesx-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) quirelie les points extrêmaux. L’option sbezier rend tout d’abord les données monotones (unique), puis appliquel’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. Toutevariable définie par l’utilisateur apparaissant dans le corps de la fonction peut servir de paramètre d’ajustement et ilest possible de pondérer (les poids sont identiques à 1.0, par défaut) les résidus par des estimations d’erreurs sur lesdonné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 ounc1:nc2:nc3:s. Pour une fonction d’une seule variable y = f(x), la troisième colonne (constituée de nombresou 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 fonctionde deux variables z = f(x, y), le format obligatoire est using x:y:z:s. Le format doit être complet ; aucunedonnée par défaut n’est calculée en cas de valeur manquante. Les poids des données sont calculés selon s commeci-dessus. Si les estimations d’erreurs ne sont pas disponibles, une valeur constante peut être spécifiée sous laforme 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, soitdirectement (var1,var2 ,...), soit en référençant un fichier de paramètres (f2.par). Toute variable qui n’est pasencore définie est créée avec une valeur initiale de 1.0. Cependant, l’ajustement a plus de chances de convergerrapidement 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, sousla forme nom_var = valeur. Les commentaires, marqués par un #, et les lignes blanches sont permis. La formespéciale nom_var = valeur # FIXED signifie que la variable est traitée comme un paramètre fixé, initialisé par lefichier 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êmesinformations 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 êtrerenommé 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− 5peut ê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 maximumd’itérations peut être limité en affectant une valeur à FIT_MAXITER. Affecter une valeur de 0 (ou ne pas déclarer lavariable) 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 sontrequises : dans l’ordre il doit y avoir la coordonnée x (très probablement une date) et le prix d’ouverture, les prix baset haut, et le prix de fermeture. Le symbole est un rectangle ouvert, centré horizontalement sur la coordonnée x etlimité verticalement par les prix d’ouverture et de fermeture. Un segment vertical à la coordonnée x monte du hautdu rectangle jusqu’au prix haut, et un autre descend jusqu’au prix bas. La largeur du rectangle peut être changée parset bar. Le symbole reste inchangé si les prix bas et haut sont interchangés ou si les prix d’ouverture et de fermeturesont 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 sontrequises : dans l’ordre il doit y avoir la coordonnée x (très probablement une date) et le prix d’ouverture, les prix baset 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 unsur la droite marque le prix de fermeture. La longueur de ces traits peut être changée par set bar. Le symbole resteinchangé 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 terminalactivé.

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

ouplot [val_min:val_max] [val_min:val_max] f(t)

↑ ↑t r

ouplot [val_min:val_max] [val_min:val_max] [val_min:val_max] f_1(t),f_2(t)

↑ ↑ ↑t x y

ousplot [:] [:] [:] f(x,y)

↑ ↑ ↑x y z

ousplot [t=:] [:] [:] [:] f_1(t),f_2(t),f_3(t)

↑ ↑ ↑x y z

ousplot [:] [:] [:] [:] [:] f_1(u,v),f_2(u,v),f_3(u,v)

↑ ↑ ↑ ↑ ↑u v x y z

ouset 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 dutracé : 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 valeurslines, 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 16couleur : 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 chaqueaffichage, 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’angledans 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 quedes 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 dupoint 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 supprimantl’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 parn2. 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’unsplot ; 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 zpour lesquelles les contours vont être calculés par interpolation linéaire entre les points échantillonnés de la fonctiond’ajustement. Par défaut, les arguments actifs sont : linear, points 5, order 4, levels auto 5. Ces arguments sontmodifiables 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 pointsde même valeur de z, pour former des contours plus lisses, mais pouvant onduler), bspline (un tracé curvilignede meilleur lissage est tracé pour approximer seulement les points de même z). Par défaut, ce sont des segmentsde 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 approximerles 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). Lesvaleurs 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 lasurface 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 fixele 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 lenombre 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 surfacesen 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 lequelle 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" pardéfaut, "$%g$" pour l’utilisation du mode mathématique LATEX2ε, "%.2f" pour que 1 décimale soit permise et qu’ellesoit multiple de 2, "$%5.1f\mu$" pour que les chiffres des unités soient multiples de 5, pour que 1 décimale soit permiseet µ 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 ligneshorizontales.

– 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 decourbes 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 êtreremplacé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 logarithmiqueet 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 lesretraits 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, lorsqueset 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 etvaleur_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 largeet 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 rendrecarré 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 valeursx, 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 sontconseillés.

– set time x_0,y_0 : pour faire imprimer la date et l’heure au point (x0, y0). L’instruction set time les imprimedans 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. Lesvaleurs par défaut sont 60,30,1,1. Cette fonctionnalité est accessible par la souris dans le terminal x11 ou windows, engardant enfoncé et en déplaçant les boutons de gauche et du milieu de celle-ci. L’option map est recommandée pour larepré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 matricesconstants. 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éfinitiongraphique 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ù lacréation de fonctions et la librairie de fonctions sont entièrement gérées par l’utilisateur. Ces fonctions sont des objetsqui, 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...). Onactive Scilab avec la commande scilab & ou dclick sur icône. On se positionne dans le repertoire de travail avecla commande file operations dans le menu file pour pouvoir y exporter le résultat d’une exécution (en ligne decommande, 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 decommande où peut être exécutée toute instruction. Pour exécuter une série d’instructions (ou script), on saisit aupréalable le script dans fichier.sce à l’aide d’un éditeur de texte (Scilab possède un éditeur intégré qui se charge parscipad(), tandis qu’un fichier s’ouvre par scipad(’nom_fichier.sce’)) et on lance le script dans la fenêtre principalede Scilab avec l’instruction exec(’fichier.sce’). Pour corriger le script fichier.sce, on l’ouvre et on procède auxmodifications souhaitées. Le résultat de l’exécution d’un script peut être exporté avec la commande export dans le menufile de la fenêtre graphique. Plusieurs formats sont alors disponibles (postscript, latex, xfig, gif). On quitte Scilab avecexit 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 dansdeux cas : 1/ si la ligne se termine par ... ou .., la séquence se prolonge sur la ligne suivante ; 2/ si la commandedéfinit une matrice, les lignes de cette matrice peuvent être séparées par des retours-chariots. Ajouter un ; en fin deligne supprime l’affichage du résultat, ce qui évite les longs défilement à l’écran. Dans une ligne de commande, toutce qui suit // est ignoré, ce qui est utile pour les commentaires. Le résultat de l’exécution d’une ligne de commandeest affecté nommément à une variable (exemple : A=[1,2;3,4] affecte la matrice

1 23 4

«

à la variable A) ou pardéfaut à la variable ans. L’affichage de la valeur affectée à une variable s’opère par disp(nom_var). Dans les noms desvariables, les majuscules sont distinctes des minuscules. Toutes les variables d’une session sont globales et conservéesen mémoire. Elles sont accessibles par who (affiche toutes les variables) ou whos() (affiche les variables avec plus dedé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’instructionread(’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éepar la constante %eps, de l’ordre de 10−16 (les nombres > %eps ou < %eps sont accessibles). Les autres constantespré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èresevstr("...") é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înesstring(...) 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 obtenirla description dans le menu help. On peut étendre le langage Scilab par de nouvelles fonctions définies par dessé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èresdonnant 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. Quandon 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,x 7→ f(x) = f(x0) +D1f(x0) ∗ dx+ 1/2 ∗D2f(x0) ∗ (dx. ∗ .dx) + ..., par différences finies fi(x+h)−fi(x)

hest :

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 detaille 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)]

• La syntaxe pour calculerR ba 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éesur le résultat. Le calcul satisfait : |I − v| ≤ maxea, 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))

• La syntaxe pour intégrerR x1x0

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| ≤maxea, 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 domainetriangularisé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 vecteurré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érationsautorisé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 (aunombre 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 valeurpar 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 matricesrectangulaires. Les scalaires sont des matrices 1 × 1, les vecteurs lignes des matrices 1 × n et les vecteurs colonnesdes matrices n× 1. Les opérations matricielles sont +,-,*,^,/,’ (addition, soustraction, multiplication, élevation à lapuissance, division et la transposée conjuguée) et .*,.^,./,.’ (pour les opérations termes à termes et la transposée nonconjugué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 composanteset la concaténation des matrices.

Vecteurs[a1,a2,a3,a4,a5] le vecteur ligne (a1, a2, a3, a4, a5)

[a1;a2;a3;a4;a5] le vecteur colonne

0

B

B

B

B

@

a1a2a3a4a5

1

C

C

C

C

A

[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

[a1,a2,a3;b1,b2,b3;c1,c2,c3] la matrice0

@

a1 a2 a3b1 b2 b3c1 c2 c3

1

A

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ômespoly(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 1abs(A) module de Aconj(A) conjugué de Aderivat(A) dérivée d’une matrice rationnelle Adet(A) déterminant de Adeterm(A) déterminant d’une matrice polynômiale Adiag(A) matrice diagonale([A(1,1),...,A(n,n)])

diag(A,-k), k>0 matrice„

Ok,. Ok

diag(A) O.,k

«

diag(A,k), k>0 matrice„ O.,k diag(A)Ok Ok,.

«

Matrices particulières 2expm(A) exponentielle de Aeye(m,n) matrice identité min(m,n) complétée par des 0imag(A) partie imaginaire de Ainv(A) inverse de Alength(A) le produit nbre_lignes × nbre_colonnes de Amatrix(A,m,n) matrice (m,n) redistribuant les colonnes de Aones(m,n) matrice (m,n) dont les cœfficients valent 1phasemag(A) argument de A en degréprod(A,’row’) matrice des produits sur chaque ligne de Aprod(A,’col’) matrice des produits sur chaque colonne de Arand(m,n) matrice (m,n) à cœfficients aléatoires uniformes sur [0, 1]rank(A) rang de Areal(A) partie réelle de Asize(A) matrice ligne (nbre lignes , nbre colonnes)size(A,’r’) nombre de lignessize(A,’c’) nombre de colonnessize(A,’*’) nombre total d’élémentsspec(A) matrice des valeurs propres de Asum(A,’row’) matrice des sommes sur chaque ligne de Asum(A,’col’) matrice des sommes sur chaque colonne de Atoeplitz(v_1,v_2) matrice à diagonales constantes, où v1(1) = v2(1) et v1 en colonnestrace(A) trace de Atril(m,n) annule les cœfficients au dessus de la diagonale de Atriu(m,n) annule les cœfficients en dessous de la diagonale de Azeros(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 oudes vecteurs. Ainsi la représentation d’une fonction réelle se fait par la création d’un vecteur d’abscisses auxquelles onapplique la fonction pour créer le vecteur des ordonnées. Pour la représentation d’une surface, il faudra créer la matricesdes valeurs de la fonction sur une grille rectangulaire dans R2. Les instructions et paramètres de représentation possèdenttoutes une syntaxe très proche (détaillée dans le menu help). Par défaut, les graphiques successifs sont superposés surla même fenêtre graphique. On éfface la fenêtre courante par la commande xbasc(). On active une démonstration detoute commande de représentation graphique en saisissant nom_commande(). On efface la fenêtre graphique courante parla commande xbasc() ou clf() et on ouvre la fenêtre numéro i par xset(’window’,i). Dans toutes les syntaxes, seulesles deux ou trois 1ers arguments d’une commande sont obligatoires. les arguments qui les suivent et qui sont indiquésentre crochets sont facultatifs, mais si l’un d’entre eux est précisé, ceux qui le précèdent devront l’être aussi. Voiciquelques couleurs de la carte par défaut et quelques marques :

numéro : 1 2 3 4 5 6 26 29 32couleur : 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 -9marque : · + × ⊕ • ⋄ ∇ ∆ ♣

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éspour 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 desmarques (resp. des pixels, des traits) ; cadre est une chaîne de longueur 3 spécifiant dans l’ordre l’affichage ou non d’unelé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 pointsutilisés pour construire chaque courbe. Les points de la ie courbe sont données par X(:,i), Y(:,i) et Z(:,i) ; colorsindique les couleurs à attribuer à chaque courbe. Si colors(i) ∈ Z∗

− (resp. 0,N∗), alors la ie courbe est tracée avec desmarques (resp. des pixels, des traits) ; theta, alpha sont les coordonnées sphériques (en degré) du point d’observation (legraphique 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 rectanglede 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 lavaleur 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. Sicolors(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 surchaque 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 vecteurde 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 lanormale 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)et pouvant se mettre sous la forme d

dty = 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érationde 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)),..., fs(y(1),...,y(s)) sont les seconds membres de d

dty = 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 larepré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 ordinaireddty = 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 instanttc ∈ t0,...,T choisi parmi les instants de récupération ; xr,yr sont 2 vecteurs lignes de tailles n1 et n2 définissantla 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 3spécifiant dans l’ordre l’affichage ou non d’une légende pour chaque courbe, le choix du rectangle de tracé et l’affichageou 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é minimiseG(p, z1)′WG(p, z1)+G(p, z2)′WG(p, z2)+...+G(p, zn)′WG(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êmesnoms. 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 typed’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 lacohomologie des faisceaux cohérents etc. Nous ne décrivons ici que les commandes Macaulay2 permettant de décrire lesensembles 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 positionnedans /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 etM2WINH=\usr\local\lib\Macaulay2-0.9.2\lib\Macaulay2-0.9.2, puis mettre une copie du fichier M2.bat dansle 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 à gauchedu curseur par ctrl ← (ou shift ←, selon la configuration du clavier), on détruit tous les objets créés durant unesession par clearAll, on recommence une nouvelle session Macaulay2 par restart et on quitte Macaulay2 avec end (ouexit ou quit, selon la configuration du clavier). Pour obtenir un résultat, on tape une instruction à l’invite iN et onpresse la touche enter. Le résultat est affecté à la variable oN et en plus (si on le précise) à une variable assignée (parnom_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é decette documentation est donné par briefDocumentation nom_objet. La liste des commandes dont le nom contient unechaîne de caractères est obtenue par apropos "...". Des examples d’utilisation d’un objet s’affichent par l’instructionexamples nom_objet. Le calculateur algébrique Macaulay2 est toujours livré avec une liste de tests donnant un aperçucomplet 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’obtientpar 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 etnom_ens = setliste_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îneschaine1 || chaine2 : concaténation verticale de chaînesjoin(liste1,...,listeS) : concaténation de listes de même typedelete(elt_a_supprimer,nom_liste) : supprime toutes les occurences d’un élément d’une listesum nom_liste : somme des éléments d’une listeproduct nom_liste : produit des éléments d’une listeappend(nom_tab, list_val) : extension à droiteprepend(list_val, nom_tab) : extension à gauchetally 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 ensemblesubsets 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 absolueacos(...) : Arccosinusasin(...) : Arcsinusatan(...) : Arctangentebinomial(n,p) : cœfficient binomial Cp

n

ceiling(...) : partie entière +1cos(...) : cosinuscosh(...) : cosinus hyperboliqueexp(...) : exponentiellefactor nbr : procède à la décomposition en produit de nombres premiersfloor(...) : partie entièregcd(...) : plus grand commun diviseurlog(...) : logarithme néperienmax(...) : le plus grand parmimin(...) : le plus petit parmipartitions 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(...) : sinussinh(...) : sinus hyperboliquesqrt(...) : racine carréetan(...) : 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 decommandes, 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[MonomialOrder => [Lex|GrevLex]]],Examples : ZZ[a..d] → Z[a, b, c, d] ; ZZ/n[x,y,z] → Z/nZ[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 = matrixlist_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 auxgé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ébriquesnom_morph = nom_mat : définition d’un morphisme de variétés algébriques par sa matricekernel nom_morph : affiche l’idéal du noyau d’un morphismecokernel nom_morph : affiche l’idéal du co-noyau d’un morphismerank kernel nom_morph : affiche le rang du noyau d’un morphismeimage nom_morph : affiche l’idéal de l’image d’un morphismeisInjective 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’effetd’une énergie totale que l’on souhaite minimiser et astreintes à des contraintes d’évolution. Cette énergie peut avoirplusieurs composantes : tensions superficielles, énergie potentielle gravitationnelle ou énergies générées par les diversescontraintes. Surface Evolver détermine le mouvement à chaque étape de l’évolution de la manière suivante : la forcesur chaque sommet est le gradient de l’énergie totale de la surface ; cette force est rendue conforme aux contraintes dumouvement ; 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...). Ons’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éried’instructions (ou script), on saisit au préalable le script dans fichier.fe à l’aide d’un éditeur de texte brut et on lancele script dans la fenêtre principale de Surface Evolver en tapant fichier.fe à l’invite Enter new datafile name:. Lerésultat de l’exécution d’un script peut être visualisé en tapant s à l’invite Enter command:, ce qui génère le promptGraphics command: permettant la saisie des commandes graphiques. On change de prompt avec la commande q. Leré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 (exempleG 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 lignesauf 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. Plusieurscommandes 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 ; lescorps 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 laspécification d’une constante de saut au bord par la commande k ; equation définit l’ensemble de niveau zéro (contrainteactuelle) ; energy signifie que les sommets et les faces sous la contrainte ont des énergies calculées en intégrant le champde vecteurs de composantes e1,e2,e3 ; content signifie que les arêtes sous la contrainte contribuent au calcul de l’aireou du volume du corps par l’intégrale du champ de vecteurs de composantes c1,c2,c3 ; expr sont les instructions dedé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 laspécification, par la commande k, d’une énergie additionnelle, sur les arêtes situées sur la frontière ; x1,x2,x3 définissentla paramétrisation de la frontière en fonction des paramètres de repérage ; energy signifie que les sommets et les facessur la frontière ont des énergies calculées en intégrant le champ de vecteurs de composantes e1,e2,e3 ; content signifieque 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 vecteursde 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 indiqueque 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 sedé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êtedemeure fixe ; constraint indique que l’arête est astreinte aux contraintes portant les numéros c1 (ou c2...) ; boundaryest utilisé lorsque les extrémités appartiennent à la même frontière ; no_refine signifie que l’arête ne peut être subdiviséepar la commande r ; noncontent indique que l’arête ne contribue pas au calcul du volume. Les faces se définissent parla 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 lanormale intérieure pour le tire-bouchon et un numéro est à affecter d’un signe - lorsque l’arête est parcouru dans lesens inverse de celui de sa définition dans la section edges du script) ; fixed indique que la face demeure fixe ; tensionou 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 ducôté positif (resp. négatif) de la face ; constraint indique que la face est astreinte aux contraintes portant les numérosc1 (ou c2...) ; boundary ; noncontent indique que l’arête ne contribue pas au calcul du volume. Les corps initiaux sedé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 corpsa un volume constant indiqué par v ; volconst spécifie vc, la constante d’ajustement du volume ; pressure indique quele corps a une pression constante indiquée par p (elle est incompatible avec le volume constant) ; density indique que laconstante 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 par Surface Evolver pour animer un corps peut avoir plusieurs composantes. La tensionsuperficielle est la somme

P

faces(aire_face× tension_face) des produits des aires des faces par les tensions (= 1 pardéfaut) qui s’y appliquent. Pour les cordes, la tension est calculée à l’aide des longueurs des arêtes. Lorsque le corpspossède une densité ρ, l’énergie potentielle gravitationnelle est donnée par

RRR

corpsGρz dV et calculée par le théorème

de divergenceRR

facettesGρz2

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 objetsconstituant le corps et de densités différentes, Surface Evolver utilise la différence des deux densités. Une face située dansle plan z = 0 ne contribue pas à l’énergie potentielle gravitionnelle. L’énergie générée par les contraintes sur les arêtesest donnée par

R

aretes F · dl, où l’intégrand est déclaré par constraint dans le script. Notons que peuvent contribuerau calcul de l’énergie totale : les contraintes de convexité ; l’incompressibilité des corps initiaux ; les prescriptions depressions ; la coubure moyenne ; la courbure de Gauss ; les intégrands crystallins. Il est également possible de changer lamé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 interactiflibre conçu pour la modélisation et la simulation des processus physiques qui sont décrits par des équations aux dérivéespartielles (ingénieurie chimique, électromagnétisme, mécanique des structures etc). Freefem utilise une approximationpar la méthode des éléments finis, avec un maillage automatique ou adapté en éléments géométriques triangulaires outé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 etsa 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 unetriangulation 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 dudomaine doivent être des sommets de la triangulation ; les coins du domaine approché doivent être sur la fontière dudomaine 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...). Onactive Freefem avec la commande freefem++ ou dclick sur icône. Le logiciel, une fois lancé, se présente sous la formed’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). Pourcorriger le script fichier.edp, on l’ouvre et on procède aux modifications souhaitées. Le résultat de l’exécution d’unscript peut être exporté au format postscript par : plot(nom_maill, ps="nom_maill.ps"); pour une triangulation etplot(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érenced’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 dupoint courant ; N le vecteur normal au point courant ; lenEdge le périmètre du triangle courant ; hTriangle la hauteurdu triangle courant ; area la superficie du triangle courant ; cout console ostream ; cin console istream ; true vrai ; falsefaux ; 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, maxet 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) : ∂2u/∂x∂x.dyy(u) : ∂2u/∂y∂y.dxy(u) : ∂2u/∂x∂y.laplace(u) : le laplacien ∆u.dnu : dérivée normale.scal(u,v) : le produit scalaire

R

Ω uv dxdyint1d(u) :

R

Γudl

int2d(u) :R

Ω udxdy

(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 lesmailleurs analytiques ou polygonaux. Chaque mailleur est décrit suivant l’algorithme de Delaunay-Voronoï, la taille destriangles étant réglée par la taille des arêtes au bord du domaine (donc pour avoir un maillage fin, il faut raffiner lebord) et les bords internes du maillage étant décrits dans le sens trigonométrique inverse de telle manière que le maillagese trouve toujours à gauche. On peut adapter le maillage grâce à la commande adaptmesh par rapport à une fonctionanalytique (de façon à minimiser l’écart par rapport à cette fonction) ou solution d’une edp précédemment calculée. Leproblè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). Pourrésoudre plusieurs edp, il est impératif de les coupler. Freefem++ permet la résolution de problèmes non stationnaires parun schéma de type Euler implicite. Enfin, la mémorisation de résultats s’opèrent par : save(’u.dat’,u) qui sauve dansle 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éfiniepar : 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). Deuxarê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 sontdonné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); : constructionet 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 maillagenom_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 tailledes é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, parn1× 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 dansfichier.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écifiantla méthode d’éléments finis type_ef ∈ P0, P1, P2, RT0, P1nc, P1dc, P2dc, P1b. P0 pour les éléments finis discontinusconstants 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ésultatest :

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 paron(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 auxlimites, sans le résoudre. Sa syntaxe est identique à celle de solve et il spécifie en plus la méthode de résolution (LU pardé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 équationsde convection-diffusion en approximant (de manière stable et aux erreurs de quadrature près) les termes d’évolution-convection ∂tu+ v · ∇u, i = val_min, ...,val_max fois et à intervalle régulier de dt, par 1

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 ouforte du problème, avec maillage automatique et adaptatif. Il nécéssite la connaissance des logiciels povray pour décrirela 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 litles 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 enfonction desquels les coordonnées d’un point courant sont exprimées ; solver la méthode d’éléments finis choisie ; N levecteur normal au point courant ; cout << "nom_var_aff =" << expr << "\n"; pour afficher le résultat du calcul deexpr 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, maxet 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.f*u : discrétisée par l’opérateur bilinéaire :

R

Ω fu v dP , ∀v ∈ H10 (Ω).

dx(u) : ∂u/∂x discrétisée par l’opérateur bilinéaire :R

Ω ∂xu v dP , ∀v ∈ H10 (Ω).

dy(u) : ∂u/∂y discrétisée par l’opérateur bilinéaire :R

Ω∂yu v dP , ∀v ∈ H1

0 (Ω).f*dz(u) : f∂zu discrétisée par l’opérateur bilinéaire :

R

Ωf∂zu v dP , ∀v ∈ H1

0 (Ω).dx(f*dy(u)) : ∂x(f∂yu) discrétisée par l’opérateur bilinéaire : −

R

Ω f∂yu ∂xv dP , ∀v ∈ H10 (Ω).

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

CHAPITRE 7. LE SOLVEUR FREEFEM 7.2. FREEFEM3D

dx(dx(u))+dy(dy(u))+dz(dz(u)) : ∂2x2u+∂2

y2u+∂2z2u discrétisée par l’opérateur bilinéaire : −

R

Ω(∂xu∂xv+∂yu ∂yv+

∂zu∂zv) dP , ∀v ∈ H10 (Ω).

grad(u) : le gradient de u.div(u) : la divergence de u.div(grad(u)) : le laplacien ∆u, discrétisé par l’opérateur bilinéaire : −

R

Ω∇u · ∇v dP , ∀v ∈ H10 (Ω).

dnu(u) : dérivée conormale de u, intégrant provenant de l’application de la formule de Green dans la formulationvariationnelle du problème.

int(Gamma)(u) :R

Γu ds, intégration dans R2.

int(u) :R

Ω 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 ∂tu+ 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, pigmentcolor rgb <a,b,c> : la sphère de centre le point (x0, y0, z0), de rayon R etayant pour label <a,b,c>.

• box <x0,y0,z0>, <x1,y1,z1>, translate <v1,v2,v3> pigmentcolor 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, pigmentcolor rgb <a,b,c> : le cylindre d’axe la droite passant parles 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, pigmentcolor rgb <a,b,c> : le cône d’axe la droite passant parles points (x0, y0, z0) et (x1, y1, z1), dont la coupure orthogonale en (x0, y0, z0) (resp. (x1, y1, z1)) est le cercle derayon R0 (resp. R1), et ayant pour label <a,b,c>.

• plane <a,b,c>,d, pigmentcolor 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, pigmentcolor rgb <k,l,m> : la quadrique d’équation ax2 + by2 +cz2 + dxy + exz + fyz + gx+ hy + iz + j = 0, et ayant pour label <k,l,m>.

• cubic <a0,...,a19>, pigmentcolor rgb <k,l,m> : la cubique d’équation a0x3 + · · · + a19 = 0, et ayantpour label <k,l,m>.

• poly n,<a_0,...,a_m>, pigmentcolor rgb <k,l,q> : la surface définie par le polynôme de degré n et dontles cœfficients sont a0, · · · , m = 1 + (n+ 1)(n + 2)(n+ 3)/6, et ayant pour label <k,l,q>.

• unionobjet1 objet2 pigmentcolor rgb <a,b,c> : la réunion ensembliste.• intersectionobjet1 objet2 pigmentcolor rgb <a,b,c> : l’intersection ensembliste.• differenceobjet1 objet2 ... objetS pigmentcolor 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émentsconstitutifs de la frontière du domaine de résolution. Lorsque plusieurs scènes sont définies, c’est la dernière quiest 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îteconstruite 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 pourles calculs d’intégrales).

femfunction nom_ffonc(nom_maill) = expr; : définit la fonction ayant pour expression expr sur les points du maillagenom_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éset non-structurés, champs scalaires, vectoriels et tensoriels, animations, etc). medit présente une interface utilisateurminimaliste centrée sur la simplicité et la rapidité des commandes utilisateur (raccourcis) ainsi que sur l’efficacité desalgorithmes de visualisation (courbes intégrales, particules, etc). Il est portable : medit est écrit en C ANSI et utilisela 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 decouleurs, isosurfaces, etc. medit autorise également de lier deux fenêtres graphiques (ou plus) ainsi que de générerfacilement des séquences d’images. Les maillages sont au format .mesh et les solutions au format .bb. Leurs structuressont 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 valeursprises 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éspar nom_fichier_sauvegarde, puis affiche dans une fenêtre graphique le maillage en mode fil-de-fer. La souris permetd’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 lesstatisticiens professionnels. R est un langage de programmation interactif interprété et orienté objet contenant une trèslarge collection de méthodes statistiques et des facilités graphiques importantes. Ce petit guide se propose de présenterles 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 letableur intégré dans R par l’instruction tab<-edit(data.frame()). Les objets créés durant une session s’enregistrentpar save.image("nom_session.RData") et se reactivent par load("nom_session.RData"). La commande q() quitte leprogramme R. Plusieurs lignes d’instructions R sont sauvegardées à l’aide d’un éditeur de texte brut dans un fichiernom_fichier.R et sont exécutées depuis la console avec source("nom_fichier.R"). Les commentaires peuvent y êtreindiqués par # et plusieurs instructions y sont séparées par ;. Enfin, R dispose de quelques interfaces graphiques : Rcmdret 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 enmémoire. L’instruction help(nom_fonction, try.all.packages=TRUE) affiche un manuel décrivant la fonctionnom_fonction dans tous les packages installés, tandis que help(nom_fonction, packages="nom_package") afficheun 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 desdémonstrations dans les packages.names(nom_fonction) <- c("nom1",...,"nomN") : attribue des noms aux colonnes de nom_fonction. (Idem pourrownames 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 audé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 sesdépendances depuis un dépôt choisi dans une liste proposée. Il est possible d’installer depuis le terminal-Linuxune 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 parnom_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 Rboot Méthodes de ré-échantillonnage et de bootstrap

class Méthodes de classificationcluster Méthodes d’aggrégationdatasets Jeux de données de baseforeign Fonctions pour importer des données provenant de Minitab, S, SAS, SPSS, Stata, Systat, dBasegraphics Mode graphique de base

grDevices Périphériques graphiques pour base et grid

grid Mode graphique gridKernSmooth 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 programmationmgcv Modèles additifs généraloisésnlme Modèles (non-)linéaires à effets mixtesnnet Réseaux de neurones et modèles Log-linéaires multinomiaux

rpart Méthodes de partitionnement récursifspatial Analyses spatiales (Kriging and Point Pattern Analysis)splines Régression et classes utilisant des représentations polynômialesstats Fonctions statistiquesstats4 Fonctions statistiques utilisant la classe S4

survival Analyse de survietcltk Fonctions pour utiliser les éléments de l’interface Tcl/Tktools Utilitaires de développement de package et d’administrationutils 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 Kroneckerchoose(n,k) : Ck

n

expression(instr_expr) : construction d’une expression sans l’évaluereval(nom_expr) : évalue une expression déjà construiteD(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% : appartenancenom_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éfautsequence(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 foisgl(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’optionlabels, 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 devaleurs 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 vecteursround(nom_vec,n) : arrondit les coordonnées de nom_vec à n chiffres après la virgulerev(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 seulechaî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). Onpeut 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 matricediag(nom_mat [,nr=nbre_lig, nc=nbre_col]) : matrice de taille nbre_lig × nbre_col, dont la diagonale estnom_vec et qui est complétée par des zérossum(diag(nom_mat)) : trace d’une matricet(nom_mat) : matrice transposéencol(nom_mat) : nombre de colonnes d’une matricenrow(nom_mat) : nombre de lignes d’une matricenom_mat1 %*% nom_mat2 : produit matriciel de deux matricesrbind(nom_mat1,nom_mat2,...) : concaténation verticale de plusieurs matricescbind(nom_mat1,nom_mat2,...) : concaténation horizontale de matricesapply(nom_mat,1,nom_fonct) : affiche le vecteur des valeurs prises par nom_fonct sur chaque ligne des élémentsde nom_mat. On peut substituer à la fonction les chaînes de caractères "nom_symb", où nom_symb peut être lesymbole 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émentsde nom_mat

solve(nom_mat) : inverse d’une matriceeigen(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 decontingence 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 etnbre_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êmemode.

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 parplusieurs 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 dansR 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 dansl’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. Lasauvegarde 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 avecles 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/ Cammembert2/ E(X) 2/ Fréquences/effectifs 2/ Tuyaux d’orgue3/ V (X) 3/ Disjonctif 3/ Histogramme4/ σ 4/ Burt/contingence 4/ Boîte de Tukey5/ Yule / Pearson(γ1 et β) 5/ Tige-et-feuilles6/ Fisher(γ2) 6/ Courbe de normalité7/ max8/ Q3

9/ Mediane10/ Q1

11/ min12/ Etendue13/ Etendue inter-quartile14/ Mode

où les données statistiques sont modélisées par : (Ω,A, p) X−→ (X,AX , pX , FX , ϕX), avec Ω la population observée, Aune tribu sur Ω (ensemble de parties de Ω, contenant Ω et stable par passage au complémentaire et par les réunionsdénombrables), p une probabilité sur A (application de A dans [0, 1], nulle sur la partie vide et additive sur les famillesdisjonctives). 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) munid’une topologie. La distribution de X est définie par :

pX : AX → [0, 1]

B 7→

8

<

:

pX−1(B) , si X est disrèteouR

R1B(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 pratiquepour le calcul de p(a < X < b) = FX(b) − FX(a). La fonction caractéristique ϕX de X, est la transformée de Fourierde la distribution X. Elle aide au calcul des moments de X, notamment l’espérance et la variance de X. Le momentd’ordre r centré en a pour X est :

µr(X) =

8

<

:

P

x(x− a)rpX(x) , si X est discrèteouR

R(x− a)r 1X(x) fX(x) dx , si X est continue,

avecr = 1 et a = 0 µ1(X) := E(X), espérance de Xr = 2 et a = E(X) µ2(X) := V (X), variance de Xr = 3 et a = E(X) µ3(X)

V 3/2(X):= β, 2e cœfficient d’asymétrie de Pearson

r = 4 et a = E(X)µ4(X)

V 2(X)− 3 := γ2, cœfficient d’aplatissement de Fisher

a = 0 µr(X) := 1ir ϕ

(r)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 γ2s’interprètent :

= 0 symétriqueβ < 0 oblique à droite

> 0 oblique à gaucheet

= 0 normale, fX(x) = 1√2π

e−x2/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

Mediane =

8

>

>

>

<

>

>

>

:

xN+12

, si N impair12(xN

2+ xN

2+1

) , si N pair

)

déroulement ր des valeurs avec répétition

ouinterpolation 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 valeursappartenant à l’intervalle interquartile [Q1, Q3]. Les quartiles permettent d’évaluer la symétrie de la distribution par lebiais du cœfficient de Yule :

Y ule =(Q3 −mediane) − (mediane −Q1)

(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 dunom de la distribution :dnom_dist : pour définir la fonction de densité (resp. la fonction de probabilité), P (X = k), d’une distribution deprobabilité 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épartitionatteint une certaine probabilité ; dans le cas d’une variable discrète, cette fonction renvoie le plus petit entier utel 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 fonctionen 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 fonctionen chaque coordonnée du vecteur x.qnom_dist(p,liste_param_distribution,liste_param_optionnels), pour générer le quantile correspondant à laprobabilité p, avec 0 < p < 1.

Les distributions usuelles s’écrivent dans R :

beta(shape1=a,shape2=b) : loi Beta de densité fX(x) =Γ(a+b)Γ(a)Γ(b)

xa−1(1−x)b−1 , pour a > 0 , b > 0 et 0 ≤ x ≤ 1,

avec Γ(ν) :=R +∞0

e−ttν−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 deprobabilité P (Xi = 1) = p et Xi = 0, 1) le résultat de n tirages non exhaustifs (avec remise). Alors la variableX :=

Pni=1Xi donnant le nombre de 1 dans chaque tirage (x1, . . . , xn) ∈ ×n

i=1Xi(Ω) est régie par :

P (X = k) = Cknp

k(1− p)n−k

E(X) = npV (X) = np(1− p)ϕX(t) =

(1− p) + peit”n

cauchy(location=m [0],scale=s [1]) : loi de Cauchy.

chisq(df=m) : loi du χ2 ou de Pearson de densité fX(x) = 1

2m2 Γ( m

2)x

m2

−1e− x

2 . Elle s’applique dans le cadre de

la comparaison de proportions, des tests de conformité d’une distribution observée à une distribution théoriqueet le test d’indépendance de deux caractères qualitatifs. On a :

E(X) = mV (X) = 2m

ϕX(t) = (1− 2it)−m2

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 sertsurtout dans les très nombreux tests d’analyse de variance et de covariance. Elle est régie par :

E(X) = m2m2−2

, si m2 > 2

V (X) =2m2

2(m1+m2−2)

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. Alorsla 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) = 1p

V (X) = 1−pp2

hyper(Np,N(1-p),n) : loi Hypergéométrique. Soit (X1, . . . , Xn) (où Xi, i = 1, . . . , n, est une loi de Bernouillide probabilité P (Xi = 1) = p et Xi = 0, 1) le résultat de n tirages exhaustifs (sans remise). Alors la variableX :=

Pni=1Xi donnant le nombre de 1 dans chaque tirage (x1, . . . , xn) ∈ ×n

i=1Xi(Ω−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 :

P (X = k) =Ck

Np Cn−kN(1−p)

CnN

E(X) = np

V (X) = N−nN−1

np(1− p), N−nN−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 :

E(X) = em+ σ2

2

V (X) = (eσ2 − 1)e2m+σ2

logis(location=m [0],scale=s [1]) : loi Logistique de densité fX(x) = 1se

x−ms (1 + e

x−ms )−2. On a :

FX(x) = 1

1+e−

x−ms

E(X) = m

V (X) = π2

3s2

norm(mean=m [0],sd=σ [1]) : loi Normale de densité fX(x) = 1σ√

2πe− 1

2σ2 (x−m)2 , avec X ∼ norm(m, σ) ⇔X−ab−a

∼ norm(0, 1). On a :

E(X) = mV (X) = σ2

ϕX(t) = eimt− σ2

2t2

pois(lambda=λ) : loi de Poisson. La variable X prend ses valeurs dans X = 0, 1, . . . et sa fonction de probabilité

est donnée par : P (X = k) = λke−λ

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) = λ

ϕX(t) = eλ(eit−1)

t(df=m) : loi de Student de densité fX(x) = 1√m β( 1

2, m

2)

1+ x2

m

”− m+12 , avec : β(p, q) :=

R 10 t

p−1(1−t)q−1 dx. Elle

est utilisée lors des tests de comparaison de paramètres comme la moyenne, et dans l’estimation de paramètresde la population à partir de données sur un échantillon. On a :

E(X) = 0V (X) = m

m−2

unif(min=a [0],max=b [1]) : loi Uniforme de densité fX(x) = 1b−a

1[a,b[(x), avec X ∼ unif([a, b]) ⇔ X−ab−a

∼unif([0, 1]). On a :

E(X) = 12(a + b)

V (X) = 112

(a + b)2

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

CHAPITRE 8. LE LOGICIEL DE CALCUL STATISTIQUE R 8.2. STATISTIQUE EXPLORATOIRE

weibull(shape=a,scale=b [1]) : loi de Weibull de densité f(x) = ab(x

b)a−1

e−( x

b)a

, pour x > 0. On a :

FX(x) = 1− e−( x

b)a

E(X) = bΓ(1 + 1a)

V (X) = b2“

Γ(1 + 2a)− Γ2(1 + 1

a)”

wilcox(m,n) : loi de Wilcoxon. Soit (X1, . . . ,Xm) et (Y1, . . . , Yn) deux listes de nombres aléatoires. Alors lavariable X donnant le nombre de couples (Xi, Yj), tels que Xi ≥ Yj , prend ses valeurs dans X = 0, 1, . . . , mnet on a :

E(X) = mn2

V (X) = mn(m+n+1)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 nuagede points de la variable nom_tab2[,j] (les ordonnées) contre la variable nom_tab1[,i] (les abscisses). L’argumenttype 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 lemê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 danscol. Les arguments optionnels, density=m1 et angle=m2, hachurent, avec la densité indiquée par m1, les secteurspar 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 denom_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

n, qui est par défaut, fixée soit par la règle de Sturge : 1 + 3, 3 ln(nbreV ), soit par celle de Yule :

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) pourdfinir la couleur de remplissage nc1 (resp. des traits de contour des rectangles). On construit l’histogramme desfré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 rectangulaireconstruite 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 commandesde 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 graphiqueaffiché au format postscript et en mode paysage. L’argument horizontal=FALSE spécifie le mode portrait etpointsize 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êtregraphique 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 casesportant 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 partitionré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 devariables, de réduction factorielle du nombre de variables et d’étude canonique des liaisons entre variables. L’analyse encomposantes principales étudie les corrélations, les redondances et réduit un grand nombre de variables inter-correléesen un petit nombre de facteurs indépendants. L’analyse des correspondances simple permet un grand nombre detris 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éduitdes variables nominales ou ordinaires en un petit nombre de variables numériques indépendantes. La segmentationmaximise 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 desdonnées et la méthode de classification complete (peut être remplacée par average ou centroid). La fonctionretourne :– 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, avecproduction des coordonnées sur les composantes principales et de la matrice de covariances-variances. Cetteinstruction 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 letableau 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 retourneaprè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érentielleparle 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 termespour lesquels les paramètres sont estimés. Les principaux modèles sont :var1+var2 : les effets additifsvar1:var2 : les effets interactifsvar1*var2 : les effets additifs et interactifsvar^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 deshypothèses. Estimer au maximum de vraisemblance, c’est choisir l’hypothèse qui donne à l’observation la plus grandevraisemblance. Tester une hypothèse, c’est décider au vu du résultat, si elle est vraie ou fausse. Le risque de 1re espèceest 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 syntaxepour 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édianewilcox.test() : test de la somme des rangs de Wilcoxonkruskal.test() : test de la somme des rangs de Kruskal-Wallisfriedman.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 aentre 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 avecle 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élationsparmi 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é, obtenupar élimination d’un seul point. Si l’échantillon de départ contient n points, il y a n sous-échantillons de taillen − 1. L’objectif est de voir si la suppression d’un point influe beaucoup sur la statistique étudiée. La syntaxed’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ésolutiond’équations, factorisation de polynômes, développement de fonctions en séries entières etc). On démarre une sessionMaxima 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 lerésultat ne le soit pas). La commande d’échappement standard sous Maxima est Ctrl C. L’interruption d’une instructionen cours d’exécution se fait à l’invite >> de Maxima. Le rappel d’une instruction s’opère en faisant précéder son labelpar ’’ (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). Lesprogrammes 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 fichierwritefile("nom_fichier.txt",all) : enregistre une session Maxima dans un fichier texteloadfile("chemin/nom_fichier.max") : charge le contenu d’un fichierbatch("chemin/nom_fichier.max") : exécute avec echo le contenu d’un fichierkill(nom_var) : supprime une variable, ainsi que son contenu et ses propriétésrestart : commence une nouvelle session maxima

Constantes :

%e : la base du logarithme néperien%i : le nombre complexe

√−1

%pi : le nombre πinf : infiniminf : moins infinitrue : le bouléen vraifalse : 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 équationfpprec: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 symboliquerealpart(compl) : partie réelle d’un complexeimagpart(compl) : partie imaginaire d’un complexeexpand(expr) : développe une expressionfactor(expr) : factorise une expressionnum(expr) : affiche le numérateur d’une expressiondenom(expr) : affiche le dénominateur d’une expressioncoeff(expr,nom_var,n) : affiche le cœfficient du terme d’ordre n en la variable npm_var dans une expression

fonctions primitives

sin(...) : sinuscos(...) : cosinustan(...) : tangentecot(...) : cotangentecsc(...) : cosecantesec(...) : secanteasin(...) : Arcsinusacos(...) : Arccosinus

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

CHAPITRE 9. LE SYSTÈME FORMEL MAXIMA 9.2. PRIMITIVES MAXIMA

atan(...) : Arctangenteacot(...) : Arccotangenteacsc(...) : Arccosecanteasec(...) : Arcsecantesinh(...) : sinus hyperboliquecosh(...) : cosinus hyperboliquetanh(...) : tangente hyperboliquecoth(...) : cotangente hyperboliquecsch(...) : cosecante hyperboliquesech(...) : secante hyperboliquesqrt(...) : racine carréeabs(...) : valeur absolueexp(...) : exponentielleln(...) : logarithme néperien

Calculs :

sum(expr,nom_compteur,nbr1,nbr2) : somme discrète incrémentéelsum(expr,nom_compteur,[liste_valeurs]) : somme discrète incrémentée sur une liste de valeursproduct(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 ouinférieuresdiff(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’à unordre 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 dny/dxn (sert à écrire les équations différentielles)ode2(expr,fonct_inc,nom_var) : résoud une équation différentielle ordinairerhs(nom_equ) : affiche le membre de droite d’une équationlhs(nom_equ) : affiche le membre de droite d’une équation

Trigonométrie :

trigexpand(expr) : simplifie une expression en utilisant les formules trigonométriquestrigreduce(expr) : convertit une expresion en une somme de termes, dans chacun desquels sin ou cos n’apparaîtqu’une seule fois en facteur

Matrices :

entermatrix(nbr_lig,nbr_col) : appel à la construction élément par élément d’une matricematrix([a11,...,a1S],...,[aR1,...,aRS]) : construit une matrice de type (R,S)transpose(nom_mat) : transpose une matricedeterminant(nom_mat) : affiche le déterminant d’une matriceinvert(nom_mat) : inverse une matriceeigenvalues(nom_mat) : affiche les valeurs propres d’une matrice et leurs multiplicitéseigenvector(nom_mat, val_propre) : affiche un vecteur propre associé à une valeur propreseigenvectors(nom_mat) : affiche les valeurs propres, leurs multiplicités et les vecteurs propres d’une matricenormalise : 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’indicedifferverbose : 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’aidede 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 lesinstructions 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 à LATEX2ε, 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