Académique Documents
Professionnel Documents
Culture Documents
24 avril 2009
1
Copyright
c 2005-2008 Quadjovie, Département de mathématiques, (FDS/UL, Togo), BP. 1515 Lomé,
Tél: 002289106688
(H. Quadjovie, FDS/UL, 2009) 2
Table des matières
Introduction 5
3 Le traceur Gnuplot 59
3.1 Prise en mains de Gnuplot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.2 Tracer par défaut le graphique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.2.1 Scripts courants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.2.2 Définir ses propres variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
3.2.3 Fichiers de points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
3.3 Personnaliser le graphique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
3.3.1 Généralités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
3.3.2 Autres commandes de set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
3
TABLE DES MATIÈRES
cygwin permet l’accès aux fonctionnalités d’appel et outils standards Linux (de développement entres autres). Une
distribution cygwin peut également servir de console d’entrée de commandes de shell reconnaissant les spécifica-
tions de chemins Microsoft et/ou Linux et permettant de configurer la plupart des logiciels basés sur le standard
GNU.
TkDesk est un gestionnaire de fichiers sous X-Window avec une interface très agréable, d’utilisation intuitive et offrant
un important degré de personnalisation.
LATEX2ǫ est l’outil de traitement de texte universellement utilisé par tous les scientifiques professionnels. LATEX 2ε est un
ensemble de macros permettant à un auteur de mettre en forme son texte et ses équations mathématiques, avec la
meilleure qualité typographique et en utilisant un format professionnel prédéfini. LATEX 2ε nécéssite quelqu’efforts
d’apprentissage dûs au fait que l’on est à la fois auteur, éditeur et typographe.
Gnuplot est un logiciel libre qui permet de construire des graphiques en 2D ou 3D et d’interpoler graphiquement des
bases de données (traceur de fichiers de points). Il possède, parmi de tels logiciels, les syntaxes les plus simples à
retenir et les plus proches de l’écriture courante. Il est assez puissant pour permettre le dépouillement presqu’en
temps réel de résultats de calculs.
Scilab est un logiciel de calcul numérique distribué librement par l’INRIA. Les polynômes et les matrices polynô-
miales peuvent être définis et la syntaxe utilisée pour les manipuler est identique à celle des vecteurs et matrices
constants. Scilab fournit une variété de primitives pour l’analyse des systèmes non-linéaires. La résolution des
systèmes dynamiques, la définition graphique et la simulation des systèmes hybrides interconnectés complexes,
peuvent s’effectuer numériquement. Scilab offre des facilités d’optimisation numérique dans les cas différentiables,
quadratiques et linéaires. Scilab a un espace de programmation où la création de fonctions et la librairie de fonc-
tions sont entièrement gérées par l’utilisateur. Ces fonctions sont des objets qui, une fois définis, doivent s’afficher
et être manipulables de la même manière que les matrices ou les suites. Enfin, Scilab supporte les données de
type chaînes de caractères et est un interface compatible avec les langages Fortran et C.
Macaulay2 est un outil interactif libre dédié à la création scientifique en géométrie algébrique et algèbre commutative.
Les algorithmes de calculs implémentés dans Macaulay2 permettent la création de tout type d’anneaux, les
opérations arithmétiques sur les anneaux et les matrices, les résolutions projectives de modules, la détermination
de la base de Gröbner, le calcul des séries de Hilbert sur les anneaux gradués ou les modules, le calcul de la
cohomologie des faisceaux cohérents etc.
Surface Evolver est un programme interactif libre conçu pour l’étude des surfaces en mouvement sous l’effet d’une
énergie totale que l’on souhaite minimiser et astreintes à des contraintes d’évolution. Cette énergie peut avoir
plusieurs composantes : tensions superficielles, énergie potentielle gravitationnelle ou énergies générées par les
diverses contraintes. Surface Evolver détermine le mouvement à chaque étape de l’évolution de la manière sui-
vante : la force sur chaque sommet est le gradient de l’énergie totale de la surface ; cette force est rendue conforme
aux contraintes du mouvement ; le déplacement actuel est calculé en multipliant la force par un facteur global
d’échelle.
Freefem++ est un logiciel libre conçu pour aider à la résolution numérique des équations aux dérivées partielles
en 2D par éléments finis triangulaires, avec maillage automatique et adaptatif. Il crée, édite et visualise une
triangulation (ensemble de triangles recouvrant un domaine polygonal correspondant au domaine d’étude Ω, avec
les propriétés : l’intersection de deux triangles ne peut être que vide, un sommet ou une arête entière ; les coins du
5
INTRODUCTION
domaine doivent être des sommets de la triangulation ; les coins du domaine approché doivent être sur la fontière
du domaine initial), représente graphiquement des fonctions sur une triangulation et résoud des edp.
Freefem3d est un logiciel libre conçu pour aider à la résolution numérique des équations aux dérivées partielles en 3D
par la méthode des éléments finis tétraédriques de Galerkin appliquée à la formulation variationnelle du problème,
avec maillage automatique et adaptatif. Il nécéssite la connaissance des logiciels povray pour décrire la géométrie
du domaine de résolution et les cœfficients de discrétisation, medit (sous Windows) et opendx (sous Unix) pour
visualiser graphiquement les solutions du système.
R est l’outil libre d’analyse de données universellement utilisé par tous les statisticiens professionnels. R est un langage
de programmation interactif interprété et orienté objet contenant une très large collection de méthodes statistiques
et des facilités graphiques importantes.
Maxima est un logiciel interactif libre dédié au calcul formel. Il est toujours livré avec une liste de tests donnant un
aperçu complet de ses diverses fonctionnalités.
Puisse la pratique de l’intuition scientifique, l’art de raisonner sur les figures de la pensée, amener les hommes à être
capables d’anticipation, en usant pleinement de leurs aptitudes symboliques, cognitives et imaginatives. Nous espérons
que ces algorithmes vont séduire et motiver, tout en exerçant à la dure discipline de la rigueur.
La distribution cygwin-X est une combinaison de l’émulateur cygwin et du mode graphique X (système client ser-
veur qui gère une partie du matériel, qui permet le copier/coller dans toutes les applications et qui gère l’affichage des
applications dans différentes fenêtres). La commande startx &, saisie depuis un terminal cygwin, génère une console
spéciale, à partir de laquelle toutes les applications dépendant d’une session X (telles que xfig, nedit, xdvi etc) peuvent
être activées.
Sous cygwin, il n’est pas prévue de partition swap (mémoire virtuelle ou d’échange en cas de débordement de la
mémoire vive), ni de partition /boot (gérant le système de démarrage) et ni de partition /root (le repertoire du chef).
Par contre, on dispose, en plus des traditionnelles, d’une partition /cygdrive où seront montés les autres disques (cd d:
est équivalent à cd /cygdrive/d/) ne se trouvant pas dans l’arborescence cygwin.
Comme sous Linux, les données seront conservées dans /home, les commandes exécutables dans /bin et les pro-
grammes dans /usr. Les deux commandes de base sont man nom_commande (pages de manuel. Pour obtenir l’aide de
less, taper h) et info nom_commande (défilement : espace, suivant : n, précédant : p, page parente : U, quitter la fenêtre
au bas de la page : Ctrl g).
7
CHAPITRE 1. SURVIVRE SOUS LINUX 1.2. SHELL D’ADMINISTRATION
bash : permet de connaître ce que la machine tente de faire, lorsque qu’elle échoue dans le lancement d’un programme.
Syntaxe : bash -x nom_programme.
cat : par le script cat fichier1 ... fichierN > fichier_initial, reconstitue le fichier initial coupé par split ou
l’utilitaire winKoupe.
chmod : (change modality) permet de modifier les permissions, en shell. Exemples : chmod u+r,g+w,o-r,o+x toto
(ajoute à l’utilisateur le droit de lecture, ajoute au groupe le droit d’écriture, enlève au reste du monde le droit
de lecture et leur ajoute le droit d’exécution sur le dossier toto). L’option -R permet d’appliquer les permissions
de façon récursive à tous les sous-dossiers ou sous-fichiers. Pour accorder toutes les permissions à tout le monde
chmod 777 toto
chown : (change owner) permet de modifier le propriétaire d’un fichier ou dossier. Exemples : chown -R nom_prop toto.
L’option -R permet d’appliquer les permissions de façon récursive à tous les sous-dossiers ou sous-fichiers.
convert : Syntaxe convert nom_fichier nom_resultat, pour convertir un fichier image sous un autre format.
dmesg : permet de consulter les messages de démarrage ou de lancement d’un programme. Syntaxe : dmesg | less.
dpkg-reconfigure : reconfigure les paquets déjà installés. Exemples, dpkg-reconfigure gnome-volume-manager per-
met de reconfigurer tout le système d’exploitation sous Linux-Debian ou Ubuntu. dpkg -i pmount.deb permet
de reconfigurer le montage automatique des supports externes sous Linux-Debian ou Ubuntu. On peut également
employer la forme dpkg -i --force-depends nom_prog.
du : affiche l’espace occupé par un repertoire ou un fichier sur le disque. Syntaxe : du chemin_repertoire/fichier.
Option : -s donne seulement un résumé.
echo : pour voir les chemins de recherche pour les différentes commandes. Syntaxe : echo $PATH.
export : pour enrichir le chemin de recherche pour une commande. Syntaxe : export PATH=chemin_rep_commande:$PATH.
fdisk : pour lister les disques montés. Syntaxe : fdisk -l. Pour partitionner un disque monté sur /dev/sda1,
saisir l’instruction : cfdisk /dev/sda1 et suivre les instructions. Pour formater fat32 un disque monté sur
/dev/sda1, taper : mkfs.vfat -n nom_disque /dev/sda1. Remarquer que sur un disque formaté fat32, il n’est
possible d’écrire que des données d’au plus 4 Go.
find : pour savoir si une commande existe. Syntaxe : find / -name nom_commande. Pour rechercher si un fichier existe.
Syntaxe : find chemin_dossier_rech nom_fichier.
gzip, gunzip : compresse un fichier. gzip nom_fichier (compresse le fichier et le nomme en nom_fichier.gz) ou
gzip fichier nom_fichier_sortie (compresse le fichier et le nomme nom_fichier_sortie.gz). Pour décom-
presser un fichier, gunzip nom_fichier.gz. Options : gzip -n fichier (où n est un entier allant de 1 à 9 indiquant
le taux de compression -9 : compression maximale). Exemples :
gzip -9 test.tar
gunzip test.tar.gz
Pour les fichiers .zip, utiliser zip et unzip. Pour les fichiers .Z, utiliser compress et uncompress. Pour les
fichiers .bz2, utiliser bzip2 et bunzip2.
hwclock : initialise le jour et la date du système. Syntaxe : hwclock --set --date="11/31/2005 14:20:00".
ispell : vérifie l’orthographe des mots d’un fichier texte et suggère des graphies alternatives. Il ne corrige pas l’ortho-
graphe d’accord ou grammaticale. Syntaxe : ispell -d francais nom_fichier.ext. Lors de l’examen, A pour
accepter le mot pour le reste de la session ispell et Q pour quitter ispell et laisser le fichier intact.
kill : tue un processus en cours d’exécution. Syntaxe : kill -9 num_processus, le numéro PID du processus est obtenu
en tapant ps.
less, more : ces deux commandes permettent de voir le contenu (texte) d’un fichier. less fichier ; more fichier.
Pour parcourir le texte, utiliser les flèches haut et bas. Pour quitter ces modes, taper q. On les utilise souvent
pour la réalisation de tubes, c’est-à-dire la redirection d’une action provoquant un défilement trop rapide et dont
on a raté le début. Exemple : dmesg | less permet de consulter les messages de démarrage.
lpq : permet de connaître l’état de la file d’attente associée à l’imprimante. Syntaxe : lpq.
lpr : imprime tout fichier. Syntaxe : lpr nom_fichier. Option : -K n pour spécifier que n est le nombre de copies à
imprimer ; Par défaut le nombre de copies est 1.
lprm : retire un fichier en attente d’impression. Syntaxe : lprm ..., où ... est le numéro du processus d’impression
(obtenu grâce à la commande lpq). lprm -a all interrompt toutes les impressions en cours ; lprm (sans argument)
la dernière impression lancée.
ls : (list) donne la liste des fichiers contenus dans le répertoire actuel. Sans option, les fichiers dont le nom commence
par un . n’apparaissent pas. Options : ls -la (liste tous les fichiers (y compris ceux dont le nom commence par
un .) en précisant pour chacun d’eux leurs permissions, leur taille, leur date de création ...).
man : appelle une page de manuel. man commande. Exemple : man latex. L’instruction man commande | lpr imprime
la page de manuel correspondant à la commande.
mkdir : (make directory) crée un repertoire (ou dossier). mkdir nom_repertoire. Exemple : mkdir test.
mount : attache le contenu d’un lecteur à l’arborescence. mount chemin_lecteur. Exemple : mount /floppy sous De-
bian et mount /mnt/floppy sous Redhat. L’instruction umount chemin_lecteur démonte le contenu du lecteur
de l’arborescence. Lorsqu’on dispose des droits d’administrateur, l’instruction mount -t vfat /dev/sda1 /usb
permet de configurer le montage d’une clé USB formaté vfat, au point de montage usb créé préalablement à
la racine de l’arborescence, sur la première partition du disque sda. L’administrateur pourra alors autoriser le
propriétaire de la clé USB à pouvoir la monter lui-même en corrigeant le fichier /etc/fstab.
mv : (move) déplace un fichier d’un emplacement vers un autre. mv source destination. Il admet l’option ri (récursive
et sécurisée, comme pour cp). Exemples :
mv fichier1 fichier2
mv fichier repertoire
passwd : permet à un utilisateur de changer son mot de passe en saisissant passwd suivi de enter. L’administrateur
change le mot de passe d’un utilisateur ayant oublié son mot de passe par passwd nom_utilisateur.
ps : (processes statut) liste les processus en cours lancés par le noyau. Option : -e liste en plus les processus lancés par
les programmes installés ; aux | grep nom_prog liste seulement les processus relatifs à nom_prog.
rm : (remove) efface un fichier. rm nom_fichier. Options : rm -r nom_repertoire (efface un répertoire et son contenu).
rm -i nom_fichier (effacement interactif : demande une confirmation. A utiliser par exemple en combinaison
avec -r). rm -f nom_fichier (force l’effacement : aucune confirmation ne sera demandée). Exemples :
rm biblio.tex
rm -ri article
rm -rf article3
split : coupe un fichier en plusieurs fichiers pouvant tenir chacun sur une disquette. split -b 1m fichier. Les fichiers
créés sont par défaut xaa xab ..., x étant le préfixe par défaut. Le script split -b 1m fichier prefixe permet
de fixer soi-même le préfixe. Il admet les options -b=taille en b, k ou m, -l=nombre de lignes. On peut spé-
cifier la taille en octets, split -b 1400000 fichier pour que chaque partition ait une taille 1.4 Mo. Les fichiers
produits par split sous Unix peuvent être réunis sous Windows par l’utilitaire hjsplit (il faut pour cela renom-
mer tous les morceaux suivant la syntaxe : nom_fichier.ext.001,...,nom_fichier.ext.00N).
su : (switch user) permet l’accès aux fonctions multiutilisateurs du système. Exemples : su␣ permet d’accéder au compte
administrateur, su -nom_utilisateur permet d’accéder à un autre compte utilisateur. Une variante est la com-
mande sudo. Exemples d’utilisation : sudo passwd root permet de redéfinir le mot de passe root (depuis un
compte administrateur du système), sudo dpkg-reconfigure gnome-volume-manager --priority=medium per-
met de reconfigurer tout le système d’exploitation, gksudo synaptic permet de lancer l’interface graphique de
suppression et d’ajoût de logiciels. L’installation de Easy Ubuntu permet la configuration automatique de tout le
système et l’installation des paquets ncessaires à une utilisation courante : lecture de la plupart des sons, vidos
(MP3, WMA, AAC, DivX, XviD, AVI, MPEG, Real, ...) et des DVDs, et le navigateur web aura tous les plugins
nécessaires (Flash, Real, Java, ...).
tar : crée ou lit des archives (pouvant contenir des fichiers et des répertoires).
tar cvf nom_archive.tar repertoire1 ... fichier1 ...
tar zcvf nom_archive.tgz liste_fichiers_repertoires
tar xvf nom_archive.tar
tar tvf nom_archive.tar
tar zxvf nom_archive.tgz
Le 1er crée un fichier archive.tar contenant repertoire1 ... fichier1 ... ; le 2e crée une archive compressée
avec gzip ; le 3e extrait une archive, c’est-à-dire rend les fichiers archives ; le 4e lit une archive et donne la liste
des noms des fichiers contenus ; le 5e extrait une archive compressée. Dans toutes ces commandes, le v signifie
verbose (ou bavard), c’est-à-dire que tar affiche une liste des fichiers qu’il est en train d’archiver. Exemples :
tar cvf test.tar lock article
tar zcvf test.tgz lock article
tar ztvf test.tgz
Pour les fichiers .bzip2 substituer j à z.
vim : pour activer l’éditeur de texte vim, puissant et toujours présent sur les systèmes Unix. A un instant donné, vim
est soit en mode commande, soit en mode insertion. En mode commande, les caractères tapés sont interprétés
comme des commandes d’édition. vim démarre dans ce mode par défaut, il faut donc lui indiquer (commande
i) que l’on veut insérer du texte. En mode insertion, les caractères sont insérés dans le texte édité. On peut
quitter ce mode en pressant la touche ESC (ou Echap sur certains claviers). On appelle vi depuis le shell par :
– vim fichier : édite fichier, (ou :e en mode commande vim).
– vim +n fichier : commence à la ligne n.
– vim -r fichier : récupère fichier après un crash.
Pour les mouvements du curseur (en mode commande), les touches actions flèches déplacent le curseur (ne sont
pas toujours bien configurées).
– ESPACE : permet d’avancer à droite.
– v : commence la sélection.
– D : coupe.
– Y : copie.
– p : colle.
– h : recule à gauche.
– CTRL-n : descend d’une ligne.
– CTRL-p : monte d’une ligne.
– CTRL-b : monte d’une page.
– CTRL-f : descend d’une page.
–nG : va à la ligne n (n est un nombre).
wget : active un récupérateur réseau non interactif, pouvant servir à aspirer de façon récursive tout un site depuis un ter-
minal. Exemples : wget -r --level=n URL_site, avec une profondeur ne dépassant pas n ou wget -rkpE URL_site,
l’option r spécifiant un téléchargement récursif, l’option k pour faire pointer les liens HTML vers les fichiers lo-
caux, l’option p pour obtenir toutes les images nécessaires à l’affichage de la page HTML et l’option E pour
sauvegarder les documents HTML avec l’extension .html. Lorsque survient une coupure de la connexion, relancer
la commande de téléchargement en rajoutant l’option -c.
acroread : pour lancer l’éditeur de fichier au format pdf non compressé, (à privilégier pour lancer l’impression d’un
document contenant des importations de fichiers graphiques). Syntaxe : acroread &.
bc : donne accès à un programme servant de calculatrice et très pratique pour toute sorte de calculs sur la console.
bibus : outil pour chercher, éditer et organiser des références bibliographiques à insérer dans un document préparé à
l’aide de OpenOffice ou Microsoft Word. Il organise les citations selon des clés définies par l’utilisateur, recherche
directement sur les bases de données en ligne (PubMed, eTBLAST) et formate les références selon plusieurs styles
(importés ou créés) de journaux et revues. Pour installer bibus, ajouter son dépôt à la liste des sources et activer
la clé gpg avant de mettre à jour les dépôts, puis installer depuis synaptic :
code
1 deb http://switch.dl.sourceforge.net/sourceforge/bibus-biblio ./
2 deb-src http://switch.dl.sourceforge.net/sourceforge/bibus-biblio ./
3 wget -q http://switch.dl.sourceforge.net/sourceforge/bibus-biblio/pmartino.gpgkey -O-
4 sudo apt-key add -
5 sudo apt-get update
6 sudo apt-get install bibus
Pour la connexion de Bibus à OpenOffice.org, Bibus -> Aide -> Première connexion, puis cliquez sur le bouton
activer, ce qui lance OpenOffice. Acceptez alors l’utilisation des macros et dans le document ouvert, cliquez le
bouton « Accept UNO connections », avant de fermer complètement OpenOffice. Il est conseillé de réduire le niveau
de sécurité dans OpenOffice par : Outils > Options > OpenOffice.org > Sécurité > Sécurité des macros,
puis cliquez sur Niveau de sécurité moyen.
bluefish : pour lancer l’environnement de développement web bluefish. Syntaxe : bluefish &.
cal : affiche la calendrier du mois de l’année spécifiée. Il admet les options -y (pour l’année en cours) et -j (pour le
calendrier julien). cal numero_mois numero_annee.
carmetal : CaRMetal est un logiciel de géométrie dynamique qui permet de travailler sur des figures géométrique,
comme avec une règle et un compas et ainsi découvrir visuellement et ludiquement les règles de géométrie apprises
au collège. Parmi les nombreux aspects intéressants de CaRMetal, on peut distinguer les points suivants :
1. CaRMetal donne automatiquement un nom modifiable à chaque objet créé. Les points sont appelés P1 , P2 ,
P3 , ou A, B, C, les segments S1 , S2 , S3 . Le nom d’un objet peut aussi désigner une propriété numérique
de cet objet (S3 désigne un segment de la figure et sa longueur, poly1 désigne un polygone de la figure et
son aire algébrique). Ainsi, S3 et poly1 peuvent intervenir dans l’écriture de formules, de même que x(A)
et y(A) qui désignent respectivement l’abscisse et l’ordonnée du point A.
2. Les aires des polygones sont algébriques. Cette fonctionnalité, associée à celle exposée dans le paragraphe
suivant, permet en particulier de transformer CARMetal en logiciel de géométrie dans l’espace.
3. CaRMetal offre la possibilité de changer automatiquement l’allure des objets en fonction de certains para-
mètres numériques comme la longueur d’un segment, l’aire d’un polygone ou la valeur de n’importe quelle
fonction.
4. Il est possible d’écrire des formules avec des « si » et même écrire des formules qui contiennent des expressions
du type : (a < 1).(a > 0) qui vaut 1 si a est dans l’intervalle ]0; 1[ et 0 ailleurs.
5. Chaque fois qu’un objet est créé, ses propriétés sont listées dans l’inspecteur d’objets qui apparait au dessus
de la zone de travail. Par exemple, pour un point apparaissent les propriétés suivantes : son nom, sa couleur,
sa forme, ses coordonnées, est-ce un objet caché ou non ?, le nom du point est-il caché ou non ?
6. Chacune des propriétés d’un objet peut être modifiée dans l’inspecteur d’objets. Si l’objet est créé depuis
longtemps, on peut faire réapparaitre ses propriétés en cliquant droit dessus.
7. Dans CaRMetal, les objets tels les polygones, peuvent être créés, soit transparents, soit opaques. Par défaut,
les objets créés sont dans un même plan. Cependant CaRMetal offre aussi la possibilité de créer des objets
les uns en dessous des autres, dans des calques différents. Par exemple, si un triangle est dans le calque n˚1
et si un point est dans le triangle mais dans le calque n˚2 alors le triangle est au dessus du point et celui-ci
est caché si le triangle est opaque. Si le triangle est dans le calque n˚ 2 et le point dans le calque n˚ 1, alors
le point est au dessus du triangle et ne peut être caché. Le plan par défaut est au dessus de tous les calques.
C’est dans l’inspecteur d’objet que l’on peut ranger un objet dans un calque, en indiquant son numéro.
8. CaRMétal offre la possibilité de créer des macros et d’utiliser les macros déjà existantes. Pour utiliser ces
macros, une méthode consiste à faire apparaitre l’inspecteur de macros avec le menu affichage.
chemtool : pour lancer l’assistant permettant de dessiner des molécules organiques et de calculer leur masse. Syntaxe :
chemtool &
djview : pour lancer la visionneuse de fichier au format djvu. Syntaxe : djview &
egroupware : pour installer un calendrier partagé aptitude install dovecot-imapd exim4 egroupware.
emacs : pour lancer l’éditeur emacs. Syntaxe : emacs &. Emacs est un éditeur de texte avec une interface graphique,
auto-documenté, reparamétrable à souhait et extensible et toujours présent sur les systèmes Unix. Ses commandes
et modes les plus utilisés pour entrer du texte, faire des corrections et sauvegarder un fichier, sont :
– emacs & : active Emacs.
– C-z : met Emacs en mode veille.
– C-x C-c : quitte Emacs.
– C-h (ou F1) : active l’aide.
– C-h t : donne lieu à un tutorial.
– C-x 1 : quitte l’aide.
– C-M-v : permet de se déplacer dans l’aide en ligne.
– C-h a : apropos.
eric4 : est une interface de développement pour le langage de programmation Python. Elle est développée en utilisant
les bindings PyQt du kit de développement Qt (pour le GUI) et l’éditeur de texte intégré QScintilla.
evolver : pour lancer le simulateur Surface Evolver, qui minimise l’énergie de surfaces triangulées soumises à des
tensions et contraintes de mouvement. Syntaxe : evolver fichier.fe.
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.
gambas : pour disposer d’un environnement de développement similaire à Visual Basic, qui permet de concevoir rapi-
dement des applications graphiques en utilisant le langage facile à apprendre BASIC. Gambas est fourni avec un
éventail d’exemples d’applications.
gcc : pour compiler un programme écrit en langage C. Syntaxe : gcc -Wall nom_fichier.c -o nom_fichier. L’option
-Wall affiche les erreurs de compilation bloquantes et les avertissements. Une manière simple d’exécuter le fichier
de sortie est de copier nom_fichier.exe dans les binaires de CygWin, puis de lancer la commande nom_fichier
depuis le terminal CygWin.
GCourrier : pour établir la traçabilité de flux de courriers et de factures dans une organisation. Il intègre des modules
de recherche, d’archivage, de transmission, d’historique, d’urgence de courriers, de génération d’accusé reception,
de pièces jointes, d’administration etc. Télécharger l’archive sur http://gcourrier.cliss21.com.
Un serveur local est installé par : apache2, mysql-server, php5 et phpmyadmin. On copie alors dans son localhost
(dossier www du serveur installé) le site gcourrier (http://localhost/nom_site), puis on crée une base de données
nommée gcourrier à l’aide de phpmyadmin et on déclare base=’gcourrier’ dans le fichier connexion.php. On se
logue alors sur le site http://localhost/gcourrier/install.php avec l’identifiant admin sans mot de passe (à
définir une fois connecté). On crée pour finir les services, comptes utilisateurs, fournisseurs etc.
gpc : pour compiler un programme écrit en langage C. Syntaxe : gpc nom_fichier.pas -o nom_fichier. Une manière
simple d’exécuter le fichier de sortie est de copier nom_fichier.exe dans les binaires de CygWin, puis de lancer
la commande nom_fichier depuis le terminal CygWin.
g77 : pour compiler un programme écrit en Fortran. Syntaxe : g77 nom_fichier.for -o nom_fichier. Une manière
simple d’exécuter le fichier de sortie est de copier nom_fichier.exe dans les binaires de CygWin, puis de lancer
la commande nom_fichier depuis le terminal CygWin.
gretl : pour lancer l’utilitaire d’analyse économtrique gretl. Ses fonctionnalités en mode graphique sont :
– la méthode des moindres carrées,
– les variables dépendantes discrètes ou tronquées,
– les statistiques descriptives,
– la méthode de Monte-Carlo et le bootstrap,
– l’exportation des résultats vers LATEX.
Il offre la possibilité de lancer le logiciel de statistique R et de soumettre des suggestions écrites dans d’autres
langages tels que fortran, c++, octave, matlab, gauss. Syntaxe : gretl &.
ghostview : pour lancer l’éditeur de fichier au format ps non compressé. Syntaxe : ghostview &.
gnome-art : pour lancer le sélecteur de thèmes pour les interfaces graphiques linux usuels. Syntaxe : gnome-art &.
gnuplot : pour lancer (dans le terminal) l’éditeur de graphiques (courbes, surfaces, interpolations) gnuplot. Syntaxe :
gnuplot.
grass62 : active un système information géographique d’analyse, de gestion de données géospatiales, de production de
cartographie. . . Syntaxe : grass62.
gv : pour lancer l’éditeur geomview de fichiers aux formats pdf, ps, pdf.gz ou ps.gz. Syntaxe : gv &.
kile : pour lancer l’éditeur (tout un environnement) dédié à LATEX 2ε . Syntaxe : kile nom_fichier.tex &.
k3b : pour lancer le programme de gravure interfaçant cdrecord. Syntaxe : k3b &. Il offre des fonctions avancées telles
que : l’oversize burning (réduction de la zone d’indication de la fin du cd-R), la gravure de cd textes etc.
latex : compile un fichier au format .tex. Syntaxe : latex nom_fichier.tex ou elatex nom_fichier.tex. Lorsque la
compilation s’arrête sur une erreur à corriger, x interrompt la compilation ; r ignore les fautes tout en poursuivant
la compilation de tout le fichier source ; la touche enter ignore la faute et se positionne sur la faute suivante.
bardiag.sty : un style LATEX 2ε , pour la réalisation des diagrammes en barres 2D et 3D. Il nécessite les packages
bardiag.bar, bardiag.cfg et pstfp.sty.
combine : classe dédiée à l’assemblage en un document unique cohérent d’un groupe de textes individuels,
tels que ceux exigés pour les actes d’une conférence. Il s’utilise avec les packages keyval, frenchle, combcite,
combinet et combnat.
dvips : crée un fichier au format ps à partir d’un fichier au format dvi. Options : -p .. -l ... pour ne créer
que les pages qui vont de .. à ... ; Syntaxe : dvips nom_fichier.dvi -o. Pour des impressions en mode paysage
(dans le cas des transparents par exemple), utiliser l’option -t landscape.
flow : pour réaliser un organigramme dans un environnement picture à importer dans un fichier au format
.tex, à partir d’un script .flo compatible avec le package-LATEX 2ε flow. Syntaxe : flow nom_f.flo nom_f.pic.
Pour l’installation du compilateur, exécuter gcc flow.c -o flow.exe sous Cygwin et gcc flow.c -o flow sous
Linux, puis déposer l’exécutable produit (le rendre executable, si nécessaire) dans le dossier /bin sous Cygwin et
/usr/bin sous Linux.
htlatex : convertit un fichier .tex au format .html. Syntaxe : mk4ht htlatex nom_fichier.tex [ nom_f.cfg ],
où nom_f.cfg est un fichier de configuration. Il existe une interface graphique dédiée dénommée SimpleTeX4ht.
moderncv : classe déidée à l’écriture de deux styles de curriculum vitæ. Elle est configurable à souhait et est li-
vrée avec des exemples dont on peut s’inspirer. Les sauts de page sont indiqués par \closesection{}\pagebreak{}
et une rubrique libre par \section{}\closesection.
oolatex : convertit un fichier .tex au format .odt. Syntaxe : mk4ht oolatex nom_fichier.tex. Il existe une
interface graphique dédié dénommée SimpleTeX4ht.
pstplus : pour lancer l’assistant permettant l’écriture de script-LATEX 2ε pstricks en mode graphique. Syntaxe :
pstplus &. Il est conçu pour la réalisation de courbes 2D résolubles en y, de tableaux de variations, de la figure
correspondante à la détermination graphique des premiers termes d’une suite récurrente, de figures géométriques,
d’arbres pondérés, de graphes orientés pondérés, de diagrammes en boîtes et d’histogrammes.
TEXgraph : pour lancer le créateur de graphiques mathématiques (courbes, surfaces, constructions géomé-
triques 2D/3D. . .) destinés à être utilisés dans des documents LATEX 2ε . Syntaxe : startTeXgraph. Le principe
de TEXgraph est de créer des éléments graphiques, chacun portant un nom, défini à partir d’une expression
écrite dans le langage de TEXgraph, et possédant des attributs (couleur, épaisseur. . .). Certains éléments sont
prédéfinis, comme la grille, les axes, les courbes paramétrées, les courbes poly-béziers, les splines, les équations
différentielles etc. Mais on peut aussi créer ses propres éléments graphiques, écrire ses propres fonctions (ou
macros) dans des fichiers (et les importer), et faire du dessin à la souris. L’installation de TEXgraph requiert la
librairie libgdk-pixbuf. En tant que root (ou non), exécutez le script ./install.sh pour installer TEXgraph dans
/usr/local/share/TeXgraph. http://texgraph.forumpro.fr/index.htm est un forum de discussion sur TEXgraph
et on trouvera sur http://melusine.eu.org/syracuse/texgraph plusieurs animations réalisées avec TEXgraph et
swftools.
texmaker : pour lancer l’éditeur dédié à LATEX 2ε . Syntaxe : texmaker nom_fichier.tex &. Ses versions Linux
et Mac incorporent automatiquement le compilateur latex2html.
TEXProject.sty : style de document pour la rédaction de manuels de gestion de projet. Il nécessite les packages
TeXProject.sty, DraTeX.sty, AlDraTeX.sty et wotree.sty, qui sont chargés par : input TeXProject.sty. Il per-
met : le découpage et la description du projet en termes de sous-projets, de tâches, de ressources et de phases de
projet, la représentation des composantes du projet telles que les dates, la main-d’œuvre, les dépendances, et la
visualisation du projet en réseau Pert (Program evaluation and review technique), en arbres hiérarchiques et en
diagrammes de Gantt.
umrand : pour activer l’extension-LATEX 2ε générant des motifs bordant les cadres (page de titre par exemple).
Syntaxe : \usepackage{umrand}. La définition des commandes suivantes \def\C{\char’}, \font\UA=umranda,
\font\UB=umrandb at 20pt et \font\G = umrandb at 20pt, permet l’accès aux fonctions d’encadrement RandBox,
LinienBox, MeanderBox, EinfachRand. . ..
xdvi : affiche le résultat de la compilation par la commande latex d’un fichier .tex. Syntaxe : xdvi fichier.dvi &.
L’option -s n. produit un affichage correspondant à la taille n..
Lazarus : un environnement de développement d’application (graphique et console) avec le langage Free Pascal.
Lodel : un outil de réalisation, de gestion et de mise en ligne de sites Web pour les périodiques scientifiques. Il permet
entre autres :
1. la conversion des textes d’un format traitement de texte à un format Web, via le styliste-Lodel (s’installe
comme un objet OLE) et Serv00 (se déclare par http://servoo.revues.org , login et mot de passe),
2. la gestion de l’hétérogénéité de types de publications,
3. l’offre de différents types d’accès au site créé, avec des droits différents, selon les types d’utilisateurs :
visiteur, rédacteur, éditeur, administrateur, administrateur Lodel,
4. l’existence de plusieurs statuts de publication : publié, publié protégé, brouillon, différé, prêt à être publier,
5. la génération automatique de l’ensemble des métadonnées dont les publications ont besoin pour être cor-
rectement identifiées, indexées et référencées, notamment par les moteurs de recherche.
Un serveur local est installé par : apache2, mysql-server, php5 et phpmyadmin. On copie alors dans son localhost
(dossier www du serveur installé) le site Lodel (http://localhost/nom_site), puis on déclare successivement :
Macaulay2 : un outil interactif libre dédié à la création scientifique en géométrie algébrique et algèbre commutative.
Syntaxe : M2. Les algorithmes de calculs implémentés dans Macaulay2 permettent la création et la manipulation
de tout type d’anneaux, les opérations arithmétiques sur les anneaux et les matrices, les résolutions projectives
de modules, la détermination des bases de Gröbner, le calcul des séries de Hilbert sur les anneaux gradués ou les
modules, le calcul de la cohomologie des faisceaux cohérents etc. Pour installer Macaulay2, ajouter au dépôt :
deb http://www.math.uiuc.edu/Macaulay2/Repositories/Ubuntu stable main.
medit : pour visualiser un maillage, et éventuellement des solutions associées. Syntaxe : medit nom_fichier_recup.
moodle : est un logiciel permettant la mise en ligne de parcours d’apprentissage collaboratif, favorisant un cadre de
formation socio-constructiviste. Un serveur local est installé par : apache2, mysql-server, php5 et phpmyadmin.
On copie alors dans son localhost (dossier www du serveur installé) le site moodle (http://localhost/nom_site),
puis on déclare successivement :
1. à partir de http://localhost/nom_site/install.php
2. la base Mysql (localhost, root, root),
3. le super utilisateur (login, mot-de-passe),
4. la mise à jour de la base,
5. le dépôt du fichier de francisation de l’interface : http://localhost/nom_site/lang/fr_utf8 ,
6. la lecture de la documentation sur http://docs.moodle.org/fr/Accueil.
nedit : pour lancer l’éditeur de texte brut nirvana editor. Syntaxe : nedit &.
OpenERP : pour la gestion intégrée, flexible et modulaire (PGI/ERP) dans tous secteurs pour l’ensemble des fonctions
d’organisation et de gestion des petites, moyennes et grandes entreprises : gestion commerciale, gestion des stocks
et des achats, comptabilité générale et analytique, logistique, production, relation client et fournisseur, ressources
humaines, finance, projet, portail client/fournisseur, gestion électronique de document (GED/DMS). OpenERP
offre un cadre de développement, c’est-à-dire des services techniques informatiques :
1. un serveur de base de données objet pour représenter et mémoriser les objets de gestion et les rendre
accessibles via le réseau ;
2. un workflow qui contrôle l’évolution des objets suivant une procédure ;
3. des formulaires et écrans pour l’interaction avec l’utilisateur ;
4. des états imprimables des objets.
Un module OpenERP est la définition, dans le framework OpenERP, d’une gestion informatisée d’un domaine :
soit d’une spécialité (la compta, la gestion de production), soit d’une activité (la confection, l’agro-alimentaire) ;
sans compter bien-sûr un module de base pour le b.a.ba de la gestion : les utilisateurs, les tiers, les produits, les
sociétés, etc. Il est donc impossible de dire ce que fait précisément OpenERP sans dire dans quel module. Par
exemple, le module ventes permet de définir ses clients, ses prix de produits, d’enregistrer des commandes, de les
imprimer, de les approvisionner et de les faire évoluer jusqu’à satisfaire le client.
Pour installer OpenERP, ajouter son dépôt à la source liste et activer la clé gpg avant de mettre à jour les dépôts
par apt-get update, puis suivre les instructions suivantes :
code
1 deb http://ftp.de.debian.org/debian sid main (depôt instable)
2 deb http://ubuntu.roomandspace.com/ hardy main
3 pg --keyserver pgpkeys.mit.edu --recv-key 1EF6441A18EA94C9
4 gpg -a --export 1EF6441A18EA94C9 | sudo apt-key add -
5
6 sudo apt-get install postgresql-8.3
7
8 sudo apt-get install python-xml python-libxml2 python-libxslt1 python-psycopg python-imaging
9 python-pyparsing python-reportlab graphviz postgresql python-tz python-pyopenssl
10 gs-gpl python-matplotlib python-setuptools xpdf phppgadmin python-turbogears
11 fetchmail phppgadmin python-turbogears fetchmail python-psycopg2 python-lxml
12 build-essential python2.4-dev python-pychart python-pydot
13
14 sudo apt-get install openerp-server openerp-client
15
16 sudo su postgres -c openerp-server
17 openerp-client (depuis un terminal)
Pour installer le serveur et le client GTK manuellement, exécuter les commandes python setup.py build et
sudo python setup.py install dans les dossiers dézippés correspondants téléchargés sur le site officiel de Ope-
nERP. Il existe une riche documentation sur OpenERP sur http://brochures.sisalp.fr.
pmb : est un système informatisé de gestion de bibliothèques (circulation, catalogage, autorités, éditions, diffusion sélec-
tive de l’information DSI, administration), avec une interface PHP/MySQL libre et opensource et téléchargeable
sur http://www.sigb.net. Un serveur local est installé par : apache2, mysql-server, php5, phpmyadmin et yaz,
ainsi que tous les modules PHP liés à barcode et image (php-image-barcode, php5-imagick, php5-recode, barcode
etc). On copie alors dans son localhost (dossier www du serveur installé) le site pmb (http://localhost/nom_site),
puis on déclare successivement :
1. à partir de http://localhost/nom_site/tables/install.php
2. la base Mysql (localhost, root, -),
3. le compte PMB (bibli, bibli, bibli),
4. le jeu d’exemples (à cocher),
5. le super utilisateur (admin, admin) pour la 1re connexion,
6. la mise à jour de la base (administration, outils, Maj base),
regina : pour le calcul en théorie des surfaces normales utilisant les procédures et algorithmes d’analyses topologiques
sur les variétés tri-dimensionnelles.
scenari : une suite logicielle libre de conception et d’utilisation de chaînes éditoriales numériques permettant la création
de documents multimédia à usage professionnel. Une chaîne éditoriale est un procédé technologique et méthodo-
logique, issu de la recherche en ingénierie documentaire. L’approche consiste à réaliser un modèle de document,
à assister les tâches de création du contenu et à automatiser leur mise en forme. L’intérêt est de réduire les coûts
de production et de maintenance des contenus, et de mieux contrôler leur qualité.
Pour installer Scenari, ajouter son dépôt à la liste des sources et activer la clé gpg avant de mettre à jour les
dépôts, puis installer depuis synaptic :
code
1 deb http://scenari-platform.org/deb nom_de_distrib main
2 gpg --keyserver subkeys.pgp.net --recv 57137EFADFD726C0
3 gpg --export --armor 57137EFADFD726C0 | sudo apt-key add -
scilab : pour lancer le logiciel de calcul numérique scilab. Syntaxe : scilab &.
scribus : pour lancer le logiciel scribus PAO de conception et de réalisation de magazines, bulletins, publicités, bro-
chures, calendriers et de création de documents PDF intelligents (formulaires, boutons, mots de passe, etc), en
y incorporant directement les script Java. Syntaxe : scribus &. Il fonctionne essentiellement par importation de
textes (.txt), d’images ou d’éléments graphiques dans des blocs indépendants (images, textes et polygones).
spip : est un système de publication sur Internet, adapté à tous types de site Web, avec une interface PHP/MySQL
libre et opensource. Un serveur local est installé par : apache2, mysql-server, php5 et phpmyadmin. On copie alors
dans son localhost (dossier www du serveur installé) le site spip (http://localhost/nom_site), puis on déclare
successivement :
1. à partir de http://localhost/nom_site/ecrire
2. la base Mysql (localhost, root, -),
3. le super utilisateur (surnom, login, mot-de-passe),
4. le téléchargement du squelette sur http://www.spip-contrib.net.
taskjuggler : est un logiciel de gestion de projet et un assistant à toutes les étapes du projet : estimation, assignation de
ressources, planification des coûts et revenus, gestion des risques, gestion des communications, gestion courante,
du déroulement et des échéances. Des manuels d’utilisation et des gabarits de départ y sont implémentés pour
aider à sa prise en mains. Taskjuggler comprend :
– des lignes de temps et la possibilité de créer différents scénarios pour un même projet
– des diagrammes
– la gestion des ressources, des contraintes et des coûts, avec des filtres de tâches et la programmation des horaires
– la gestion des responsabilités et des contacts
– l’analyse de risque, etc.
tkdesk : pour lancer le gestionnaire de fichiers sous X-Window tkdesk. Syntaxe : tkdesk &. La version légère de tkdesk
comprend une seule colonne. Elle est moins gourmande en ressources et on en vient souvent à l’utiliser pour les
actions courantes. Les opérations que l’on veut effectuer sur les différents fichiers peuvent être appelées de la
barre de menu, de la barre icône, ou du menu popup (déclenché par un clic du bouton droit sur le nom du
fichier, il propose les options les plus complètes, mettre une image en fond d’écran, ouvrir le fichier dans emacs ou
Netscape, suivant son extension...). De façon générale, on peut facilement copier, déplacer, supprimer, créer des
liens (symboliques ou pas), etc. Il est possible, entre autre, de choisir l’option Info, qui vous donnera accès à une
boite de dialogue vous indiquant le chemin d’accès du fichier, la date de dernière modification, le propriétaire,
son groupe, ses permissions, le nombre de liens hards pointant vers lui, son type. Vous pouvez même taper une
annotation, qui sera alors sauvegardée. Vous pouvez évidemment faire des recherches de fichiers basées sur leurs
annotations (avec expression régulière de plus). Il est aussi possible de compresser, éditer, d’exécuter. Et lorsque
la sélection est un repertoire, vous pouvez le traverser. C’est-à-dire que le sous-menu contiendra les noms de ses
sous-repertoires, et ainsi de suite, en cascade, jusqu’à ce que vous trouviez votre destination (c’est la navigation
rapide dans une arborescence). Les fichiers System et Sounds servent respectivement à paramétrer les couleurs,
les polices utilisées et autres paramètres de base pour le premier et à configurer la gestion des événements sonores
pour le deuxième. Quelques sons sont fournis.
tkdesk possède un éditeur intégré très ergonomique, qui gère les multiples buffers (même repartis sur plusieurs
fenêtres). On peut sélectionner le texte avec la touche shift enfoncée et en déplaçant les flèches, on copie avec
Ctrl-C, on coupe avec Ctrl-X et on colle avec Ctrl-V. Lors de l’édition des fichiers de configuration, la touche
F5 permet la sauvegarde et la prise en compte immédiate des modifications. La touche F6 a le même effet, à
ceci près que l’éditeur ferme ensuite le fichier (et passe automatiquement au prochain fichier, si on a lancé la
commande "éditer tous les fichiers de configuration"). Il faut noter aussi qu’il est possible de "lâcher" sur la barre
d’application des fichiers "attrapés" sur le gestionnaire de fichier (c’est le Drag&Drop). On peut donc envoyer une
image vers xv, ou un texte dans l’éditeur, ou encore un exécutable sur le bouton de l’aide, TkDesk ouvrira alors la
page man correspondante. Le fichier de configuration "AppBar" permet d’y ajouter de nouvelles icônes, que l’on
peut repartir en plusieurs colonnes. À ces icônes seront affectés des menus permettant l’exécution de programmes,
l’ouverture d’un répertoire, la redirection de la sortie d’un programme vers l’éditeur de texte, l’évaluation de la
taille d’un répertoire, l’exécution périodique d’un programme, etc.
vmware player : émule une machine virtuelle ou une image (.wmx) d’un système d’exploitation. Syntaxe : vmplayer &
et on suit les instructions.
winefish : pour lancer l’éditeur dédié à LATEX 2ε , basé sur l’environnement de développement web bluefish. Syntaxe :
winefish &.
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
13 2
14 Na 0.0 0.0 0.0 crystal_origin 0.0 0.0 0.0 crystal_images 5 5 5
15 Cl 2.5 2.5 2.5 crystal_vector 1 5.0 0.0 0.0 crystal_vector 2 0.0 5.0 0.0 crystal_vector 3 0.0 0.0
16
17 4
18 Avec une boite autour de la molecule d’eau
19 O 0.00000000 0.00000000 0.00000000 render_tube
20 H 0.76923955 0.00000000 -0.59357141 bbox_xyz -1.0 1.0 -0.5 0.5 -1.0 0.5
21 H -0.76923955 0.00000000 -0.59357141
22 C 2.33370000 -2.58660000 -0.59480000 render_ball_and_stick
L’unité de longueur est l’angström ; les 1res lignes de chaque panneau (4 panneaux dans l’exemple ci-dessus)
indiquent le nombre d’atomes constituant la molécule, la 2e ligne est un commentaire de description et les lignes
suivantes définissent le symbole et les coordonnées de chaque atome. Il est possible de tracer des vecteurs (3 au
maximum) s’appuyant sur un atome. Des animations peuvent être générées en mouvant d’un panneau à un autre
grâce au menu Control.
Aujourd’hui LATEX 2ε s’impose comme l’outil de traitement de texte universellement utilisé par tous les scientifiques
professionnels. LATEX 2ε est un ensemble de macros permettant à un auteur de mettre en forme son texte et ses équa-
tions mathématiques, avec la meilleure qualité typographique et en utilisant un format professionnel prédéfini. LATEX 2ε
nécéssite quelqu’efforts d’apprentissage dûs au fait que l’on est à la fois auteur, éditeur et typographe. Ce petit guide se
propose donc de résumer l’utilisation du programme LATEX 2ε et d’aider le débutant en introduisant quelques-unes des
commandes les plus courantes.
21
CHAPITRE 2. LE FORMATEUR DE TEXTE L
ATEX2ǫ 2.2. PRÉAMBULE D’UN TEXTE D’ENTRÉE L
ATEX2ǫ
La commande \documentclass indique le type de document que vous voulez produire. Ses principales options
sont : 11pt, 12pt, french (pour faire respecter les règles de typographie française, celles de l’anglais l’étant par défaut),
twoside (pour une impression recto-verso), a4 (règle la marge pour une impression au format A4), openright (pour
que les pages impaires soient imprimées en recto), landscape (pour une orientation en mode paysage, le mode portrait
étant activé par défaut) et ses principales classes sont article (pour les mini-rapports ; ne gère pas les chapitres),
report (pour les documents plus longs découpés en chapitres), book (pour les livres écrits en recto-verso), beamer (pour
les diaposives vidéoprojetées), letter (pour écrire des lettres), moderncv (pour les cirricula vitæ). Le préambule d’un
document LATEX 2ε est l’endroit où sont saisies les instructions non destinées à être imprimées mais qui influenceront le
style du document entier produit, telles que :
\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).
\chapter*{titre_preface} : confectionne une préface (avant-propos, remerciements) avec titre non numéroté.
\appendix : indique le début des annexes (chaque annexe commençant par chapter) et gère automatiquement leur
numérotation par des lettres A, B, C. . .
Les autres commandes de bases sont explicitées dans les sections qui suivent.
2.3.1 Accents
Mode texte Mode mathématique
á \’a \acute{a}
à \‘a \grave{a}
â \^a \hat{a}
ä \"a \ddot{a}
ã \~a \tilde{a}
ȧ \.a \dot{a}
ǎ \v a \check{a}
ā a \=a \bar{a} ou \overline{a}
ă \u a \breve{a}
a \b a \underline{a}
¯
a
⁀ \t a \stackrel{\frown}{a}
a̋ \H a
a. \d a
a̧ \c a
2.3.2 Tailles
Mode texte Mode mathématique
Pour une modification de taille sur plusieurs paragraphes, utiliser : \begin{nom_taille} ... \end{nom_taille}.
La 1re commence une nouvelle ligne et non un paragraphe, la 2e commence un nouveau paragraphe et la 3e laisse une
ligne blanche et commence un nouveau paragraphe. % met en commentaire, \footnote{...} met la note ... en bas de
la page où elle apparaît, \marginpar{texte_marge} met la note dans la marge à hauteur de la ligne où elle apparaît
et \thanks{...} met la note ... en bas de la page de titre (à utiliser exclusivement pour les auteurs). Lorsque l’appel
de note est inopérante dans un environnement, il faut placer son paramètre n à l’endroit par \footnotemark[n] et le
contenu de la note en dehors de l’environnement par \footnotetext{texte_note}. La commande \fbox{...} encadre
..., \fboxrule0.5mm fixe l’épaisseur du trait d’encadrement à 0.5cm et \fboxsep2mm fixe l’écartement entre le cadre et
son contenu à 2mm.
Il est possible de personnaliser les en-têtes et les pieds de pages en chargeant l’extension fancyhdr, en saisissant
dans le préambule les instructions définissant les contenus :
code
1 \pagestyle{fancy}
2 \fancyfoot[C]{\thepage}
3 \fancyfoot[RO]{\bf\tiny (UL, 2005)}
4 \fancyfoot[LE]{\bf\tiny (UL, 2005)}
5 \fancyhead[L]{\bf\tiny\leftmark}
6 \fancyhead[R]{\bf\tiny\rightmark}
7 \renewcommand{\headrulewidth}{0.01cm}
8 \renewcommand{\headwidth}{\textwidth}
9 \renewcommand{\headheight}{3cm}
où C désigne le centre de l’espace réservé pour composer l’en-tête ou le pieds de page ; L sa partie gauche ; R sa partie
droite ; O indique sa validité pour les pages recto ; E indique une spécification pour les pages verso ; \leftmark affiche
le numéro et le titre du chapitre courant ; \rightmark affiche le numéro et le titre de la section courante ; \headheight
fixe la hauteur de l’espace réservé à l’en-tête à la valeur indiquée ; \headwidth fixe l’épaisseur du trait séparant l’en-tête
et le corps du document à la valeur indiquée ; \headrulewidth fixe l’épaisseur du trait séparant l’en-tête et le corps du
document à la valeur indiquée.
2.3.4 Espacements
Mode texte Mode mathématique
\␣ \; ֒→ a b grand
\hspace{2cm} \: ֒→ a b moyen
\vspace{3cm} \, ֒→ a b petit
\\[5cm] \! ֒→ ab négatif
\hfil \quad ֒→ a b cadratin
\vfil \qquad ֒→ a b 2 cadratins
\hfill
\vfill
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).
2.3.5 Fontes
Il est possible de changer la police par défaut en chargeant dans le préambule l’une des extensions lmodern, fourier,
mathpazo, bookman, helvet, pslatex, newcent, avant, chancery, mathtime, mathptm, mathptmx, charter, euler, pifont
ou utopia. La famille (son allure), la série (son poids et sa largeur), la forme d’une fonte se gèrent dans le corps d’un
document LATEX 2ε par :
Le coloriage d’un texte, d’une boîte, de toutes les pages, de la bordure d’une boîte et la composition de nouvelles couleurs
se font alors respectivement par les syntaxes :
2.3.6 Environnements
\begin{nom_environnement} ... \end{nom_environnement} est la structure de tout environnement et les plus cou-
rants sont : titlepage (pour composer soi-même la page de garde sur une feuille séparée), center (pour centrer), minipage
(pour composer une page miniature à l’intérieur d’une page), \flushleft (pour justifier les lignes à gauche), \flushright
(pour justifier les lignes à droite), array (pour construire des tableaux avec contenus en mode mathématique), tabular
(pour construire des tableaux avec contenus en mode texte), verbatim (pour afficher comme saisi en entrée, verbatim*
marque les espaces), enumerate (pour les listes numérotées), itemize (pour les listes marquées), description (comme
dans un dictionnaire), verse (pour la poésie), equation (pour numéroter automatiquement les équations), figure (pour
titrer et labelliser un dessin importé), picture (pour définir et gérer un espace de positionnement d’objets importés
ou non ; l’unité de mesure doit être définie par \setlength{\unitlength}{1cm} dans le préambule), thebibliography
(pour confectionner la bibliographie), list (pour lister avec un symbole), table (référencement des tables), slide (pour
délimiter le contenu d’un transparent). Syntaxes :
---------------------------------------------------------------------
\begin{list}{$\clubsuit$}{} ; \begin{minipage}[p]{6cm}
\item ... ...
... \end{minipage}
\end{list}
---------------------------------------------------------------------
\begin{table}[b] ; \begin{picture}(12,6)[h]
\centering \put(1,4){...}
... ...
\label{ref} \end{picture}
\caption{titre}
\end{table}
---------------------------------------------------------------------
\left\{\begin{array}[h]{c@{,}lr|p{6cm}|}
... & ... & ... & ... \\
\hline ... & ... & ... & ... \\
\cline{1-3} ... & ... & ... & ... \\
\multicolumn{2}{r|}{...} & ... & ... \\
... & ... & ... & ...
\end{array}\right.
---------------------------------------------------------------------
z}|{ z}|{ z}|{ z}|{
\multicolumn agglomère en un seul plot plusieurs colonnes et prend |c|l|r|c| comme suit |c| l| r| c| ; l’ins-
truction p{...} fixe à ... la largeur de la colonne correspondante et compose la colonne en mode paragraphe haut ;
@{declaration} remplace l’espace inter-colonnes par declaration ; \left et \right ajuste les délimiteurs, (, ), [, ],
\{, \}, au contenu du tableau ; l’option t (qui indique que le haut du tableau soit positionné sur la ligne de texte) peut
être remplacée par b (qui indique que le bas du tableau soit positionné sur la ligne de texte) ou ommise (dans ce cas,
le tableau est centré sur la ligne de texte) ; | trace une ligne verticale de longueur la hauteur du tableau ; \hline trace
une ligne horizontale de longueur la largeur du tableau ; cline{1-3} trace un segment horizontal couvrant les colonnes
1 à 3 du tableau. L’ajout d’une barre oblique dans la première case d’un tableau se réalise en chargeant l’extension
slashbox, puis en saisissant la commande \backslashbox{..}{...} dans la 1re cellule. On peut aussi :
• fixer l’épaisseur du trait d’encadrement à 0.5mm avec \arrayrulewidth0.5mm.
• en chargeant l’extension array, avoir accès aux instructions m{...} (qui fixe à ... la largeur de la colonne
correspondante et compose la colonne en mode paragraphe centré), et b{...} (qui fixe à ... la largeur de la colonne
correspondante et compose la colonne en mode paragraphe bas).
• redéfinir les puces des environnements itemize ou enumerate en saisissant après la commande \begin{document}
l’instruction \renewcommand{\labelitemi}{nouv_commande} ou \renewcommand{\labelenum1}{nouv_commande}.
• colorier des pannels et lignes d’un tableau, à l’aide des packages colortbl et array qui définissent les commandes
\columncolor et \rowcolor. La syntaxe d’utilisation est :
code
1 \begin{tabular}{!{\color{green}\vline} >{\color{red}\columncolor[gray]{.7}}l|l !{\color{blue}\vline}}
2 ... & ... \\
3 \rowcolor[gray]{.9} ... & ... \\
4 ... & ...
5 \end{tabular}
qui produit :
... ...
... ...
... ...
Un document multicolonne s’obtient à l’aide du package multicol et sa mise en page s’opère de la façon suivante :
code
1 \usepackage{multicol}
2 \setlength{\columnsep}{...} % largeur de l’espace inter-colonnes
3 \setlength{\columnseprule}{...} % trait vertical de separation
4 \begin{document}
5 \begin{multicols}{nbre_col}[\section{titre}] % 1 < nbre_col < 10
6 ...
7 \end{multicols}
L’extension fancyvrb définit un environnement Verbatim configurable à souhait. Voici quelques paramètres usuels :
\begin{Verbatim}[numbers=left,frame=lines,framesep=3mm,label=\fbox{\emph{code}},rulecolor=\color{Blue}]
....
\end{Verbatim}
qui produit :
code
1 ....
2 ....
3 ....
\mathcal{...} CALLIGRAPHIE
\mathfrak{...} Euler Fraktur (nécessite le package amsfonts)
\mathbb{...} BLACKBOARD (nécessite le package amsfonts)
\mathversion{bold}$...$\mathversion{normal} ∀x ∈ R
Les environnements mathématiques usuels sont theorem (pour énoncer les définitions, théorèmes, lemmes. . .), equation
(pour numéroter automatiquement une assertion) et eqnarray (pour des formules sur plusieurs lignes numérotées au-
tomatiquement et saisies comme dans l’environnement array à trois colonnes). Ils peuvent tous être réferencés par la
commande \label{nom_reference} et cités dans le corps du document par \ref{nom_reference}, de même que la page
où ils apparaissent par \pageref{nom_reference}. Leur syntaxe est :
code
1 \begin{theorem} \label{nom_reference} ... \end{theorem}
définit l’environnement nommé defi, dont le titre sera Définition suivi de numero_chapitre.numero_definition. Pour
la numérotation, on peut aussi procéder par exemple comme suit :
code
1 \newtheorem{defi}{\textsc{D\’efinition} \thechapter.\thesection.}
Les lettres grecques s’écrivent exactement comme dans l’alphabet grec : \alpha ֒→ α ; \beta ֒→ β ; \gamma ֒→ γ ;
\Gamma ֒→ Γ ; \phi ֒→ φ ; \varphi ֒→ ϕ ; \Phi ֒→ Φ ; \psi ֒→ ψ ; \Psi ֒→ Ψ ; \epsilon ֒→ ǫ ; \varepsilon ֒→ ε ;
\theta ֒→ θ ; \vartheta ֒→ ϑ ; \Theta ֒→ Θ ; \pi ֒→ π ; \varpi ֒→ ̟ ; \rho ֒→ ρ ; \varrho ֒→ ̺ ; \sigma ֒→ σ ;
\varsigma ֒→ ς ; \upsilon ֒→ υ ; \Upsilon ֒→ Υ ; \omega ֒→ ω ; \Omega ֒→ Ω. . .
Les opérateurs binaires : \times ֒→ × ; \circ ֒→ ◦ ; \cup ֒→ ∪ ; \cap ֒→ ∩ ; \wedge ֒→ ∧ ; \vee ֒→ ∨ ; \ast ֒→ ∗ ;
\pm ֒→ ± ; \cdot ֒→ · ; \setminus ֒→ \ ; oplus ֒→ ⊕ ; \otimes ֒→ ⊗ ; \div ֒→ ÷ ; \neg ֒→ ¬ ; \models ֒→|=. . .
Les symboles de relation : \le ֒→≤ ; \ge ֒→≥ ; \in ֒→∈ ; \ni ֒→∋ ; \ll ֒→≪ ; \gg ֒→≫ ; \subset ֒→⊂ ; \supset
֒→⊃ ; \perp ֒→⊥ ; \ne ֒→6= ; \equiv ֒→≡ ; \sim ֒→∼ ; \simeq ֒→≃ ; \approx ֒→≈ ; a\equiv b \pmod{n} ֒→ a ≡ b
(mod n) ; \mid ֒→| ; \| ֒→ k . . .
Les flèches : \rightarrow ֒→→ ; (left, up, down, ne, se, nw, sw, updown, hookright, hookleft) ; \Rightarrow ֒→⇒ ;
\mapsto ֒→7→. . .
. .
Les symboles divers : \Im ֒→ ℑ ; \wp ֒→ ℘ ; \hbar ֒→ ~ ; \ldots ֒→ . . . ; \cdots ֒→ · · · ; \vdots ֒→ .. ; \ddots ֒→ . . ;
\forall ֒→ ∀ ; \exists ֒→ ∃ ; \not\exists ֒→6 ∃ ; \neg ֒→ ¬ ; \partial ֒→ ∂ ; \infty ֒→ ∞ ; \emptyset ֒→ ∅ ; \sum
P Q R H
֒→ ; \prod ֒→ ; \int_a^b f(x)\,dx ֒→ ab f (x) dx ; \oint ֒→ ; \langle ֒→ h ; \rangle ֒→i ; \left et \right
pour adapter les délimiteurs (, ), \{, \}, [, ] et . (invisible) à un contenu ; (\bigl,\bigr) ou (\Bigl,\Bigr) ou
(\biggl,\biggr) ou (\Biggl,\Biggr) pour fixer soi-même la taille du délimiteur. . .
code
1 \xymatrix{A \ar[d]^f \ar[dr]_g \ar[drr]|h & & \\ B & C \ar[r]|\hole & D}
produit :
A @P@PPPP
@@ PP
f @ hPPPP
g @
@ PPP
B C /' D
L’option h (ici) peut être remplacée par p (page séparée), t (haut de page) ou b (bas de page). La commande
figure~\ref{Sph} (saisie à l’endroit voulue) permet de faire référence à la figure correspondante dans le document.
Pour inclure un graphique plusieurs fois dans un document LATEX 2ε , il est conseillé (pour qu’il ne soit pas chargé
plusieurs fois) de le mettre en boîte dans le préambule, puis de l’appeler par :
code
1 \newsavebox{\nom_commande_de_sauvegarde}
2 \sbox{\nom_commande_de_sauvegarde}{\includegraphics{nom_graphique.eps}}
3 \begin{document}
4 \usebox{\nom_commande_de_sauvegarde}
5 \scalebox{h_scale}[v_scale]{\usebox{\nom_commande_de_sauvegarde}}
6 \resizebox{largeur}{!}{\usebox{\nom_commande_de_sauvegarde}}
7 \rotatebox{angle}{\usebox{\nom_commande_de_sauvegarde}}
8 \raisebox{hauteur}{\usebox{\nom_commande_de_sauvegarde}}
L’insertion d’un graphique dans la marge à côté d’un paragraphe s’opère par :
code
1 \usepackage{floatflt}
2 \begin{document}
3 \begin{floatingfigure}{largeur}
4 ...
5 \caption{titre}
6 \label{nom_graphique}
7 \end{floatingfigure}
Notons que l’instruction \hangindent=4cm force un retrait de 4cm par rapport à la marge gauche de tout un paragraphe,
et donc permet de disposer un graphique et un paragraphe côte à côte.
On peut substituer des séquences LATEX 2ε à des annotations alpha ou eqn1 figurant sur un graphique à l’aide de :
code
1 \usepackage{psfrag}
2 ...
3 {\psfrag{alpha}{$\alpha$}
4 \psfrag{eqn1}{$\int_0^\infty\frac{x^2yz}{x^\alpha}{\rm d}x$}
5 \includegraphics{figure.eps}}
4 \include{chap1}
5 \include{chap2}
6 \include{chap3}
7 \include{chap4}
8 \include{chap5}
Le travail est sectionné en six fichiers intro.tex, chap1.tex, chap2.tex, chap3.tex, chap4.tex et chap5.tex, plus
le fichier principal qui servira à la compilation. Ces six fichiers ne doivent contenir que le texte de chaque section (pas de
préambule, pas de \begin{document}, pas de \end{document}). La commande \includeonly{chap5} dans le préambule
stipule que seul le chapitre 5 doit être compilé tout en gardant les numérotations contenues dans le document principal
(comme si tout le document avait été compilé).
2.3.10 Bibliographie
Elle est réalisée dans le corps du document par :
code
1 \begin{thebibliography}{99}
2 \addcontentsline{toc}{chapter}{Bibliographie}
3 \bibitem[designation_reference_1]{nom_label_1} references1
4 \bibitem[designation_reference_2]{nom_label_2} references2
5 ...
6 \end{thebibliography}
La commande \cite{nom_label} permet de faire référence à l’ouvrage correspondant au label nom_label. La deuxième
ligne affiche Bibliographie dans la table des matières au format des chapitres. La syntaxe pour introduire une table
intermédiaire au niveau de chaque chapitre est la suivante :
code
1 \usepackage{minitoc}
2 \begin{document}
3 \dominitoc
4 \tableofcontents
5 ...
6 \chapter{titre_chapitre_1}
7 \minitoc
8 ...
9 \chapter{titre_chapitre_dernier}
10 \minitoc
Lorsqu’on dispose de bases de données bibliographiques, il est possible de générer automatiquement la bibliographie à
partir de celles-ci en utilisant le programme BibTEX. Une base de données bibliographiques est un fichier d’extension
.bib qui contient des entrées des types :
code
1 @BOOK @ARTICLE
2 { cle_ouvrage , { cle_ouvrage ,
3 AUTHOR = "..." , AUTHOR = "..." ,
4 TITLE = "..." , TITLE = "..." ,
5 PUBLISHER = "..." , JOURNAL = "..." ,
6 YEAR = "..." [ , YEAR = "..." [ ,
7 VOLUME = "..." , VOLUME = "..." ,
8 SERIES = "..." , NUMBER = "..." ,
9 ADDRESS = "..." , PAGES = "..." ,
10 EDITION = "..." , MONTH = "..." ,
11 MONTH = "..." , NOTE = "..." ]
12 NOTE = "..." ] }
13 }
code
1 @INPROCEEDINGS @MANUAL
2 { cle_ouvrage , { cle_ouvrage ,
3 AUTHOR = "..." , TITLE = "..." [ ,
4 TITLE = "..." , AUTHOR = "..." ,
5 BOOKTITLE = "..." , ORGANIZATION = "..." ,
6 YEAR = "..." [ , ADDRESS = "..." ,
7 EDITOR = "..." , EDITION = "..." ,
8 VOLUME = "..." , MONTH = "..." ,
9 SERIES = "..." , YEAR = "..." ,
10 PAGES = "..." , NOTE = "..." ]
11 ADDRESS = "..." , }
12 MONTH = "..." ,
13 ORGANIZATION = "..." ,
14 PUBLISHER = "..." ,
15 NOTE = "..." ]
16 }
Un ouvrage de la base de données (composée par les fichiers nom_fichier1,nom_fichier2,...) est alors cité dans
le document d’entrée par \cite{cle_ouvrage} et la bibliographie est composée à l’endroit voulue en y saisissant les
instructions :
code
1 \addcontentsline{toc}{chapter}{Bibliographie}
2 \bibliographystyle{nom_style}
3 \bibliography{nom_fichier1,nom_fichier2,...}
4 \nocite{cle_ouvrage_non_cite1,cle_ouvrage_non_cite2,...) ou \nocite{*}
où la commande \nocite insère dans la bibliographie un ouvrage non cité dans le document LATEX 2ε , et nom_style peut
prendre les valeurs plain (pour trier les ouvrages dans l’ordre alphabétique et les étiqueter par des nombres), unsrt
(pour trier les ouvrages dans l’ordre de leur citation et les étiqueter par des nombres), alpha (pour trier les ouvrages
dans l’ordre alphabétique et les étiqueter par des chaînes de caractères formées à partir du nom de l’auteur et de l’année
de publication) et abbrv (pour trier les ouvrages dans l’ordre alphabétique et les étiqueter par des nombres, mais les
prénoms, noms de mois et de journaux sont abrégés). Pour citer chaque référence suivant sa langue et gérer plusieurs
auteurs, utiliser les instructions :
code
1 \usepackage{babelbib}
2 \usepackage[german,english,french]{babel} % la dernière langue citée en option, étant celle du document
3 ...
4 \begin{document}
5 \bibliographystyle{babplain-fl [,babalpha-fl,babunsrt-fl,bababbrv-fl]}
et dans le fichier .bib, utiliser pour chaque référence l’une des syntaxes suivantes, selon la circonstance :
code
1 author = {prénom particule nom},
2 author = {prénoms1 particule1 nom1 and prénoms2 particule2 nom2 and ... and others},
3 author = {particule nom, prénom},
4 author = {particule nom, extension, prénom},
5 ...
6 language = {nom_langue_reference},
7 url = {lien-URL-reference},
Il ne reste plus qu’à compiler le document d’entrée par latex fichier.tex, puis par BibTEX avec bibtex fichier, et
enfin deux fois par latex fichier.tex. Il existe de nombreux autres styles de bibliographie et de types d’entrées dans
un fichier .bib.
2.3.11 Index
On charge le package makeidx et la commande \makeindex dans le préambule ; ensuite on réalise chaque entrée de
l’index en saisissant \index{mot_entree} juste après le mot à faire entrer dans l’index ; puis on saisit la commande
\printindex à l’endroit où l’on veut insérer l’index ; enfin on compile le document d’entrée comme suit :
code
1 latex nom_fichier.tex
2 makeindex nom_fichier.idx
3 latex nom_fichier.tex
pour afficher l’index dans le document final. Les exemples de clés d’index sont :
2.3.12 Glossaire
On charge le package \usepackage[cols=3,toc=true,hyper=true]{glossary} et la commande \makeglossary dans
le préambule ; ensuite on réalise chaque entrée du glossaire en saisissant \glossary{name={...},description={...}}
juste après le mot à faire entrer dans l’index ou \xglossary{name={...},description={...}}{mot_a_indexer}. Puis on
saisit la commande \printglossary à l’endroit où l’on veut insérer le glossaire ; enfin on compile le document d’entrée
comme suit :
code
1 latex nom_fichier.tex
2 makeindex -t nom_fichier.glg -o nom_fichier.gls -s nom_fichier.ist nom_fichier.glo
3 latex nom_fichier.tex
2.4 Organigrammes
Ils sont confectionnés dans un environnement picture à importer dans un fichier .tex, à partir d’un script .flo
compatible avec le package-LATEX 2ε flow. La syntaxe d’utilisation est : flow nom_f.flo nom_f.pic. Pour l’installation
du compilateur, exécuter gcc flow.c -o flow.exe sous Cygwin et gcc flow.c -o flow sous Linux, puis déposer l’exé-
cutable produit (le rendre exécutable, si nécessaire) dans le dossier /bin sous Cygwin et /usr/bin sous Linux. Dans un
script .flo (qui se termine par une ligne blanche), les commentaires sont précédés du symbole %, toutes les commandes
sont saisies après un retour chariot sans alinéa et les contenus des boîtes après un retour chariot suivi d’un
alinéa. L’unité de mesure est spécifiée dans le fichier .tex récepteur par \setlength{\unitlength}{2em}. Par défaut,
une boîte de l’organigramme a pour dimensions 4 et 2, hormis les losanges qui ont pour diagonales 4 et 4. La longueur
par défaut d’un trait de connexion est de 1. La fin d’un trait de contournement d’une ou de plusieurs boîtes est indiquée
par *.
Les boîtes.
Box [x y] : rectangle de longueur x et de largeur y.
Oval [x y] : rectangle à coins arrondis de longueur x et de largeur y.
Tilt [x y] : parallélogramme de longueur x et de hauteur y.
Text [x y] : cadre invisible de longueur x et de largeur y.
Choice [A B C D x y] ou Choice [A . C . x y] : losange à diagonales x et y, et à sommets annotés (pré-
ordonnés).
Les directions.
SetTrack none [arrow line] : connecte les boîtes par rien, une flèche ou un trait respectivement.
Right : aligne les boîtes qui le suivent horizontalement vers la droite.
Left : aligne les boîtes qui le suivent horizontalement vers la gauche.
Up : aligne les boîtes qui le suivent verticalement vers le haut.
Down : aligne les boîtes qui le suivent verticalement vers le bas (c’est la disposition par défaut).
Les positionnements.
TxtPos P1 P2 [~ ~] : positionne le contenu d’une boîte, avec P1 (pour les lignes de texte) et P2 (pour tout le
contenu) mis pour [l], [r], [c]. Le symbole ~ définit un alinéa en début ou fin de ligne.
Tag : stocke en mémoire le positionnement et la taille de la boîte qui le précède dans l’organigramme.
ToTag : retourne récursivement à la position repérée par Tag.
Les traits de contournement.
Right n [*] : segment de longueur n orienté vers la droite.
Left n [*] : segment de longueur n orienté vers la gauche.
Up n [*] : segment de longueur n orienté vers le haut.
Down n [*] : segment de longueur n orienté vers le bas.
Les redimensionnements.
Scale m n : multiplie les dimensions de la boîte qui le suit par m et n respectivement.
Skip m n p q : redéfinit par m et n, les inter-espaces (horizontal et vertical) entre boîtes et multiplie les dimensions
des segments de contournements par p (pour Right et Left) et q (pour Up et Down).
Un exemple.
Toutes les possibilités de tracé y sont représentées :
code
1 Box
2 Contenu 1
3 Oval
4 Contenu 2
5 Tag
6 Box
7 Contenu 3
8 Down 1
9 Box
10 Contenu 4
11 Choice . . Y N
12 Contenu 5
13 Tag
14 Down 1
15 Choice . . Y N
16 Contenu 6
17 Tag
18 Down 1
19 Choice . N . Y
20 Contenu 7
21 Tag
22 Oval
23 Contenu 8
24 ToTag
25 Left 3
26 Up 2
27 Box
28 Contenu 9
29 Box
30 Contenu 10
31 Up 10
32 Right 5 *
33 ToTag
34 Right 1
35 Box
36 Contenu 11
37 Down 2
38 Left 6 *
39 ToTag
40 Right
41 Box
42 Contenu 12
43 Tilt
44 Contenu 13
45 Box
46 Contenu 14
47 Down 2
48 Left 15 *
49 ToTag
50 SetTrack none
51 Down 2
52 Right 8
53 TxtPos [l] [l]
54 Text
55 \textbf{Contenu 15} :
56 exemple d’organigramme
57 avec le package flow
58 sous {\color{DarkOrchid} \LaTeXe}.
Contenu 1
?
Contenu 2
? Contenu 15 :
exemple d’organigramme
Contenu 3 avec le package flow
sous LATEX 2ε .
-
?
Contenu 4
?
@
@
Y
Contenu 5 @ - - -
Contenu 12 Contenu 13 Contenu 14
@
@
@ N
?
@
Contenu 10 @
Y -
Contenu 6 @ Contenu 11
6 @
@
Contenu 9 @ N
6
?
@
@
N
Contenu 7 @
@
@
@ Y
?
Contenu 8
8 \CenterWallPaper{1.05}{entete.eps}
9 \wpXoffset-2.5cm
10 \wpYoffset-2cm
11 ...
12 \begin{document}
13 ...
14 \begin{figure}[!htbp]
15 \centering
16
17 \renewcommand{\ActiveBarPrimitive}{\barTDRect}
18 \renewcommand{\frameTD}{1}
19 \renewcommand{\tdx}{0.5}
20 \renewcommand{\tdy}{6}
21
22 \def\onecol{green}
23 \def\twocol{blue}
24 \def\threecol{red}
25 \def\fourcol{yellow}
26 \def\fivecol{brown}
27 \def\sixcol{pink}
28
29 \newpsstyle{diagframestyle}{linewidth=1pt,linecolor=black,fillcolor=white}
30
31 %\bardiagrambegin{diagheight}{diagwidth}{bottomheight}{dbar}{dx}{xunit}{yunit}
32 \bardiagrambegin{17}{500}{3.5cm}{1}{7}{0.7cm}{0.015cm}
33
34 \renewcommand{\barlabelangle}{30}
35
36 \baritem{En poste (6)}{6}{\onecol}
37 \subbaritem{Anciens (1)}{1}{\twocol}
38 \subbaritem{Comptes-services (49)}{49}{\threecol}
39 \subbaritem{Comptes-syst\‘eme (15)}{15}{\fourcol}
40 \subbaritem{Mentions-AUF (4)}{4}{\fivecol}
41 \subbaritem{Enfants-UL (3)}{3}{\sixcol}
42 \baritem{Organismes (9)}{9}{\onecol}
43 \subbaritem{Comptes non-expir\’es-UL}{179}{\twocol}
44 \subbaritem{\textcolor{red}{Comptes expir\’es-UL}}{461}{\threecol}
45 \subbaritem{Etudiants-FOAD (11)}{11}{\fourcol}
46 \subbaritem{Visiteurs (3)}{3}{\fivecol}
47 \subbaritem{Retrait\’es-UL (3)}{3}{\sixcol}
48 \baritem{En poste (9)}{9}{\onecol}
49 \subbaritem{Anciens (4)}{4}{\twocol}
50 \subbaritem{Universit\’e de Kara (2)}{2}{\threecol}
51
52 \bardiagramend{\begin{tabular}{x-annotation}{y-annotation}
53 \end{figure}
54 ...
55 \end{document}
7 ...
8 \begin{document}
9 \begin{slide} ... \end{slide}
10 ...
11 \begin{note} ... \end{note}
12 \end{document}
code
1 \documentclass[a4,landscape,french]{seminar}
2 \usepackage[dvips]{graphicx}
3 \usepackage[usenames]{color}
4 \usepackage{pstricks,fancybox,fancyhdr,semcolor,slidesec,thumbpdf,babel}
5 \input{dvipsnam.def}
6 \input{seminar.bug}
7 \input{seminar.bg2}
8 \slidewidth15cm
9 \slideheight10cm
10 \slidesmag{taille} % taille entre -5 et 9, le d\’efaut est 4
11 \slideframe{style_encadrement}
12 \newcommand{\SlideColours}[1]{\slideframe[\psset{fillcolor=#1,fillstyle=solid}]{scplain}}
13 \SlideColours{nom_couleur_de_fond}
14 \newslideframe{IMAGE}{\boxput{\rput(0,0){\includegraphics[...]{nom_image_de_fond.eps}}}{#1}}
15 \slideframe*{IMAGE}
16 \graphicspath{{/chemin1_graphiques}{/chemin2_graphiques}}
17 \setslidelength{\unitlength}{...}
18 \renewcommand{\slidestretch}{2} % doubler l’interligne
19 \slidepagestyle{fancy}
20 \renewcommand{\headrulewidth}{0.0cm}
21 \renewcommand{\headwidth}{\textwidth}
22 \fancyfoot[C]{\thepage}
23 \fancyfoot[R]{\bf\tiny nom_auteur, affiliation_auteur}
24 ...
25 \begin{document}
26 \begin{slide}
27 \slideheading{titre_section}
28 \slidesubheading{titre_sous-section}
29 ...
30 \end{slide}
31 \begin{slide*} ... \end{slide*}
32 \begin{slide*}[15cm,10cm] ... \end{slide*}
33 ...
34 \begin{note} ... \end{note}
35 \end{document}
L’astérisque (slide*) permet d’inclure des transparents en mode portrait. Les styles d’encadrements sont : none, plain,
shadow, double, oval (ou scplain, scshadow et scdouble, lorsque l’extension semcolor est chargée). La nouvelle com-
mande \SlideColours permet de choisir la couleur de fond des transparents. Et IMAGE permet de définir une image en
toile de fond des transparents. Il faut prendre soin :
• qu’il n’y ait pas de commandes de hiérarchisation (pour la classe slides),
• qu’il n’y ait pas de commandes créant des flottants (pour la classe slides),
• qu’il n’y ait pas de commandes gérant des sauts de pages (pour la classe slides)
• et de compiler comme suit :
code
1 latex nom_fichier.tex
2 dvips -t landscape nom_fichier.dvi -o
3 ps2pdf nom_fichier.ps
Il est également possible de produire des transparents avec un affichage incrémental comme avec PowerPoint, avec la
classe beamer, qui nécéssite l’installation des extensions pgf (pour la gestion des graphiques) et xcolor (pour la gestion
des couleurs). La syntaxe d’utilisation est la suivante :
code
1 \documentclass[[trans | handout],xcolor=dvipsnames,bigger,hyperref=colorlinks]{beamer}
2 \title[...]{...}
3 \subtitle[...]{...}
4 \author[...]{...}
5 \institute{...}
6 \date{... \\ \pgfimage[width=3cm,height=3cm,angle=00]{nom_sans_extension}}
7 \titlegraphic{\includegraphics[...]{...}}
8 \subject{...}
9 \keywords{...}
10
11 \usetheme{JuanLesPins}
12 %\usetheme[hideothersubsections,width=...,height=...,left]{Goettingen}
13 \usecolortheme{orchid}
14 \usefonttheme[onlysmall]{structurebold}
15 \useinnertheme{rounded}
16 \useoutertheme{shadow}
17
18 \pgfdeclareimage[height=96mm,width=128mm]{nombidon}{ploum}
19 \setbeamertemplate{background}{\pgfuseimage{nombidon}}
20 \logo{\includegraphics[height=...,width=...,angle=...]{sixtu.ps}}
21
22 \setbeamercolor{title}{fg=,bg=Blue!30}
23 \setbeamercolor{author}{fg=BrickRed}
24 %\setbeamercolor{background canvas}{bg=...}
25 \setbeamercovered{transparent}
26 %\setbeamercovered{highly dynamic}
27 \setbeamertemplate{itemize item}{$\clubsuit$}
28 \setbeamertemplate{background canvas}[vertical shading][bottom=white!10,top=yellow!10]
29 %\setbeamertemplate{background canvas}[horizontal shading][left=white!10,right=yellow!10]
30 \setbeamerfont{headline}{family=\sf,series=\bf}
31 \setbeamersize{headline}{\tiny}
32
33 %\AtBeginSection[]{\frame{\frametitle{Sommaire}\tableofcontents[current]}}
34
35 \usepackage{pgf,fancybox,colortbl,multimedia}
36 \input{dvipsnam.def}
37
38 \begin{document}
39 \begin{frame} \titlepage \end{frame}
40 \begin{frame}{...} \tableofcontents[pausesections,pausesubsections] \end{frame}
41 \part{...}
42 \section{...}
43 \subsection{...}
44 \begin{frame}[t,c,l,r,fragile,label=identifiant_feuillet]
45 \frametitle{... \dotfill \insertpagenumber} \framesubtitle{...}
46 \tableofcontents[pausesections]
47
48 \begin{itemize}[<+-| @alert+>]
49 \item<n> ... \item<n-> ... \item<n-m> ... \pause ... \item ...
50 \uncover<n-m>{...} \only<n-m>{...} \invisible<n-m>{} \alt<n-m>{}
51 \end{itemize}
52
53 \begin{block}{...} ... \end{block}
54 \begin{alertblock}{...} ... \end{alertblock}
55 \begin{exampleblock}{...} ... \end{exampleblock}
56
57 \begin{columns}[T]
58 \begin{column}{3cm} ... \end{column}
59 \begin{column}{7cm} ... \end{column}
60 ...
61 \end{columns}
62
63 \alert{...}
64 \structure{...}
65
66 \begin{definition} ... \end{definition}
67 \begin{theorem} ... \end{theorem}
68 \begin{lemma} ... \end{lemma}
69 \begin{example} ... \end{example}
70 \begin{examples} ... \end{examples}
71 \begin{corollary} ... \end{corollary}
72 \begin{proof} ... \qedhere \end{proof}
73
74 \label{identifiant_feuillet}
75 \hyperlink{identifiant_feuillet}{\beamerbutton{...}}
76 \hyperlink{identifiant_feuillet}{\beamergotobutton{...}}
77 \hyperlink{identifiant_feuillet}{\beamerreturnbutton{...}}
78 \hyperlink{identifiant_feuillet}{\beamerskipbutton{...}}
79
80 \begin{tabular}{lcccc}
81 Class & A & B & C & D \\\hline
82 X & 1 & 2 & 3 & 4 \pause\\
83 Y & 3 & 4 & 5 & 6 \pause\\
84 Z & 5 & 6 & 7 & 8
85 \end{tabular}
86
87 \begin{tabular}{lc<{\onslide<2->}c<{\onslide<3->}c<{\onslide<4->}c<{\onslide}c}
88 Class & A & B & C & D \\
89 X & 1 & 2 & 3 & 4 \\
90 Y & 3 & 4 & 5 & 6 \\
91 Z & 5 & 6 & 7 & 8
92 \end{tabular}
93
94 \end{frame}
95
96 \appendix
97 \end{document}
L’extension extsize définit les options (8pt, 9pt, 10pt, 14pt, 17pt, 20pt) de \documentclass fixant la taille des caractères.
Les commandes \section, \subsection (à placer à l’extérieur de l’environnement frame) servent uniquement à créer
le sommaire visible dans la bande de navigation. L’option hideothersubsections n’affiche dans la barre de navigation
que les sous-sections de la section courante, les autres étant cachés. L’environnement block permet de donner un titre
à un ensemble de lignes d’un transparent. L’instruction \pause sépare les couches à afficher successivement sur le
même transparent et \item<n-> induit l’affichage du contenu sur le ne transparent et les suivants. Les codes verbatim
doivent être insérés dans \begin{frame}[fragile] ... \end{frame}. Pour obtenir une version imprimée, utiliser le
mode \mode<handout>. Pour obtenir une version rétro-projetée, utiliser le mode \mode<trans>. Les autres outils utilisés
dans l’affichage incrémental sont : \only, \uncover, \alt, \temporal et les arguments optionnels ajoutés entre < et >
par la classe beamer à toutes les commandes LATEX 2ε . Il faut compiler comme suit : pdflatex nom_fichier.tex ou
code
1 latex nom_fichier.tex
2 dvips -t landscape -P pdf nom_fichier.dvi -o
3 ps2pdf nom_fichier.ps
Pour une bonne gestion des formules par le moteur TEX4ht, les environnements mathématiques doivent être spécifiés
par \(...\) et \[...\] en lieu et place de $...$ et $$...$$ respectivement.
8 \Configure{tableofcontents}{avant}{fin}{apres}{\HCode{<H3><FONT size="1">}}{\HCode{</FONT></H3>}}
9
10 \begin{document}
11
12 \Css{div.author {font-family: ...;}}
13
14 \Css{H1 {font-family: ...; color: ...; font-size: ...; background: ...;}}
15 \Css{H2 {font-family: ...; color: ...; font-size: ...; background: ...;}}
16 \Css{H3 {...}} % correspond a section
17 \Css{H4 {...}} % correspond a subsection
18 \Css{H5 {...}}
19 \Css{H6 {...}}
20 \Css{BODY {...}}
21
22 \EndPreamble
29
30 \vspace{1cm}
31
32 \begin{center}
33 \includegraphics[height=10cm,width=10cm,angle=00.0]{daniel.eps}
34 \end{center}
35
36 \clearpage
37 \tableofcontents
38
39 \clearpage
40 \section{Avant-propos}
41 \label{intro}
42 [ ... ]
43
44 \section{Remerciements}
45 \label{remer}
46 [ ... ]
47
48 \begin{papers}
49
50 \coltoctitle{titre_art1}
51 \coltocauthor{auteur_art1}
52 \titlehead{auteur_art1, titre_art1}
53 %\published{Publi\’e dans ...}
54 \label{art1}
55 \import{nom_dossier_art1/art1}
56
57 \coltoctitle{titre_art2}
58 \coltocauthor{auteur_art2}
59 \titlehead{auteur_art2, titre_art2}
60 %\published{Publi\’e dans ...}
61 \label{art2}
62 \import{nom_dossier_art1/art2}
63
64 ...
65
66 \end{papers}
67
68 \end{document}
14
15 \def\ConTeXt{C\kern-.0333emo\kern-.0333emn\kern-.0667em\TeX\kern-.0333emt}
16 \definecolor{see}{rgb}{0.5,0.5,0.5}
17
18 \begin{document}
19 \maketitle
20 \makequote
21
22 \section{Centres d’int\’er\^ets}
23 \cvitem{}{}
24
25 \section{Instruction}
26 \cventry{annee}{diplome}{transcription}{institution}{note}{mention}
27
28 \section{These / memoire}
29 \cvitem{titre}{...}
30 \cvitem{superviseur(s)}{...}
31 \cvitem{description}{\footnotesize ...}
32
33 \section{Autres qualifications}
34 \cventry{date}{}{}{}{}{}
35
36 \section{Exp\’erience professionnelle}
37 \cventry{date $\to$}{responsabilite}{}{}{}{}
38
39 \section{Comp\’etences informatiques}
40 \cvcomputer{OS}{...}{administration}{...}
41 \cvcomputer{bureautique}{...}{diapositives}{...}
42 \cvcomputer{sciences}{...}{graphes}{...}
43 \cvcomputer{stylique web}{...}{exerciseurs}{...}
44 \cvcomputer{IST}{...}{base de donn\’ees}{...}
45
46 \section{Travaux d’\’etudes et de recherches}
47 \cventry{}{}{}{}{}{}
48
49 \section{Conf\’erences}
50 \cventry{}{titre_conference}{}{}{}{}
51 \cvlistitem{}
52 \cvlistdoubleitem{}{}
53
54 \section{Projets principaux}
55 \cventry{annee}{titre_projet}{}{}{}{}
56
57 \section{Langues}
58 \cvlanguage{...}{Langue d’usage}{Parl\’ee, \’ecrite, lue et comprise}
59
60 \section{}\closesection
61 \hfill \begin{tabular}{r} Lom\’e, le \today \\
62 \includegraphics[width=3cm,height=1.5cm,angle=00.0]{signature.eps} \\
63 \underline{Pr\’enom \textsc{Nom}} \end{tabular}
64
65 \end{document}
\defproject{label}{nom}{liste-elts}{liste-pre}{description}
\defmilestone{label}{nom}{date}{liste-pre}{description} % phases
\deftask{label}{nom}{debut}{fin}{liste-contr:role}{liste-pre}{description} % taches
code
1 \newproject
2
3 \defmilestone{m1}{Announcement}
4 {27/02/95}
5 {}
6 {You read the WWW announcement.}
7
8 \deftask{t1.1}{FTP}
9 {28/02/95}{01/03/95}
10 {you:10}
11 {}
12 {You ftp the .sty files, manuals and examples.}
13
14 \deftask{t1.2}{Test}
15 {01/03/95}{02/03/95}
16 {you:60}
17 {t1.1}
18 {You test the system locally.}
19
20 \deftask{t1.3}{Installation}
21 {02/03/95}{03/03/95}
22 {system~engineer:30}
23 {t1.2}
24 {You ask your system engineer to install the package for your center.}
25
26 \defproject{t1}{Package}
27 {t1.1,t1.2,t1.3}
28 {m1}
29 {You get and install the package.}
30
31 \deftask{t2.1}{Manual}
32 {01/03/95}{04/03/95}
33 {you:10}
34 {t1.1}
35 {You review the manual and examples.}
36
37 \deftask{t2.2}{Ask}
38 {27/02/95}{04/03/95}
39 {you:5,someone:5}
40 {}
41 {You communicate with others.}
42
43 \deftask{t2.3}{Experiment}
44 {03/03/95}{04/03/95}
45 {you:30}
46 {t1.2}
47 {You set up a small example.}
48
49 \defproject{t2}{Help}
50 {t2.1,t2.2,t2.3}
51 {m1}
52 {You get to know the system.}
53
54 \defmilestone{m2}{Usage}
55 {04/03/95}
56 {t1}
57 {You can use TeXProject.}
58
59 \defproject{texproject}{TeXProject}
60 {m1,t1,t2,m2}
61 {}
62 {Welcome to TeXProject.}
63
64 \endnewproject
Tous les éléments de définition du projet sont reutilisables dans la rédaction du projet avec LATEX 2ε , à l’aide des
primitives :
\annotation{label} \name{label}
\resource{label} \effort{label}
\effort{label,contributeur} \contributions{label}
\start{label} \finish{label}
code
1 Le projet s’appelle \name{texproject}.
2 Il d\’ebute le \start{texproject} et s’ach\‘eve le \finish{texproject}.
3 Il implique les ressources suivantes : \resource{texproject}.
4 Il mobilise un nombre total de \effort{texproject} personnes-minutes.
5 L’apport de \verb|you| est de \effort{texproject,you} minutes.
Les différentes représentations du projet se réalisent dans l’environnement \Draw ... \EndDraw et avec l’aide
des commandes (Al)DraTEX suivantes :
code
1 \Draw
2 \Scale(0.8,1)
3 \TreeSpace(C,3,20)
4 \treediagram(texproject)
5 \EndDraw
TeXProject
code
1 \Draw
2 \TreeAlign(H,-1,0)(0,0,0)
3 \treediagram(texproject)
4 \EndDraw
Announcement
FTP
Package Test
Installation
TeXProject
Manual
Help Ask
Experiment
Usage
Graphes de PERT
La représentation du projet en réseau PERT (formalisation des tâches sur les nœuds de l’arbre) s’effectue par :
\pertdiagram(label).
code
1 \Draw
2 \pertdiagram(texproject)
3 \EndDraw
Announcement Help
Package
Usage
code
1 \Draw
2 \ArrowHeads(1)
3 \adjustpert(t1,30 & m2,-30 )
4 \pertdiagram(texproject)
5 \EndDraw
Announcement Help
Package
Usage
code
1 \Draw
2 \pertnodestyle{\annotation{#1}}
3 \pertdiagram(texproject)
4 \EndDraw
code
1 \Draw
2 \ArrowHeads(1)
3 \pertlimits(,1)
4 \pertdiagram(texproject)
5 \EndDraw
Announcement Help
Package
Usage
Help Announcement
code
1 \Draw
2 \ArrowHeads(1)
3 \Define\externalnode(1){
4 \filtercommand\name{#1}
5 \Node(#1)(--\putcommand--)}
6 \pertlimits(,1,\externalnode,\par$\bigoplus$\par)
7 \pertdiagram(texproject)
8 \EndDraw
Help
Announcement
Package
Usage
L
Announcement
Help
La commande effortchart(label) permet la visualisation des ressources qui interviennent sur le projet, leurs rôles
d’affectation et leurs avancées dans la réalisation des tâches attribuées.
code
1 \Draw
2 \Scale(1,0.8)
3 \effortchart(texproject)
4 \EndDraw
someone
Help
you
you
Package
system engineer
0 35 70.0
code
1 \Draw
2 \Scale(1,0.6)
3 \effortchart(texproject,,,,2)
4 \EndDraw
Experiment you
someone
Ask
you
Manual you
Test you
FTP you
0 30 60
code
1 \Draw
2 \Scale(1,0.6)
3 \effortlimits(2)
4 \effortchart(texproject,,,,2)
5 \EndDraw
Experiment you
someone
Ask
0 30 60
you
Manual you
0 30 60
Test you
0 30 60
FTP you
0 30 60
code
1 \Draw
2 \Scale(1,0.7)
3 \effortstyle(A,3,7,0,0,12)
4 \effortchart(texproject,02/03/95,03/03/95,,3)
5 \EndDraw
Experiment you
someone
Ask
you
Manual you
Test you
0 30 60
code
1 \Draw
2 \schedulechart(texproject,,,,99) % \schedulestyle(A,2.5,7.5,3,0,$\otimes$,70)
3 \EndDraw
Announcement ⊗
FTP
Test
Installation
Manual
Ask
Experiment
Usage ⊗
27/02/95 04/03/95
code
1 \Draw
2 \schedulelimits(3)
3 \schedulechart(texproject,,,,99)
4 \EndDraw
Announcement ⊗
FTP
Test
27/02/95 04/03/95
Installation
Manual
Ask
27/02/95 04/03/95
Experiment
Usage ⊗
27/02/95 04/03/95
Contributeurs
code
1 \Draw
2 \TreeAlign(H,-1,0)(0,0,0)
3 \treediagram(c)
4 \EndDraw
FTP
Test
you Manual
Ask
contributors Experiment
someone Ask
code
1 \Draw
2 \schedulechart(c)
3 \EndDraw
you
system engineer
someone
27/02/95 04/03/95
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
code
1 \Draw
2 \Scale(1,1.2)
3 \ArrowHeads(1)
4 \pertnodestyle{\getparent{#1}:\break\hfil\name{#1}}
5 \pertdiagram *(foo)
6 \EndDraw
TeXProject :
TeXProject : Packageyou :
Package
Help Test
TeXProject :
Packagesystem Helpyou :
Usage
engineer : Experiment
Installation
code
1 \Draw
2 \Scale(1,1.2)
3 \ArrowHeads(1)
4 \pertnodestyle{\getparent{#1}:\break\hfil\name{#1}}
5 \pertdiagram(foo)
6 \EndDraw
TeXProject : Packageyou :
Package FTP
Packageyou : Helpyou :
Test Manual
Packagesystem
engineer :
Installation
Helpyou :
Experiment
TeXProject :
Usage
code
1 \Draw
2 \sapply{all,merge,all,{texproject}}
3 \sapply{foo,defproject,all,,}
4 \effortchart(foo)
5 \EndDraw
system engineer
TeXProject someone
you
Experiment you
someone
Ask
you
Manual you
someone
Help
you
Test you
FTP you
you
Package
system engineer
0 57.5 115.0
code
1 \Draw
2 \schedulechart(foo)
3 \EndDraw
Announcement ⊗
Package
FTP
Test
Installation
Help
Manual
Ask
Experiment
Usage ⊗
27/02/95 04/03/95
4 \baselineskip=9pt
5 \treestyle(,,,,85)
6 \TreeAlign(H,-1,0)(0,0,0)
7 \TreeSpace(,5,10) \treediagram(texproject)
8 \EndDraw
You set up a
small example.
03/03/95 04/03/95
Schedule Charts
code
1 \newproject \minmaxdates{0/0/0//100/0/0}
2 \defproject{tasks}{}{a,b,c,d}{}{}
3 \deftask{a}{task 1}{0/0/0}{3/0/0}{}{}{}
4 \deftask{b}{task 2}{2/0/0}{6/0/0}{}{}{}
5 \deftask{c}{task 3}{1/0/0}{2/0/0}{}{}{}
6 \deftask{d}{task 4}{5/0/0}{7/0/0}{}{}{}
7 \endnewproject
code
1 \Draw \Scale(1,0.5) \schedulestyle(,,,,3,,)
2 \schedulechart(tasks)
3 \MoveToLoc(SW) \Move(-5pt\du,0) \MarkLoc(sw)
4 \MoveToLoc(NE) \Move( 5pt\du,0) \MarkLoc(ne) \CSeg\DrawRect(ne,sw)
5 \namesaxis(sw,ne)(W-0)
6 \nonamesaxis(sw,ne)(W-1)
7 \font\sevenrm=cmr7 \sevenrm
8 \Axis(SW,NE)(N0,& week~1 && week~2 && week~3 && week~4 &&
9 week~5 && week~6 && week~7 & )
10 \Axis(SW,NE)(N-1,&&&&&&& )
11 \EndDraw
task 1
task 2
task 3
task 4
Le traceur Gnuplot
Gnuplot est un logiciel libre qui permet de construire des graphiques en 2D ou 3D et d’interpoler graphiquement
des bases de données (traceur de fichiers de points). Il possède, parmi de tels logiciels, les syntaxes les plus simples à
retenir et les plus proches de l’écriture courante. Il est assez puissant pour permettre le dépouillement presqu’en temps
réel de résultats de calculs. Les graphes implicites ne peuvent être, pour l’heure, directement tracés par gnuplot.
Les divers types de terminal s’obtiennent par set terminal. Ajoutons que lorsque le terminal postscript est activé,
chaque plot, splot ou replot insère un dessin sur une nouvelle page dans le fichier.eps. Pour imprimer dans l’impri-
mante par défaut, lp fichier.eps. On quitte Gnuplot avec exit ou quit. Pour une consultation ultérieure, on exécute
le script avec load "fichier.gnu" (après avoir lancé par set terminal x11 la fenêtre graphique par défaut). Pour
modifier le fichier de script ayant produit le graphique, on ouvre fichier.gnu à l’aide d’un éditeur de texte et on pro-
cède aux modifications souhaitées. Gnuplot est toujours livré avec une liste de démonstrations (fichier.dem à exécuter
avec l’instruction load "fichier.dem" dans le dossier demo) donnant un aperçu complet de ses diverses fonctionnalités.
Une aide sur une commande est accessible par l’instruction help nom_commande. Enfin, la commande history affiche
l’arborescence des commandes saisies depuis l’ouverture de la session courante.
59
CHAPITRE 3. LE TRACEUR GNUPLOT 3.2. TRACER PAR DÉFAUT LE GRAPHIQUE
l’étoile * indique que l’opérateur s’applique à des arguments entiers et ces opérations s’obtiennent par la commande
help operators ; et fonctions (ou primitives) :
fonctions
abs acos acosh arg asin asinh
atan atan2 atanh besj0 besj1 besy0
besy1 ceil column cos cosh erf
erfc exp floor gamma ibeta igamma
imag int inverf invnorm lgamma log
log10 norm rand real sgn sin
sinh sqrt tan tanh tm_hour tm_mday
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))))
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
La fonction par morceaux, sin(x) pour 0 <= x < 1 et 1/x pour 1 <= x < 2 et indéfinie partout ailleurs, se construit
en utilisant des valeurs indéfinies comme 1/0 :
exemple
1 f(x) = 0<=x && x<1 ? sin(x) : 1<=x && x<2 ? 1/x : 1/0
2 plot f(x)
Exemple avec condition : plot "fichier.dat" using 1:( $4<0 ? 1/0 : ($2+$3)/2 ) construit la moyenne des co-
lonnes 2 et 3 en prenant pour abscisses la colonne 1, ssi la colonne 4 est positive. Noter que 1/0 (valeur non définie)
indique à Gnuplot de ne rien faire.
Lissage en 2D
Gnuplot inclut quelques routines générales pour l’interpolation et l’approximation des données sous l’option smooth.
La syntaxe est :
code
1 plot "fichier.dat" smooth unique [csplines | acsplines | bezier | sbezier]
1. L’option unique trace les données après les avoir rendu monotones en abscisses et après avoir remplacé les points
de même abscisse par un seul point d’ordonnée moyenne. Toutes les autres routines utilisent les données pour
déterminer les cœfficients d’une courbe continue entre les points extrémaux des données. Cette courbe est alors
tracée comme une fonction, c’est-à-dire en calculant ses valeurs à intervalles réguliers sur l’abscisse et en connec-
tant ces points par des segments de droites (si un style ligne est choisi).
2. L’option acsplines approche les données par une « fonction spline de lissage naturelle ». Après que les données
aient été ordonnées selon les abscisses croissantes, une courbe est construite par morceaux, à l’aide de segment
de polynômes cubiques, dont les cœfficients sont calculés à partir des points pondérés des données (les poids sont
pris dans la 3e colonne du fichier de données). Ce comportement par défaut peut être modifié par la 3e entrée de
la liste using, par exemple :
exemple
1 plot ’fichier.dat’ using 1:2:(1.0) smooth acsplines
Qualitativement, la valeur absolue des poids détermine le nombre de segments utilisés pour construire la courbe.
Si les poids sont élevés, l’effet de chaque donnée est important et la courbe les approche en connectant les points
consécutifs par des splines cubiques naturelles. Si les poids sont faibles, la courbe est composée de moins de
segments et est donc plus lisse ; le cas limite est un simple segment produit par un ajustement aux moindres
carrés pondéré sur toutes les données. Le poids de lissage peut s’exprimer en termes d’erreurs comme : un poids
statistique pour un point divisé par un « facteur de lissage » pour la courbe, de sorte que les erreurs (standard)
du fichier puissent être utilisées en tant que poids de lissage. Exemple :
exemple
1 sw(x,S)=1/(x*x*S)
2 plot ’fichier.dat’ using 1:2:(sw($3,100)) smooth acsplines
L’option csplines connecte les points consécutifs par des splines cubiques naturelles après avoir rendu les données
x-monotones (aucune pondération n’est opérée).
3. L’option bezier approche les données par une courbe de Bézier de degré n (le nombre de points de données) qui
relie les points extrêmaux. L’option sbezier rend tout d’abord les données monotones (unique), puis applique
l’algorithme bezier.
Interpolation de données
La commande fit permet d’ajuster une fonction définie par l’utilisateur à un ensemble de points de données (x, y)
ou (x, y, z), grâce à une implantation de l’algorithme des moindres carrés non linéaires de Levenberg-Marquardt. Toute
variable définie par l’utilisateur apparaissant dans le corps de la fonction peut servir de paramètre d’ajustement et il
est possible de pondérer (les poids sont identiques à 1.0, par défaut) les résidus par des estimations d’erreurs sur les
données recueillies. La syntaxe d’utilisation est :
code
1 f(x) = expr_fonct(x)
2 fit [x_1:x_2] [y_1:y_2] f(x) ’f.dat’ using nc1:nc2 [:s] via var1,var2 ,... [’f2.par’]
3 plot ’f.dat’, f(x)
4
5 f(x,y) = expr_fonct(x,y)
6 fit [x_1:x_2] [y_1:y_2] [z_1:z_2] f(x,y) ’f.dat’ using nc1:nc2:nc3:s via var1,var2 ,... [’f2.par’]
7 splot ’f.dat’, f(x,y)
1. expr_fonct est une expression gnuplot valide contenant des paramètres (quantités inconnues dans la déclara-
tion de la fonction) que fit va ajuster. Les formats de données pour ajuster la fonction sont nc1:nc2:s ou
nc1:nc2:nc3:s. Pour une fonction d’une seule variable y = f (x), la troisième colonne (constituée de nombres
ou d’expressions), si elle est présente, est interprétée comme l’écart-type de la valeur y correspondante, et est uti-
lisée pour pondérer la donnée par 1/s2 . Sinon, toutes les données sont pondérées à 1. Pour ajuster une fonction
de deux variables z = f (x, y), le format obligatoire est using x:y:z:s. Le format doit être complet ; aucune
donnée par défaut n’est calculée en cas de valeur manquante. Les poids des données sont calculés selon s comme
ci-dessus. Si les estimations d’erreurs ne sont pas disponibles, une valeur constante peut être spécifiée sous la
forme d’une expression constante, par exemple using 1:2:3:1.
2. f.dat est le fichier de données à ajuster et le qualificateur via spécifie quels paramètres doivent être ajustés, soit
directement (var1,var2 ,...), soit en référençant un fichier de paramètres (f2.par). Toute variable qui n’est pas
encore définie est créée avec une valeur initiale de 1.0. Cependant, l’ajustement a plus de chances de converger
rapidement si les variables sont initialisées avec des valeurs plus appropriées.
Dans un fichier de paramètres, les paramètres à ajuster, et leurs valeurs initiales, sont spécifiés, un par ligne, sous
la forme nom_var = valeur. Les commentaires, marqués par un #, et les lignes blanches sont permis. La forme
spéciale nom_var = valeur # FIXED signifie que la variable est traitée comme un paramètre fixé, initialisé par le
fichier de paramètres, mais pas ajusté par fit. Exemples :
exemple
1 f(x) = a*x**2 + b*x + c
2 g(x,y) = a*x**2 + b*y**2 + c*x*y
3 FIT_LIMIT = 1e-6
4 fit f(x) ’measured.dat’ via ’start.par’
5 fit f(x) ’measured.dat’ using 3:($7-5) via ’start.par’
6 fit f(x) ’./data/trash.dat’ using 1:2:3 via a, b, c
7 fit g(x,y) ’surface.dat’ using 1:2:3:(1) via a, b, c
A chaque étape de l’itération, des informations détaillées sur l’état courant de l’ajustement sont affichées. Les mêmes
informations pour les états initial et final sont écrites dans un fichier de rapport, fit.log. Elles sont toujours ajoutées
à la fin du fichier, afin de ne pas perdre les rapports des ajustements précédents. En cas de besoin, ce fichier peut être
renommé ou effacé. L’ajustement peut être interrompu par Ctrl-C. Une fois que l’ajustement via ’f2.par’ est terminé,
la commande update ’f2.par’ peut être utilisée pour mettre à jour les valeurs des paramètres (les anciennes valeurs
étant automatiquement conservées dans le fichier f2.par.old).
Il y a plusieurs variables gnuplot qui peuvent être utilisées pour contrôler fit. L’epsilon limite par défaut 1e − 5
peut être changé en affectant une valeur à FIT_LIMIT. Quand la somme des carrés des résidus change d’une itération
à l’autre d’un facteur inférieur à ce nombre, on considère que l’ajustement a « convergé ». Le nombre maximum
d’itérations peut être limité en affectant une valeur à FIT_MAXITER. Affecter une valeur de 0 (ou ne pas déclarer la
variable) signifie qu’il n’y a pas de limite.
Données financières
code
Le style candlesticks n’est utile que pour les tracés 2D de données financières. Cinq colonnes de données sont
requises : dans l’ordre il doit y avoir la coordonnée x (très probablement une date) et le prix d’ouverture, les prix bas
et haut, et le prix de fermeture. Le symbole est un rectangle ouvert, centré horizontalement sur la coordonnée x et
limité verticalement par les prix d’ouverture et de fermeture. Un segment vertical à la coordonnée x monte du haut
du rectangle jusqu’au prix haut, et un autre descend jusqu’au prix bas. La largeur du rectangle peut être changée par
set bar. Le symbole reste inchangé si les prix bas et haut sont interchangés ou si les prix d’ouverture et de fermeture
sont interchangés.
code
1 set style data financebars
2 plot ’nom_fichier.dat’ with financebars
Le style financebars n’est utile que pour les tracés 2D de données financières. Cinq colonnes de données sont
requises : dans l’ordre il doit y avoir la coordonnée x (très probablement une date) et le prix d’ouverture, les prix bas
et haut, et le prix de fermeture. Le symbole est un segment vertical, situé horizontalement à la coordonnée x et limité
verticalement par les prix haut et bas. Un trait de graduation horizontal sur la gauche marque le prix d’ouverture et un
sur la droite marque le prix de fermeture. La longueur de ces traits peut être changée par set bar. Le symbole reste
inchangé si les prix haut et bas sont interchangés.
Pour donner un titre au graphique : plot f(x) title "..." ou set title "..." et pour choisir les traits du
tracé : plot f(x) with A lt n1 lw n2 (resp. plot f(x) with A lt n1 pt m1 ps m2), où A pouvant prendre les valeurs
lines, linespoints, impulses, points, dots, boxes, steps, fsteps, histeps, errorbars, boxerrorbars, candlesticks,
financebars ou vector ; n2 (resp. m2) (=1 par défaut) spécifiant l’épaisseur du trait (resp. du point) de tracé ; et n1
(resp. m1) (=1 par défaut) précisant le numéro de la couleur (resp. de la marque) de tracé suivant le tableau :
numéro (n1) : 0 1 2 3 4 6 9 14 15 16
couleur : pointillé rouge vert bleu violet marron gris cyan jaune orange
Il est possible d’afficher plusieurs graphes à la suite à partir d’un même fichier .gnu, en tamporisant entre chaque
affichage, au moyen de l’instruction pause -1 "Appuyer sur ENTREE pour continuer".
– set arrow n3 from x_0,y_0,(z_0) to x_1,y_1,(z_1) nohead lt n1 lw n2 : pour tracer un segment allant du
point de coordonnées (x0 , y0 (, z0 )) au point de coordonnées (x1 , y1 (, z1 )), de couleur donnée par n1 et d’épaisseur spé-
cifiée par n2. L’entier n3 sert à labelliser le segment (lorsqu’il y en a plusieurs). On obtient une flèche en supprimant
l’option nohead.
– set border 31 lt n1 lw n2 : pour afficher les axes avec la couleur donnée par n1 et une épaisseur spécifiée par
n2. Une grande variété de combinaisons d’axes peut être ajoutée à la commande : set border : trace toutes les bor-
dures ; set border 3 : trace seulement les bordures sud-ouest ; set border 4095 : trace une boîte complète autour d’un
splot ; set noxtics; set noytics; set x2tics; set y2tics; set border 12 : trace seulement les bordures nord-est ;
set border 127+256+512 : trace partiellement une boîte sans la face avant verticale.
– set cntrparam : Pour contrôler la génération et le lissage du tracé des contours, en précisant les valeurs de z
pour lesquelles les contours vont être calculés par interpolation linéaire entre les points échantillonnés de la fonction
d’ajustement. Par défaut, les arguments actifs sont : linear, points 5, order 4, levels auto 5. Ces arguments sont
modifiables par :
code
1 set cntrparam A
2 set cntrparam points n1
3 set cntrparam order n2
4 set cntrparam levels auto n3
5 set cntrparam levels discrete val_1, val_2, ... , val_n
6 set cntrparam levels incremental val_deb, val_pas, val_fin
7 show contour
1. A pouvant prendre les valeurs cubicspline (des portions de contours curvilignes sont interpolées, entre les points
de même valeur de z, pour former des contours plus lisses, mais pouvant onduler), bspline (un tracé curviligne
de meilleur lissage est tracé pour approximer seulement les points de même z). Par défaut, ce sont des segments
de droites qui joignent les points de même z ;
2. n1 : contrôle le nombre de segments curvilignes (= n1×nombre de segments linéaires) utilisés pour approximer
les tracés bspline ou cubicspline ;
3. n2 : est l’ordre de l’approximation bspline utilisée. Plus l’ordre est grand, plus le contour résultant est lisse (bien
évidemment, les ordres les plus élevés s’écartent d’autant plus des points de données à l’origine du calcul). Les
valeurs permises sont les valeurs entières qui vont de la valeur 2 (linéaire) à 10 ;
4. n3 : spécifie un nombre nominal de niveaux. Le nombre choisi est ajusté pour donner des étiquettes simples. Si la
surface est bornée par zmin et zmax, les contours sont générés aux multiples entiers de dz entre zmin et zmax,
où dz vaut (1, 2, ou 5) fois une puissance de dix (comme les pas entre les graduations d’axes) ;
5. discrete : les contours sont générés à z = val1 , val2 , ..., valn comme spécifié ; le nombre de niveaux discrets fixe
le nombre de niveaux de contour. Le mode discrete inhibe l’option set cntrparam levels n3 ;
6. incremental : les contours sont générés à partir de la valeur val_deb de z, par pas de val_pas, jusqu’à ce que le
nombre de contours soit atteint. val_fin est utilisé pour déterminer le nombre de niveaux de contour, qui peut
être changé par n’importe quelle nouveau set cntrparam levels n3.
– set contour A : pour tracer les contours (les lignes de niveaux) de surfaces projetés sur le plan de base (A = base,
valeur par défaut), sur la surface elle-même (A = surface) ou sur les deux (A = both). L’instruction unset surface
s’utilise pour ne donner qu’un graphe de contour seul.
– dummy : pour définir les paramètres des courbes et surfaces. Pour changer la 2e variable (paramétrant les surfaces
en 3D) en s, saisir le script : set dummy u,v, puis set dummy ,s.
– set format axe type_format : pour régler le formatage des étiquettes de graduations des axes. L’axe pour lequel
le format est spécifié est indiqué par axe ∈ {x, y, z, xy}, où xy est la valeur par défaut et type_format est "%g" par
défaut, "$%g$" pour l’utilisation du mode mathématique LATEX 2ε , "%.2f" pour que 1 décimale soit permise et qu’elle
soit multiple de 2, "$%5.1f\mu$" pour que les chiffres des unités soient multiples de 5, pour que 1 décimale soit permise
et µ en facteur à chaque graduation, "%P" pour que les graduations soient des multiples de π...
– set grid lt n11 lw n12 , lt n21 lw n22 : pour quadriller suivant les points qui ont servi à normer les axes
(en 3D, seul le plan de base est quadrillé), la virgule séparant les spécifications des lignes verticales de celles des lignes
horizontales.
– set hidden3d : seules les faces en premier plan du graphique sont visibles (faces cachées non visibles), par sup-
pression des lignes cachées.
– set isosamples 10,10 : (par défaut) pour rendre plus régulière un 3D-graphique en augmentant le nombre de
courbes u et v-paramétrisées utilisées (modification de la densité des iso-courbes). set isosamples 100,100 est le maxi-
mum permis.
– set key n. x_0,y_0(,z_0) : pour positionner le titre au point de coordonnées (x0 , y0 (, z0 )). La position peut être
remplacée par un ou plusieurs des arguments : left, right, top, bottom, outside, below, box.
– set label n. "..." at x_0,y_0(,z_0) A : où A pouvant prendre les valeurs rotate by val_degres, right, left,
center. Pour mettre une étiquette au point de coordonnées (x0 , y0 (, z0 )) du repère.
– set Alabel "..." n. ou set Alabel "lettre_1 \\ ... \\ lettre_N" n. : où A pouvant prendre les valeurs x,
y, z. Pour mettre une légende sur les axes.
– set locale "francais" : pour choisir la langue d’affichage des jours et mois.
– set logscale axe : où axe pouvant prendre les valeurs x, y, z, x2 ou y2. Pour employer une échelle logarithmique
et visualiser les endroits où une courbe change de façon drastique suivant certaines valeurs de axe.
– set offsets valeur_gauche, valeur_droite, valeur_haut, valeur_bas : (0,0,0,0 par défaut) pour spécifier les
retraits autour du graphique horizontalement ou verticalement, de façon à contrôler la bordure autour d’un graphe mis
à l’échelle automatiquement.
– set origin x_0,y_0(,z_0) : pour spécifier l’origine de l’aire de tracé (le graphe et ses marges).
– set palette color [gray] : pour choisir la palette de coloriage des facettes ou des espaces inter-contours, lorsque
set pm3d est activé.
– set pm3d at [sbt] : pour colorier les facettes ou leurs projections sur les plans axiaux.
– set samples valeur_1 [,valeur_2] : où valeur_i = 100 par défaut. Pour augmenter ou réduire le taux d’échantil-
lonnage ou le nombre de points (valeur_1 seule spécifiée) sur une 2D-courbe ou les nombres de points (valeur_1 et
valeur_2 spécifiées) sur les courbes u et v-paramétrées utilisées pour construire une surface.
– set size fact_mult_x fact_mult_y : (1,1 par défaut) pour spécifier le rectangle de tracé (ou d’affichage), l’es-
pace réservé aux labels et titre y compris. Les valeurs par défaut correspondent à un rectangle de 5 inches de large
et 3 inches de haut. Les autres valeurs fournissent les facteurs multiplicateurs du rectangle par défaut. Exemples :
set size 3.5/5,3/3 ou set size 1,2. On peut donner juste après la commande size les options square pour rendre
carré le rectangle de tracé et ratio n. pour que le rapport de proportionnalité entre les axes soit de n..
– set terminal nom_terminal "nom_fonte" taille_fonte : pour définir la police et la taille des caractères d’affi-
chage dans un terminal donné.
– set ticslevel 0.5 : (par défaut) pour ajuster la cote relative lorsqu’on utilise splot. Les niveaux positifs sont
conseillés.
– set time x_0,y_0 : pour faire imprimer la date et l’heure au point (x0 , y0 ). L’instruction set time les imprime
dans le coin sud-ouest du graphique.
– set view rot_x, rot_z, scale, scale_z [map] : pour observer le graphique sous tous les angles de vue. Les
valeurs par défaut sont 60,30,1,1. Cette fonctionnalité est accessible par la souris dans le terminal x11 ou windows, en
gardant enfoncé et en déplaçant les boutons de gauche et du milieu de celle-ci. L’option map est recommandée pour la
représentation des contours (voir set contour) sur la grille de coordonnées (ou le plan de base).
Scilab est un logiciel de calcul numérique distribué librement par l’INRIA. Les polynômes et les matrices poly-
nômiales peuvent être définis et la syntaxe utilisée pour les manipuler est identique à celle des vecteurs et matrices
constants. Scilab fournit une variété de primitives pour l’analyse des systèmes non-linéaires. La résolution des sys-
tèmes dynamiques, définis explicitement ou implicitement, peut s’effectuer numériquement. Scilab permet la définition
graphique et la simulation des systèmes hybrides interconnectés complexes. Scilab offre des facilités d’optimisation nu-
mérique pour les optimisations différentiables, quadratiques et linéaires. Scilab a un espace de programmation où la
création de fonctions et la librairie de fonctions sont entièrement gérées par l’utilisateur. Ces fonctions sont des objets
qui, une fois définis, doivent s’afficher et être manipulables de la même manière que les matrices ou les suites. Enfin,
Scilab supporte les données de type chaînes de caractères et est un interface compatible avec les langages Fortran et C.
4.1.1 Scripts
Dans un script scilab, les commandes sont rentrées ligne par ligne et un retour-chariot exécute la ligne sauf dans
deux cas : 1/ si la ligne se termine par ... ou .., la séquence se prolonge sur la ligne suivante ; 2/ si la commande
définit une matrice, les lignes de cette matrice peuvent être séparées par des retours-chariots. Ajouter un ; en fin de
ligne supprime l’affichage du résultat, ce qui évite les longs défilement à l’écran. Dans une ligne de commande, tout
ce qui suit // est ignoré, ce qui est utile pour les commentaires. Le résultat de l’exécution d’une ligne de commande
est affecté nommément à une variable (exemple : A=[1,2;3,4] affecte la matrice à la variable A) ou par
„ «
1 2
3 4
défaut à la variable ans. L’affichage de la valeur affectée à une variable s’opère par disp(nom_var). Dans les noms des
variables, les majuscules sont distinctes des minuscules. Toutes les variables d’une session sont globales et conservées
en mémoire. Elles sont accessibles par who (affiche toutes les variables) ou whos() (affiche les variables avec plus de
détails), et se libèrent par clear nom_variable. Lorsqu’une matrice est affectée à la variable A, elle peut être sauvegar-
dée (en ascii) par write(’fichier.dat’,A) dans fichier.dat et lue complètement ou partiellement avec l’instruction
read(’fichier.dat’,nbre_lig,nbre_col), où nbre_lig et nbre_col sont les nombres maxima de lignes et colonnes à
afficher.
Scilab est un langage faiblement typé où les variables ne sont pas déclarées et la même lettre peut désigner un réel,
un polynôme ou une fonction. Les types existent et peuvent être obtenus par type(nom_var). Par défaut les nombres
69
CHAPITRE 4. LE LOGICIEL DE CALCUL NUMÉRIQUE SCILAB 4.1. PRISE EN MAINS DE SCILAB
sont traités comme des réels en double précision. Les calculs ne sont donc pas exacts et la précision machine est donnée
par la constante %eps, de l’ordre de 10−16 (les nombres
√ > %eps ou < %eps sont accessibles). Les autres constantes
prédéfinies sont %e (=2.7182818), %f (faux), %i (= −1) qui permet de définir les nombres complexes, %inf (infini),
%pi (=3.1415927),%s (variable de polynôme),%t (vrai). Les chaînes de caractères, encadrées par des doubles côtes
(exemple : "x+y"), permettent de définir des expressions mathématiques, interprétables ensuite comme des commandes
à exécuter ou des fonctions à évaluer. Elles servent aussi d’intermédiaires pour des échanges de données entre fichiers.
On peut donc transformer et formater des nombres en chaînes de caractères.
Chaînes de caractères
evstr("...") évaluer l’expression ...
execstr("...") exécuter l’instruction ...
length("...") longueur de la chaîne "..."
part(...,i) extraire le ie caractère de chaque chaîne dans ...
+ concaténation de plusieurs chaînes
string(...) transformer ... en chaîne
4.1.2 Fonctions
Scilab propose beaucoup de fonctions prédéfinies (primitives) dans des domaines très variés, dont on peut obtenir
la description dans le menu help. On peut étendre le langage Scilab par de nouvelles fonctions définies par des
séquences d’instructions. La syntaxe pour définir une fonction f est :
code
1 deff(’[s1,s2,...]=f(e1,e2,....)’,[’p_1=val_1’;
2 ’p_2=val_2’;
3 ...;
4 ’s1=instr_1(e1,e2,....)’;
5 ’s2=instr_2(e1,e2,....)’;
6 ...])
où e1,e2,... sont les variables d’entrée ; s1,s2,... les arguments de sortie ; [...] la matrice de chaînes de caractères
donnant les instructions (instr_i) définissant la fonction et les valeurs (val_i, qui peuvent être des expressions à évaluer)
des paramètres (p_i) qu’elles contiennent. Exemples :
exemple
1 deff(’[x]=myplus(y,z)’,’x=y+z’)
2 deff(’[x]=mymacro(y,z)’,[’a=3*y+1’; ’x=a*z+y*y’])
3 deff(’[x,y,z]=moebius(u,v)’,[’R=1’;
4 ’x=(R+u.*cos(v/2)).*cos(v)’;
5 ’y=(R+u.*cos(v/2)).*sin(v)’;
6 ’z=u.*cos(v/2)’])
Les nouvelles fonctions définies par deff peuvent être utilisées comme arguments dans une nouvelle fonction. Quand
on définit une nouvelle fonction, on doit veiller à ce qu’elle puisse s’appliquer correctement (observer les produits, .*,
terme à terme dans le 3e exemple) à une matrice. On peut appliquer aux fonctions Scilab toutes les opérations usuelles
+,-,*,^,/ (addition, soustraction, multiplication, élevation à la puissance et division), ainsi que la dérivation et l’inté-
gration :
• La syntaxe pour évaluer en x0 toutes les dérivées partielles d’ordre 1 et d’ordre 2 d’une fonction f : Rn → Rp ,
f (x+h)−fi (x)
x 7→ f (x) = f (x0 ) + D1f (x0 ) ∗ dx + 1/2 ∗ D2f (x0) ∗ (dx. ∗ .dx) + ..., par différences finies i h
est :
code
1 deff(’y=f(x)’,’y=...’)
2 J=derivative(f,x0,h)
3 [J,J2]=derivative(f,x0,h)
où f est la fonction Scilab décrivant f ; h est un petit nombre réel à choisir avec précaution (1.d-7 par défaut) ; J =
D1f (x0 ) est la matrice jacobienne en x0 de f de taille p × n ; J2 = D2f (x0 ) est la 2-matrice jacobienne en x0 de f de
taille p × (n × n). Exemple :
exemple
1 deff(’y=f(x)’,’y=[sin(x(1))*cos(x(2));x(1)^2*x(2)^2;1+x(1)*x(2)^2]’)
2 x0=[1;2];eps=0.001;h=eps*[2;5];
3 [J,J2]=derivative(f,x0);
4 [f(x0+h)-f(x0)-J*h ,0.5*J2*(h.*.h)]
Rb
• La syntaxe pour calculer a f (t) dt est :
code
1 deff(’y=f(t)’,’y=...’)
2 [v,err]=intg(a,b,f [,ea [,er])
où ea est l’erreur absolue (= 0 par défaut) ; er est l’erreur relative (= 1.d-8 par défaut) ; err est l’erreur absolue estimée
sur le résultat. Le calcul satisfait : |I − v| ≤ max{ea, er × |I|}, avec I la valeur exacte de l’intégrale. Exemple :
exemple
1 deff(’[y]=f(x)’,’y=x*sin(30*x)/sqrt(1-((x/(2*%pi))^2))’)
2 exact=-2.5432596188;
3 abs(exact-intg(0,2*%pi,f))
R x1
• La syntaxe pour intégrer x0 f (t) dt par la méthode des quadratures est :
code
1 [x]=integrate(’f(t)’,’t’,x0,x1 [,ea [,er]])
où ea est l’erreur absolue (= 0 par défaut) ; er est l’erreur relative (= 1.d-8 par défaut). Le calcul satisfait : |I − x| ≤
max{ea, er × |I|}, avec I la valeur exacte de l’intégrale. Exemples :
exemple
1 integrate(’sin(x)’,’x’,0,%pi)
2 integrate([’if x==0 then 1,’;
3 ’else sin(x)/x,end’],’x’,0,%pi)
• La syntaxe pour calculer, par la méthode des quadratures, l’intégrale double d’une fonction f (x, y) sur un domaine
triangularisée (n est le nombre de triangles) est :
code
1 deff(’z=f(x,y)’,’z=...’)
2 [I,err]=int2d(X,Y,f [,params])
où X ∈ M3×n (R) (resp. Y) est la matrice des abscisses (resp. ordonnées) des sommets des triangles ; params est vecteur
réel [tol, iclose, maxtri, mevals, iflag], dont la valeur par défaut est [1.d-10, 1, 50, 4000, 1] et tel que :
– si iflag=0, alors l’erreur de tolérance tol est interprétée comme une erreur relative,
– si iflag=1, alors l’erreur de tolérance tol est interprétée comme une erreur abosolue.
iclose est un entier permettant de sélectionner la méthode LQM0 ou LQM1 :
– iclose=1 active LQM1, qui intègre jusqu’au bord.
– toute autre valeur active LQM0, qui est utile lorsque f (x, y) est singulière en l’un des sommets d’un triangle.
maxtri est le nombre maximum de triangles dans la triangularisation finale ; mevals est le nombre maximal d’itérations
autorisées ; err est l’erreur absolue estimée sur le résultat. Exemple :
exemple
1 X=[0,0;1,1;1,0];
2 Y=[0,0;0,1;1,1];
3 deff(’z=f(x,y)’,’z=cos(x+y)’)
4 [I,e]=int2d(X,Y,f)
5 // calcule l’integrale sur le carre [0,1]x[0,1]
• La syntaxe pour calculer, par la méthode des quadratures, l’intégrale triple d’une famille (nbre_f est leur nombre,
il est égale à 1 par défaut) de fonctions f (xyz, nbre_f) sur un domaine discrétisé par une collection de tétraèdres (au
nombre de nbre_tet) est :
code
1 deff(’v=f(xyz,nbre_f)’,’v=...’)
2 [result,err]=int3d(X,Y,Z,f [,nbre_f[,params]])
où X ∈ M4×nbre_tet (R) (resp. Y, Z) est la matrice des abscisses (resp. ordonnées, cotes) des sommets des tétraèdres ;
xyz est le vecteur au point coordonnées ; params est un vecteur réel [minpts, maxpts, epsabs, epsrel], dont la valeur
par défaut est [0, 1000, 0.0, 1.d-5] et tel que :
– epsabs : erreur absolue souhaitée,
– epsrel : erreur relative souhaitée,
– minpts : nombre minimum d’itérations,
– maxpts : nombre maxium d’itérations.
Le nombre d’itérations sur chaque sous-région est 43 ; result est le vecteur des résultats des intégrations des nbre_f
fonctions ; err est le vecteur des erreurs absolues estimées sur les résultats. Exemple :
exemple
1 X=[0;1;0;0];
2 Y=[0;0;1;0];
3 Z=[0;0;0;1];
4 deff(’v=f(xyz,numfun)’,’v=exp(xyz’’*xyz)’)
5 [RESULT,ERROR]=int3d(X,Y,Z,’int3dex’)
6 // calcule l’integrale de exp(x*x+y*y+z*z) sur le
7 //tetraedre (0.,0.,0.),(1.,0.,0.),(0.,1.,0.),(0.,0.,1.)
Matrices 0 1
a1 a2 a3
[a1,a2,a3;b1,b2,b3;c1,c2,c3] la matrice @ b1 b2 b3 A
c1 c2 c3
A(i,j) cœfficient d’ordre i et j de A
A([i1:i2],:) lignes i1 à i2 de A
A($,:) dernière ligne de A
A([i1:i2],:)=[] supprime les lignes i1 à i2 de A
A(:,[j1:j2]) colonnes j1 à j2 A
A(:,$) dernière colonne de A
A(:,[j1:j2])=[] supprime les colonnes j1 à j2 de A
Polynômes
poly(v,’x’) polynôme à variable x et racines les éléments de v
x=poly(0,’x’) définit la variable x
poly(v,’x’,’c’) polynôme à variable x et cœfficients les éléments de v
coeff(P) matrice ligne cœfficients de P
roots(P) matrice ligne racines de P
factors(P) polynômes facteurs de P
Matrices particulières 1
abs(A) module de A
conj(A) conjugué de A
derivat(A) dérivée d’une matrice rationnelle A
det(A) déterminant de A
determ(A) déterminant d’une matrice polynômiale A
diag(A) matrice diagonale([A(1,1),...,A(n,n)])
„ «
Ok,. Ok
diag(A,-k), k>0 matrice
„ diag(A) O.,k «
O.,k diag(A)
diag(A,k), k>0 matrice
Ok Ok,.
Matrices particulières 2
expm(A) exponentielle de A
eye(m,n) matrice identité min(m, n) complétée par des 0
imag(A) partie imaginaire de A
inv(A) inverse de A
length(A) le produit nbre_lignes × nbre_colonnes de A
matrix(A,m,n) matrice (m, n) redistribuant les colonnes de A
ones(m,n) matrice (m, n) dont les cœfficients valent 1
phasemag(A) argument de A en degré
prod(A,’row’) matrice des produits sur chaque ligne de A
prod(A,’col’) matrice des produits sur chaque colonne de A
rand(m,n) matrice (m, n) à cœfficients aléatoires uniformes sur [0, 1]
rank(A) rang de A
real(A) partie réelle de A
size(A) matrice ligne (nbre lignes , nbre colonnes)
size(A,’r’) nombre de lignes
size(A,’c’) nombre de colonnes
size(A,’*’) nombre total d’éléments
spec(A) matrice des valeurs propres de A
sum(A,’row’) matrice des sommes sur chaque ligne de A
sum(A,’col’) matrice des sommes sur chaque colonne de A
toeplitz(v_1,v_2) matrice à diagonales constantes, où v1 (1) = v2 (1) et v1 en colonnes
trace(A) trace de A
tril(m,n) annule les cœfficients au dessus de la diagonale de A
triu(m,n) annule les cœfficients en dessous de la diagonale de A
zeros(m,n) matrice nulle de taille (m, n)
numéro : 0 -1 -2 -3 -4 -5 -6 -7 -8 -9
marque : · + × ⊕ • ⋄ ∇ ∆ ♣ ◦
4.3.1 2D-courbes
Les syntaxes pour construire une courbe en 2D sont :
code
1 plot2d(X,Y,[style,cadre,leg,rect,grad])
2 plot2d(Y);
où X,Y sont deux matrices de même taille [nl,nc] ; nc est le nombre de courbes et nl est le nombre de points utilisés
pour construire chaque courbe. Les points de la ie courbe sont données par X(:,i) et Y(:,i) ; style ∈ M1×nc (Z)
indique les couleurs à attribuer à chaque courbe. Si style(i) ∈ Z∗− (resp. 0, N∗ ), alors la ie courbe est tracée avec des
marques (resp. des pixels, des traits) ; cadre est une chaîne de longueur 3 spécifiant dans l’ordre l’affichage ou non d’une
légende pour chaque courbe, le choix du rectangle de tracé et l’affichage ou non des axes et graduations :
"000" : pas de légendes, rectangle précédent, axes non tracés,
"121" : légendes, rectangle automatique, axes tracés gradués,
"021" : pas de légendes, rectangle automatique, axes tracés gradués, (défaut),
"012" : pas de légendes, rectangle à définir, axes tracés non gradués,
"031" : pas de légendes, rectangle isométrique, axes tracés gradués ;
leg = "leg1@leg2@...@legm" ou " " spécifie les légendes pour les m premières courbes ; rect = [xmin,ymin,xmax,ymax]
spécifie les bornes du rectangle de tracé ; grad = [nx,Nx,ny,Ny] avec nx (resp. ny) le nombre de sous-graduations et Nx
(resp. Ny) le nombre de graduations sur l’axe des abscisses (resp. des ordonnées). Exemples :
exemple 1 : courbe simple
1 x=[0:0.1:2*%pi]’;
2 plot2d(sin(x))
4.3.2 3D-courbes
Les syntaxes pour construire les courbes en 3D sont :
code
1 param3d1(X,Y,Z,[theta,alpha,leg,cadre,rect])
2 param3d1(X,Y,list(Z,colors),[theta,alpha,leg,cadre,rect])
où X,Y,Z sont trois matrices de même taille [nl,nc]. L’entier nc est le nombre de courbes et nl est le nombre de points
utilisés pour construire chaque courbe. Les points de la ie courbe sont données par X(:,i), Y(:,i) et Z(:,i) ; colors
indique les couleurs à attribuer à chaque courbe. Si colors(i) ∈ Z∗− (resp. 0, N∗ ), alors la ie courbe est tracée avec des
marques (resp. des pixels, des traits) ; theta, alpha sont les coordonnées sphériques (en degré) du point d’observation (le
graphique peut être observé sous tous les angles de vue par des mouvements de la souris) ; leg = "axe_x@axe_y@axe_z"
décrit la légende sur chaque axe ; cadre = [.,.] est un vecteur de longueur 2 spécifiant dans l’ordre le choix du rectangle
de tracé et l’affichage ou non des axes et d’une boîte entourant le tracé :
[0,0] : rectangle précédent, rien autour,
[1,2] : rectangle à définir, axes déssinés,
[0,3] : rectangle précédent, boîte autour,
[2,3] : rectangle automatique, boîte autour,
[1,4] : rectangle à définir, boîte et axes tracés . . .
rect = [xmin,xmax,ymin,ymax,zmin,zmax] spécifie les bornes du rectangle de tracé. Exemples :
exemple 1
1 t=0:0.1:5*%pi; t=t’;
2 param3d1([sin(t),sin(2*t)],[cos(t),cos(2*t)],...
3 list([t/10,sin(t)],[3,2]),35,45,"X@Y@Z",[2,3])
exemple 2
1 // Courbes asymptotiques de l’entonnoir
2 t=linspace(1,100,1000);
3 m=[1:5];
4 X=(t’*ones(1,length(m))).*cos((ones(length(t),1)*m)+log(t’*ones(1,length(m))));
5 Y=(t’*ones(1,length(m))).*sin((ones(length(t),1)*m)+log(t’*ones(1,length(m))));
6 Z=log(t)’*ones(1,length(m));
7 param3d1(X,Y,list(Z,[1:5]),51,89,"X@Y@Z",[2,0])
4.3.3 3D-surfaces
3D-surfaces résolubles Les syntaxes pour construire les surfaces résolubles en 3D sont :
code
1 plot3d(X,Y,Z [,theta,alpha,leg [,cadre,rect]]) // surface z=f(x,y)
2 plot3d(xf,yf,zf [,theta,alpha,leg [,cadre,rect]])
3 plot3d(xf,yf,list(zf,colors) [,theta,alpha,leg [,cadre,rect]])
où X ∈ Mn1×1 (R) ,Y ∈ Mn2×1 (R) sont les points coordonnées de la grille ; Z ∈ Mn1×n2 (R) telle que Z(i,j) est la
valeur de f au point (X(i),Y(j)) ; xf, yf, zf sont des matrices de dimension (nbre_som_par_face × nbre_faces), où
xf(i,j), yf(i,j) et zf(i,j) sont les coordonnées (à donner dans le sens de la normale intérieure pour le tire-bouchon)
du ie sommet de la je facette ; colors ∈ M1×nbre_faces (Z) indique les couleurs à attribuer à chaque facette. Si
colors(i) ∈ Z∗− (resp. 0, N∗ ), alors la ie facette est coloriée avec des marques (resp. des pixels, des traits) ; theta, alpha
sont les coordonnées sphériques (en degré) du point d’observation ; leg = "axe_x@axe_y@axe_z" décrit la légende sur
chaque axe ; cadre = [.,.,.] est un vecteur de longueur 3 spécifiant dans l’ordre la présence ou non des faces cachées,
le choix du rectangle de tracé et l’affichage ou non des axes et d’une boîte entourant le tracé :
[2,0,0] : faces cachées enlevées, rectangle précédent, rien autour,
[2,1,2] : faces cachées enlevées, rectangle à définir, axes déssinés,
[0,0,3] : faces cachées présentes, rectangle précédent, boîte autour,
[0,1,4] : faces cachées présentes, rectangle à définir, boîte et axes tracés ;
rect = [xmin,xmax,ymin,ymax,zmin,zmax] spécifie les bornes du rectangle de tracé. Exemples :
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)]))
code
1 [xf,yf,zf]=eval3dp(fun,p1,p2)
2 plot3d(xf,yf,zf [,theta,alpha,leg [,cadre,rect]])
où fun est une fonction Scilab décrivant la paramétrisation de la surface ; p1 un vecteur de taille n ; p2 un vecteur
de taille m ; xf,yf,zf sont les arguments de sortie. La commande eval3dp décrit l’ensemble des facettes de la surface
à l’aide de quatre matrices ∈ M4×(n-1)x(m-1) (R) (les quatre sommets d’une facette) et stocke (dans le sens de la
normale intérieure pour le tire-bouchon) dans xf(i,j), yf(i,j) et zf(i,j) les coordonnées du ie sommet de la je
facette. Exemples :
exemple 1
1 p1=linspace(0,2*%pi,10);
2 p2=linspace(0,2*%pi,10);
3 deff(’[x,y,z]=scp(p1,p2)’,[’x=p1.*sin(p1).*cos(p2)’;
4 ’y=p1.*cos(p1).*cos(p2)’;
5 ’z=p1.*sin(p2)’])
6 [x,y,z]=eval3dp(scp,p1,p2);
7 plot3d(x,y,z)
exemple 2
1 // Bande de Moebius
2 deff(’[x,y,z]=moebius(u,v)’,[’R=1’;
3 ’x=(R+u.*cos(v/2)).*cos(v)’;
4 ’y=(R+u.*cos(v/2)).*sin(v)’;
5 ’z=u.*cos(v/2)’])
6 u=linspace(0,-2*%pi,20);
7 v=linspace(0,2*%pi,160);
8 [x,y,z]=eval3dp(moebius,u,v);
9 plot3d(x,y,z)
code
1 y=ode(y0,t0,t,f)
où y0 = (u(t0 ), u′ (t0 ), . . . , u(s−1) (t0 )) est le vecteur des conditions initiales ; t0 est l’instant initial de récupération
de l’état y ; t = (t0,...,T) est le vecteur de tous les instants de récupération de l’état y ; Si f1(y(1),...,y(s)),
d
..., fs(y(1),...,y(s)) sont les seconds membres de dt y = f (t, y), alors le script Scilab définissant f doit avoir pour
syntaxe :
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]’])
exemple 2
1 // Equation de Vanderpol
2 // d^2y/dt^2 =c*(1-y^2) dy/dt -y , y(0)=[-2.5;2.5]
3 deff(’yprim=f(t,y)’,[’yprim1=y(2)’;
4 ’yprim2=0.4*(1-y(1)^2)*y(2)-y(1)’;
5 ’yprim=[yprim1,yprim2]’])
6 t0=0;
7 y0=[-2.5;2.5];
8 t=linspace(0,30,500);
9 sol=ode(y0,t0,t,f);
10 plot2d(sol(1,:)’,sol(2,:)’,5,"021") // representation dans le plan de phase
11 basc()
12 plot2d(t’,sol(1,:)’,5,"021") // courbe solution de l’equation
exemple 3
1 // Equations geodesiques
2 // d^2u/dt^2=-A(u,v)du/dt dv/dt ; d^2v/dt^2=-B(u,v)(du/dt)^2-C(u,v)(dv/dt)^2
3 deff(’yprim=f(t,y)’,[’yprim1=y(3)’;
4 ’yprim2=y(4)’;
5 ’yprim3=-A(y(1),y(2))*y(3)*y(4)’;
6 ’yprim4=-B(y(1),y(2))*y(3)^2-C(y(1),y(2))*y(4)^2’;
7 ’yprim=[yprim1,yprim2,yprim3,yprim4]’])
8 t0=0;
9 y0=[2;2;2;2];
10 t=[0:0.1:5];
11 sol=ode(y0,t0,t,f);
12 plot2d(sol(1,:)’,sol(2,:)’,5,"000")
• La syntaxe pour représenter en 2D le champ des vecteurs directionnel de l’équation différentielle ordinaire
d
dt
y = f (t, y) est :
code
1 fchamp(f,tc,xr,yr,[arfact,rect,cadre])
2 fchamp(x,y,xr,yr,[arfact,rect,cadre])
où f retourne un vecteur colonne de taille 2 donnant les fonctions coordonnées (x,y) des vecteurs du champ à un instant
tc ∈ {t0,...,T} choisi parmi les instants de récupération ; xr,yr sont 2 vecteurs lignes de tailles n1 et n2 définissant
la grille des points de représentation des vecteurs du champ ; arfact est le facteur d’échelle (=1 par défaut) ; rect
est le vecteur [xmin,ymin,xmax,ymax] spécifiant les bornes du rectangle de tracé ; cadre est une chaîne de longueur 3
spécifiant dans l’ordre l’affichage ou non d’une légende pour chaque courbe, le choix du rectangle de tracé et l’affichage
ou non des axes et graduations :
"000" : pas de légendes, rectangle précédent, axes non tracés,
"121" : légendes, rectangle automatique, axes tracés gradués,
"021" : pas de légendes, rectangle automatique, axes tracés gradués, (défaut),
"012" : pas de légendes, rectangle à définir, axes tracés non gradués,
"031" : pas de légendes, rectangle isométrique, axes tracés gradués.
Exemple :
exemple
1 deff(’[xdot] = derpol(t,x)’,[’xd1=x(2)’;
2 ’xd2=-x(1)+(1-x(1)**2)*x(2)’;
3 ’xdot=[xd1;xd2]’])
4 xf= -1:0.1:1;
5 yf= -1:0.1:1;
6 fchamp(derpol,0,xf,yf)
7 xbasc()
8 fchamp(derpol,0,xf,yf,1,[-2,-2,2,2],"011")
Pour une fonction donnée G(p,z), la commande fit_dat détermine le meilleur vecteur de paramètres p approchant l’éga-
lité G(p, zi ) = 0, pour un ensemble de données zi . L’algorithme utilisé minimise G(p, z1 )′ W G(p, z1 )+G(p, z2 )′ W G(p, z2 )+
... + G(p, zn )′ W G(p, zn ). Exemples :
exemple
1 deff(’y=FF(x)’,’y=a*(x-b)+c*x.*x’)
2 X=[];Y=[];
3 a=34;b=12;c=14;for x=0:.1:3, Y=[Y,FF(x)+100*(rand()-.5)];X=[X,x];end
4 Z=[Y;X];
5 deff(’e=G(p,z)’,’a=p(1),b=p(2),c=p(3),y=z(1),x=z(2),e=y-FF(x)’)
6 [p,err]=fit_dat(G,[3;5;10],Z)
7 xset(’window’,0)
8 xbasc();
9 plot2d(X’,Y’,-1)
10 plot2d(X’,FF(X)’,5,’002’)
11 a=p(1),b=p(2),c=p(3);plot2d(X’,FF(X)’,12,’002’)
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’)
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;
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;
Macaulay2 est un outil interactif libre dédié à la création scientifique en géométrie algébrique et algèbre commu-
tative. Les algorithmes de calculs implémentés dans Macaulay2 permettent la création et la manipulation de tout type
d’anneaux, les opérations arithmétiques sur les anneaux et les matrices, les résolutions projectives de modules, la déter-
mination des bases de Gröbner, le calcul des séries de Hilbert sur les anneaux gradués ou les modules, le calcul de la
cohomologie des faisceaux cohérents etc. Nous ne décrivons ici que les commandes Macaulay2 permettant de décrire les
ensembles solutions de systèmes d’équations polynômiales en dimensions finies. Il en existe beaucoup d’autres.
81
CHAPITRE 5. LE LOGICIEL DE CALCUL ALGÉBRIQUE MACAULAY2 5.3. ARITHMÉTIQUE
Les objets basiques Macaulay2 sont de plusieurs types : les nombres, familles (suites, listes et tableaux), tables sé-
quentielles (ensembles finis, multi-ensembles), chaînes de caractères, symboles et fonctions. Leur liste complète s’obtient
par help Thing. Dans Macaulay2, les objets sont décrits de la manière suivante :
5.3 Arithmétique
Les ensembles de nombres (qui sont des anneaux) sont définis par :
Les ensembles de nombres (modulo un entier premier n) s’écrivent : ZZ/n (l’ensemble Z/nZ ).
+ : 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,
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 :
La liste des fonctions primitives s’obtient par help Function. Les nouvelles commandes se définissent par :
code
1 nom_nouv_commande = method()
2 nom_nouv_commande nom_ens_entrees := instructions_de_definition
Les instructions code nom_commande ou code(nom_commande,types_objet) localisent et affichent les codes sources de
commandes, lorsqu’elles s’appliquent sur les types d’objets spécifiés. Les méthodes de calculs implémentées dans Ma-
caulay2 au sujet d’un type d’objet se listent par methods nom_type (exemple methods CC).
Voici une liste de primitives affichant sur les anneaux des valeurs bouléennes :
nom_ideal = ideal(list_generateurs) : définit l’idéal d’un ensemble algébrique (ensemble des zéros communs aux
générateurs de l’idéal). Il faut prendre soin de définir au préalable l’anneau d’appartenance des générateurs,
nom_moideal = monomialIdeal (list_generateurs) : définit l’ idéaux monomial correspondant.
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.
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,
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
Informations :
C : Compile le script Surface Evolver.
c : Rapporte le nombre d’éléments.
e : Extrapole.
i : Informe sur les statuts.
v : Rapporte les volumes.
X : Liste les éléments extra-attribués.
z : Procède au test de courbure.
Caractéristiques du modèle :
A : Définit les constantes ajustables.
a : Procède à la normalisation de l’aire.
b : Définit les pressions corporelles.
f : Définit la constante de diffusion.
G : Définit la gravité.
J : Affiche les modifications à chaque mouvement.
k : Affiche la constante de saut au bord.
M : Sélectionne le modèle lineaire/quadratique.
m : Sélectionne un facteur de mouvement fixe.
p : Définit la pression ambiante.
Q : Rapporte ou définit des quantités.
U : Active la méthode du gradient conjugué.
W : Affiche l’homothétie.
Evolution de la surface :
g : Procède à une étape d’itération. g n pour n itérations successives.
j : Jiggle once.
K : Skinny triangle long edge divide.
l : Subdivise les arêtes trop longues.
N : Set target volumes to actual.
n : Notch ridges and valleys.
O : Pop non-minimal edges.
o : Pop non-minimal vertices.
r : Raffine la triangulation des facettes.
t : Elimine les arêtes petites.
u : Equiangularise la triangulation.
V : Affiche le centre de gravité de l’objet.
w : Elimine les petits triangles.
y : Torus duplication.
Z : Zoom in on vertex.
Exporter :
D : Toggle display every iteration.
d : Sauvegarde la surface dans un tableau de données.
P : Exporte sous un format graphique. P 3 pour le format postscript.
s : Visualise l’objet déformé ou non.
Divers :
F : Toggle command logging.
H,h,? : Active l’aide en ligne.
q,x : Quitte Surface evolver.
Les commandes G,j,l,m,n,t,w s’appliquent à des arguments réels, qui doivent être rentrés sur la même ligne (exemple
G 2) ou en réponse à une invite.
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 :
6.3 Script
Dans un script Surface Evolver, les commandes sont rentrées ligne par ligne et un retour-chariot exécute la ligne
sauf si la ligne se termine par \, la séquence se prolonge alors sur la ligne suivante. Dans une ligne de commande,
tout ... entre /*...*/ est ignoré, de même que tout ce qui suit //, ce qui est utile pour les commentaires. Plusieurs
commandes peuvent être séparées par ;.
Un script Surface Evolver comporte six (6) parties : les définitions et options ; les sommets ; les arêtes ; les faces ; les
corps initiaux ; les commandes. Les variables se déclarent par #define identifiant instruction, où instruction est
écrite à l’aide d’expressions numériques et de chaînes de caractères (entre quotes ou créées par la commande printf).
Les affectations sont stipulées par parameter identifiant = valeur. Les contraintes se définissent par la syntaxe :
code
1 constraint n. [ global
2 convex
3 nonnegative | nonpositive
4 nonwall
5 equation expr
6 formula expr
7 function expr ]
8 energy
9 e1: expr
10 e2: expr
11 e3: expr
12 content
13 c1: expr
14 c2: expr
15 c3: expr
où n. est le numéro de la contrainte ; global indique que la contrainte s’applique à tous les sommets ; convex requiert la
spécification d’une constante de saut au bord par la commande k ; equation définit l’ensemble de niveau zéro (contrainte
actuelle) ; energy signifie que les sommets et les faces sous la contrainte ont des énergies calculées en intégrant le champ
de vecteurs de composantes e1,e2,e3 ; content signifie que les arêtes sous la contrainte contribuent au calcul de l’aire
ou du volume du corps par l’intégrale du champ de vecteurs de composantes c1,c2,c3 ; expr sont les instructions de
définition. Les bords se définissent par la syntaxe :
code
1 boundary n. parameters m [ convex ]
2 x1: expr
3 x2: expr
4 x3: expr
5 energy
6 e1: expr
7 e2: expr
8 e3: expr
9 content
10 c1: expr
11 c2: expr
12 c3: expr
où n. est le numéro de la frontière ; m est le nombre de paramètres (deux au plus) de repérage ; convex requiert la
spécification, par la commande k, d’une énergie additionnelle, sur les arêtes situées sur la frontière ; x1,x2,x3 définissent
la paramétrisation de la frontière en fonction des paramètres de repérage ; energy signifie que les sommets et les faces
sur la frontière ont des énergies calculées en intégrant le champ de vecteurs de composantes e1,e2,e3 ; content signifie
que les arêtes sur la frontière contribuent au calcul de l’aire ou du volume du corps par l’intégrale du champ de vecteurs
de composantes c1,c2,c3 ; expr sont les instructions de définition écrites en fonctions des paramètres p1,p2 de repérage.
Les sommets se définissent par les syntaxes :
code
1 vertices
2 k x y z [ fixed constraint c1 (c2...) ]
3 k p1 (p2) boundary b [ fixed ]
où k est le numéro du sommet ; x,y,z sont les coordonnées du sommet ; fixed indique que le sommet demeure fixe ;
constraint indique que le sommet est astreint aux contraintes portant les numéros c1 (ou c2...) ; boundary indique
que le sommet est le point de coordonnées (x1(p1,p2), x2(p1,p2), x3(p1,p2)) sur la frontière numéro b. Les arêtes se
définissent par la syntaxe :
code
1 edges
2 k v1 v2 [ midv s1 s2 s3 fixed boundary b constraint c1 c2...\
3 tension density cste_expr color n no_refine noncontent ... ]
où k est le numéro de l’arête ; v1 est le numéro de sa queue ; v2 est le numéro de sa tête ; fixed indique que l’arête
demeure fixe ; constraint indique que l’arête est astreinte aux contraintes portant les numéros c1 (ou c2...) ; boundary
est utilisé lorsque les extrémités appartiennent à la même frontière ; no_refine signifie que l’arête ne peut être subdivisée
par la commande r ; noncontent indique que l’arête ne contribue pas au calcul du volume. Les faces se définissent par
la syntaxe :
code
1 faces
2 k e1 e2... [ fixed [ tension | density ] cste_expr boundary b constraint c1 c2...\
3 nodisplay color n frontcolor n backcolor n phase n noncontent ... ]
où k est le numéro de la face ; e1 e2... sont les numéros des arêtes constituant son bord (à donner dans le sens de la
normale intérieure pour le tire-bouchon et un numéro est à affecter d’un signe - lorsque l’arête est parcouru dans le
sens inverse de celui de sa définition dans la section edges du script) ; fixed indique que la face demeure fixe ; tension
ou density spécifie cste_expr, l’énergie par unité d’aire sur la face ; nodisplay rend invisible la face dans le terminal ;
color indique la couleur à attribuer aux deux côtés de la face, tandis frontcolor (resp. backcolor) indique celle du
côté positif (resp. négatif) de la face ; constraint indique que la face est astreinte aux contraintes portant les numéros
c1 (ou c2...) ; boundary ; noncontent indique que l’arête ne contribue pas au calcul du volume. Les corps initiaux se
définissent par la syntaxe :
code
1 bodies
2 k f1 f2 f3... [ volume v volconst vc pressure p density d phase n actual_volume v ... ]
où k est le numéro du corps ; f1 f2 f3... sont les numéros des faces constituant son bord ; volume indique que le corps
a un volume constant indiqué par v ; volconst spécifie vc, la constante d’ajustement du volume ; pressure indique que
le corps a une pression constante indiquée par p (elle est incompatible avec le volume constant) ; density indique que la
constante de gravitation G est à spécifier ; phase est utilisée pour calculer la tension superficielle sur les faces communes
à deux corps.
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
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)
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
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
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 * * *
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
Le solveur Freefem
Le solveur Freefem, qui tente de reproduire certaines fonctionnalités de FemLab, est un environnement interactif
libre conçu pour la modélisation et la simulation des processus physiques qui sont décrits par des équations aux dérivées
partielles (ingénieurie chimique, électromagnétisme, mécanique des structures etc). Freefem utilise une approximation
par la méthode des éléments finis, avec un maillage automatique ou adapté en éléments géométriques triangulaires ou
tétraédriques pour :
– résoudre des problèmes combinant plusieurs modèles,
– visualiser le maillage et les solutions en représentant les valeurs prises aux sommets du maillage en tons de couleurs,
– optimiser et procéder à des analyses paramétriques des performances,
– prédire des résultats.
Les points forts de Freefem sont son autonomie, sa gestion multiphysique, sa consommation faible de place mémoire et
sa rapidité de compilation.
Mots-clé : maillage ; nœud ; élément ; champ local ; formulation variationnelle ; discrétisation ; assemblage ; résolu-
tion ; exploitation.
7.1 Freefem++
Freefem++ est un logiciel libre conçu pour aider à la résolution numérique des équations aux dérivées partielles
(edp) en 2D par éléments finis triangulaires, avec maillage automatique et adaptatif. Il crée, édite et visualise une
triangulation conforme (ensemble de triangles recouvrant un domaine polygonal correspondant au domaine d’étude Ω,
avec les propriétés : l’intersection de deux triangles ne peut être que vide, un sommet ou une arête entière ; les coins du
domaine doivent être des sommets de la triangulation ; les coins du domaine approché doivent être sur la fontière du
domaine initial), représente graphiquement des fonctions sur une triangulation et résoud des edp.
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++
Les fonctions mathématiques s’écrivent : sin, cos, ln, exp, sqrt, abs, acos, asin, tan, cosh, sinh, tanh, one, min, max
et les opérateurs arithmétiques :
& : ET logique.
| : OU logique.
! : NON logique.
== : égalité.
!= : 6= ou différence.
<= : plus petit ou égal.
>= : plus grand ou égal.
^ : élevation à la puissance.
* : multiplication.
.* : multiplication terme à terme.
/ : division.
./ : division terme à terme.
id : identité.
dx(u) : ∂u/∂x.
dy(u) : ∂u/∂y.
dxx(u) : ∂ 2 u/∂x∂x.
dyy(u) : ∂ 2 u/∂y∂y.
dxy(u) : ∂ 2 u/∂x∂y.
laplace(u) : le laplacien ∆u.
dnu : dérivée normale. R
scal(u,v) :Rle produit scalaire Ω uv̄ dxdy
int1d(u) : RΓ u dl
int2d(u) : Ω u dxdy
Tous les types, opérateurs et fonctions s’obtiennent par dumptable(cout). Le type border permet de décrire les
mailleurs analytiques ou polygonaux. Chaque mailleur est décrit suivant l’algorithme de Delaunay-Voronoï, la taille des
triangles étant réglée par la taille des arêtes au bord du domaine (donc pour avoir un maillage fin, il faut raffiner le
bord) et les bords internes du maillage étant décrits dans le sens trigonométrique inverse de telle manière que le maillage
se trouve toujours à gauche. On peut adapter le maillage grâce à la commande adaptmesh par rapport à une fonction
analytique (de façon à minimiser l’écart par rapport à cette fonction) ou solution d’une edp précédemment calculée. Le
problème sera de définir un indicateur d’erreur local contenant les informations nécessaires pour optimiser le maillage.
Le solveur ne reconnaît que la formulation faible d’un problème (forme variationnelle linéaire ou bilinéaire). Pour
résoudre plusieurs edp, il est impératif de les coupler. Freefem++ permet la résolution de problèmes non stationnaires par
un schéma de type Euler implicite. Enfin, la mémorisation de résultats s’opèrent par : save(’u.dat’,u) qui sauve dans
le fichier u.dat les valeurs de la fonction u en chacun des points du maillage ; et leur consultation par : load(’u.dat’,u)
qui lit dans le fichier u.dat les valeurs de la fonction u en chacun des points du maillage.
mesh nom_maill=triangulate("xyf"); : construire une triangulation à partir d’un fichier de données donnant les co-
ordonnées des points du maillage.
La syntaxe pour définir, résoudre une edp ou un système d’edp sous des conditions aux limites et visualiser le résultat
est :
code
1 border nom_front(t_min,t_max){x:=f(t);y:=g(t);label=n.;};
2 mesh nom_maill=buildmesh(nom_front_1(+/-nmax_points_1)+...+nom_front_s(+/-nmax_points_s);
3 mesh nom_maill=square(nmax_points_absc,nmax_points_ordon [,expr1(x,y),expr2(x,y)]);
4 fespace nom_esp(nom_maill,type_ef);
5 nom_esp uh,vh; // fonctions inconnue et test
6 func nom_fonct_mem_droite = expr; // fonction intervenant dans l’edp
7 func nom_fonct_cond_lim = expr; // fonction intervenant aux limites
8 solve nom_probl(uh,vh) =
9 expr_mem_gauche
10 - expr_mem_droite
11 + on(nom_front_1,...,nom_front_s,uh=nom_fonct_cond_lim); // conditions aux limites
12 plot(uh,ps="nom_probl.ps" [,value=true,...]);
où plot possède de multiples arguments optionnels comme wait qui impose un arrêt sur image après visualisation
(c’est la forme prévue par défaut). Lorsque le maillage est défini par square, la partition de la frontière est donnée par
on(1,2,3,4,uh=nom_fonct_cond_lim);. La commande problem définit l’edp ou le système d’edp avec les conditions aux
limites, sans le résoudre. Sa syntaxe est identique à celle de solve et il spécifie en plus la méthode de résolution (LU par
défaut ; CG ; Crout ; Cholesky ; GMRES...).
code
1 border nom_front(t_min,t_max){x:=f(t);y:=g(t);label=n.;};
2 mesh nom_maill=buildmesh(nom_front_1(+/-nmax_points_1)+...+nom_front_s(+/-nmax_points_s);
3 mesh nom_maill=square(nmax_points_absc,nmax_points_ordon [,expr1(x,y),expr2(x,y)]);
4 fespace nom_esp(nom_maill,type_ef);
5 nom_esp uh,vh; // fonctions inconnue et test
6 func nom_fonct_mem_droite = expr; // fonction intervenant dans l’edp
7 func nom_fonct_cond_lim = expr; // fonction intervenant aux limites
8 problem nom_probl(uh,vh,solver=nom_solveur) =
9 expr_mem_gauche
10 - expr_mem_droite
11 + on(nom_front_1,...,nom_front_s,uh=nom_fonct_cond_lim); // conditions aux limites
12 nom_probl; // resoud le probleme
13 plot(uh,ps="nom_probl.ps" [,value=true,...]);
Enfin, varf définit les formes variationnelles utilisables pour la définition des membres de gauche et droite d’edp à
résoudre et l’opérateur convect(v1,v2,-dt,u0) = u0(P + v(P )dt) ayant pour syntaxe :
code
1 func u0 = expr; // l’initiale
2 real dt := val; // pas de temps
3 func v1 = expr; // abscisse de la vitesse
4 func v2 = expr; // ordonn\’ee de la vitesse
5 for i=val_min to val_max do { // nombre d’iterations
6 u =convect(v1,v2,-dt,u0);
7 u0=u; // recuperation a chaque iteration
8 plot(u);}; // trace pour toutes les iterations
aide à la résolution des équations paraboliques, elliptiques et hyperboliques, ou plus particulièrement des équations
de convection-diffusion en approximant (de manière stable et aux erreurs de quadrature près) les termes d’évolution-
1
convection ∂t u + v · ∇u, i = val_min, ..., val_max fois et à intervalle régulier de dt, par dt [ui+1 (P ) − ui (P + v(P )dt)].
7.1.4 Exemples
exemple 1
1 // -laplacien(v)=xy sur S^1 et v=0 au bord
2 border a(t=0,2*pi){x=cos(t);y=sin(t);label=5;};
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)
16 + on(1,2,4,u1=0,u2=0);
17
18 plot(coef=0.2,cmm=" [u1,u2] et p ",p,[u1,u2]);
19
20 Xh psi,phi;
21
22 solve streamlines(psi,phi) =
23 int2d(Th)( dx(psi)*dx(phi) + dy(psi)*dy(phi))
24 + int2d(Th)( -phi*(dy(u1)-dx(u2)))
25 + on(1,2,3,4,psi=0);
26
27 plot(psi,wait=1);
28 int i=0;
29 real nu=1./100.;
30 real dt=0.1;
31 real alpha=1/dt;
32
33 Xh up1,up2;
34
35 problem NS ([u1,u2,p],[v1,v2,q],solver=Crout,init=i) =
36 int2d(Th)(
37 alpha*( u1*v1 + u2*v2)
38 + nu * ( dx(u1)*dx(v1) + dy(u1)*dy(v1)
39 + dx(u2)*dx(v2) + dy(u2)*dy(v2) )
40 + p*q*(0.000001)
41 + p*dx(v1)+ p*dy(v2)
42 + dx(u1)*q+ dy(u2)*q
43 )
44 + int2d(Th) ( -alpha*convect([up1,up2],-dt,up1)*v1 -alpha*convect([up1,up2],-dt,up2)*v2 )
45 + on(3,u1=1,u2=0)
46 + on(1,2,4,u1=0,u2=0)
47 ;
48
49 for (i=0;i<=20;i++)
50 {
51 up1=u1;
52 up2=u2;
53 NS;
54 if ( !(i % 10))
55 plot(coef=0.2,cmm=" [u1,u2] et p ",p,[u1,u2]);
56
57 } ;
58 if ( (i % 10))
59 plot(coef=0.2,cmm=" [u1,u2] et p ",p,[u1,u2]);
60 streamlines;
61 plot(psi,wait=1);
7.2 Freefem3d
Freefem3d est un logiciel libre conçu pour aider à la résolution numérique des équations aux dérivées partielles
(edp) en 3D par la méthode des éléments finis tétraédriques de Galerkin appliquée à la formulation variationnelle ou
forte du problème, avec maillage automatique et adaptatif. Il nécéssite la connaissance des logiciels povray pour décrire
la géométrie du domaine de résolution et les cœfficients de discrétisation, medit (sous Windows ou Linux) et opendx
(sous Linux) pour visualiser graphiquement les solutions du système.
Pour visualiser le résultat de la compilation, on saisit depuis le terminal l’instruction medit nom_recuperation, qui lit
les valeurs de la fonction nom_solution en chacun des points du maillage nom_maillage.
Dans un script Freefem3d, toutes les variables sont déclarées avec leurs types. Les principaux types de variables sont :
bool pour les valeurs de vérité ;
double pour les réels ;
vector pour les vecteurs ;
vertex pour les points P ;
function pour les fonctions s’appliquant en P ;
femfunction pour les fonctions retournant les valeurs en les points d’un maillage par éléments finis ;
scene pour les constituants de la frontière du domaine de résolution ;
mesh pour un maillage par éléments finis ;
domain pour le domaine de résolution ;
solve pour définir un système d’edp et le résoudre ;
ofstream pour créer et envoyer dans un fichier.
On distingue également les expressions globales : x,y,z les coordonnées du point courant P ; u,v les paramètres en
fonction desquels les coordonnées d’un point courant sont exprimées ; solver la méthode d’éléments finis choisie ; N le
vecteur normal au point courant ; cout << "nom_var_aff =" << expr << "\n"; pour afficher le résultat du calcul de
expr sous la forme nom_var_aff = resultat (remarquer que "\n" marque la fin d’une ligne d’affichage) ; true vrai ;
false faux ; De plus,
Les fonctions mathématiques s’écrivent : sin, cos, ln, exp, sqrt, abs, acos, asin, tan, cosh, sinh, tanh, one, min, max
et les opérateurs arithmétiques et de différentiations partielles :
& : ET logique.
| : OU logique.
! : NON logique.
== : égalité.
!= : 6= ou différence.
<= : plus petit ou égal.
>= : plus grand ou égal.
^ : élevation à la puissance.
* : multiplication.
.* : multiplication terme à terme.
/ : division.
./ : division terme à terme. R
f*u : discrétisée par l’opérateur bilinéaire : Ω f u v dP , ∀v ∈ H01 (Ω).
R
dx(u) : ∂u/∂x discrétisée par l’opérateur bilinéaire : Ω ∂x u v dP , ∀v ∈ H01 (Ω).
R
dy(u) : ∂u/∂y discrétisée par l’opérateur bilinéaire : Ω ∂y u v dP , ∀v ∈ H01 (Ω).
R
f*dz(u) : f ∂z u discrétisée par l’opérateur bilinéaire : Ω f ∂z u v dP , ∀v ∈ H01 (Ω).
R
dx(f*dy(u)) : ∂x (f ∂y u) discrétisée par l’opérateur bilinéaire : − Ω f ∂y u ∂x v dP , ∀v ∈ H01 (Ω).
R
dx(dx(u))+dy(dy(u))+dz(dz(u)) : ∂x22 u+∂y22 u+∂z22 u discrétisée par l’opérateur bilinéaire : − Ω (∂x u ∂x v+∂y u ∂y v+
∂z u ∂z v) dP , ∀v ∈ H01 (Ω).
grad(u) : le gradient de u.
div(u) : la divergence de u. R
div(grad(u)) : le laplacien ∆u, discrétisé par l’opérateur bilinéaire : − Ω ∇u · ∇v dP , ∀v ∈ H01 (Ω).
dnu(u) : dérivée conormale de u, intégrant provenant de l’application de la formule de Green dans la formulation
variationnelle du problème.
R
int(Gamma)(u) : Γ u ds, intégration dans R2 .
R
int(u) : Ω u dP , intégration dans R3 .
convect(u,v1,v2,v3) : = u(P + v(P )), où v = (v1, v2, v3) est la vitesse de convection, approxime le terme
d’évolution-convection ∂t u + v · ∇u, par la méthode des caractéristiques discrète.
• sphere {<x0,y0,z0>, R, pigment{color rgb <a,b,c>}} : la sphère de centre le point (x0 , y0 , z0 ), de rayon R et
ayant pour label <a,b,c>.
• box {<x0,y0,z0>, <x1,y1,z1>, translate <v1,v2,v3> pigment{color rgb <a,b,c>}} : la boîte parallélépipédi-
que construite sur les points (x0 , y0 , z0 ) et (x1 , y1 , z1 ), translatée suivant le vecteur (v1 , v2 , v3 ) et ayant pour label
<a,b,c>.
• cylinder {<x0,y0,z0>, <x1,y1,z1>, R, pigment{color rgb <a,b,c>}} : le cylindre d’axe la droite passant par
les points (x0 , y0 , z0 ) et (x1 , y1 , z1 ), de rayon R et ayant pour label <a,b,c>.
• cone {<x0,y0,z0>, R0, <x1,y1,z1>, R1, pigment{color rgb <a,b,c>}} : le cône d’axe la droite passant par
les points (x0 , y0 , z0 ) et (x1 , y1 , z1 ), dont la coupure orthogonale en (x0 , y0 , z0 ) (resp. (x1 , y1 , z1 )) est le cercle de
rayon R0 (resp. R1), et ayant pour label <a,b,c>.
• plane {<a,b,c>,d, pigment{color rgb <k,l,m>}} : le plan déquation ax + by + cz = d, et ayant pour label
<k,l,m>.
• quadric {<a,b,c>, <d,e,f>,<g,h,i>,j, pigment{color rgb <k,l,m>}} : la quadrique d’équation ax2 + by 2 +
cz 2 + dxy + exz + f yz + gx + hy + iz + j = 0, et ayant pour label <k,l,m>.
• cubic {<a0,...,a19>, pigment{color rgb <k,l,m>}} : la cubique d’équation a0x3 + · · · + a19 = 0, et ayant
pour label <k,l,m>.
• poly {n,<a_0,...,a_m>, pigment{color rgb <k,l,q>}} : la surface définie par le polynôme de degré n et dont
les cœfficients sont a0 , · · · , m = 1 + (n + 1)(n + 2)(n + 3)/6, et ayant pour label <k,l,q>.
• union{objet1 objet2 pigment{color rgb <a,b,c>}} : la réunion ensembliste.
• intersection{objet1 objet2 pigment{color rgb <a,b,c>}} : l’intersection ensembliste.
• difference{objet1 objet2 ... objetS pigment{color rgb <a,b,c>}} : la différence ensembliste des S − 1 der-
niers objets de la première.
<a,b,c> : désigne la référence d’un objet géométrique et indique le nombre de degrés de liberté de l’objet.
double nom_var = val; : affecte la valeur val à la variable nommée nom_var.
vertex nom_point = (x0,y0,z0); : définit le point de coordonnées (x0 , y0 , z0 ).
vector nom_vec = (v1,v2,v3); : définit le vecteur de coordonnées (v1 , v2 , v3 ).
function nom_fonc = expr; : définit la fonction ayant pour expression expr.
scene nom_scene = pov("fichier.pov"); : définit à l’aide des objets décrits dans fichier.pov, tous les éléments
constitutifs de la frontière du domaine de résolution. Lorsque plusieurs scènes sont définies, c’est la dernière qui
est activée pour ff3d. On spécifie la scène désirée par l’instruction using nom-scene_desiree;.
domain nom_dom = domain(nom_scene [,inside(ref_obj) && outside(ref_obj)]); : définit le domaine de résolution,
en tant qu’intérieur ou extérieur des éléments de la frontière.
mesh nom_maill = structured(nom_vec,nom_point1,nom_point2); : pour un maillage volumique structuré : boîte
construite sur nom_point1 et nom_point2 et divisée dans chaque direction suivant les coordonnées de nom_vec.
mesh nom_maill = surface(ref_objet,nom_scene,nom_maill_struc); : pour un maillage surfacique (uniquement pour
les calculs d’intégrales).
femfunction nom_ffonc(nom_maill) = expr; : définit la fonction ayant pour expression expr sur les points du maillage
nom_maill.
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.
structure .mesh
1 MeshVersionFormatted 1
2 Dimension
3 val_dim
4 Vertices
5 nbre_points
6 x^i_{j=1,...,val_dim}, ref^i, i=1,...,nbre_points
7 Entity
8 nbre_entite
9 x^i_{j=1,...,degre_liberte_entite}, ref^k, i=1,...,nbre_points, k=1,...,nbre_entite
et
structure .bb
1 val_dim nbre_solutions nbre_points type
2 v^i, i=1,...,nbre_solutions x nbre_points
avec val_dim la dimension de l’espace, nbre_points le nombre de sommets du maillage, x^i_j les coordonnées des som-
mets du maillage, ref^i leurs références associées, Entity ∈ {Edges, Triangles, Quadrilaterals, Tetrahedra, Hexahedra},
nbre_entite le nombre d’entités de ce type, nbre_solutions le nombre d’inconnues solutions dont on recueille les valeurs
prises v^i (représentées par des tons de couleurs) aux sommets du maillage.
L’instruction medit nom_fichier_sauvegarde active l’opérateur de visualisation medit, lit tous les fichiers préfixés
par nom_fichier_sauvegarde, puis affiche dans une fenêtre graphique le maillage en mode fil-de-fer. La souris permet
d’agir sur l’objet graphique soit en modifiant son apparence (filaire, plan de coupe...), soit en lui appliquant des trans-
formations (rotation, translation, zoom...). En tapant :
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
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))
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";
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);
Aujourd’hui le logiciel R s’impose comme l’outil libre d’analyse de données universellement utilisé par tous les
statisticiens professionnels. R est un langage de programmation interactif interprété et orienté objet contenant une très
large collection de méthodes statistiques et des facilités graphiques importantes. Ce petit guide se propose de présenter
les fonctionnalités du programme R utilisées le plus couramment en fouille de données.
115
CHAPITRE 8. LE LOGICIEL DE CALCUL STATISTIQUE R 8.1. PRISE EN MAINS DE R
- : soustraction
* : multiplication
^ : puissance
.* : multiplication terme à terme
/ : division
./ : division terme à terme
%/% : division euclidienne
%% : reste de la division euclidienne
%x% : produit de Kronecker
choose(n,k) : Cn k
nom_vec <- c(elt1,elt2,...) : crée le vecteur ligne (elt1, elt2, ...) et l’affecte à la variable nommée nom_vec
nom_vec[-i] : supprime la ie coordonnée de nom_vec
nom_vec[i] : affiche la ie coordonnée de nom_vec
nom_vec[i,j,k] : affiche les ie , je et ke coordonnées de nom_vec
nom_vec[i:j] : affiche de la ie à la je coordonnées de nom_vec
rep(nom_vec,times=n) : produit le vecteur formé de n copies successives de nom_vec
length(nom_vec) : longueur (nombre d’élément) de la variable nom_vec
sum(nom_vec) : affiche la somme des éléments de nom_vec
cumsum(nom_vec) : affiche la somme cumulée des éléments de nom_vec
prod(nom_vec) : affiche le produit des éléments de nom_vec
cumprod(nom_vec) : affiche le produit cumulé des éléments de nom_vec
factor(nom_vec, labels=c("niveau1",...,"niveauN")) : affiche une variable catégorielle avec les niveaux de
valeurs de nom_vec
min(nom_vec) : affiche la valeur minimale parmi les coordonnées de nom_vec
Les matrices de plus de deux dimensions dans R : On les rencontre, par exemple, pour décrire des tableaux de
contingence avec plus de deux variables.
array(nom_vec,c(nbre_lig,nbre_col,nbre_mat)) : crée un tableau de nbre_lig lignes, nbre_col colonnes et
nbre_mat matrices avec les éléments de nom_vec rangés en colonnes, successivement dans les nbre_mat matrices.
nom_arr1 %o% nom_arr2 : produit extérieur (tous les produits possibles).
outer(nom_arr1,nom_arr2,nom_fonct) : produit extérieur (tous les produits possibles par nom_fonct).
La somme des écarts minimale est la somme des écarts à la médiane, et 50% de la population prennent des valeurs
appartenant à l’intervalle interquartile [Q1 , Q3 ]. Les quartiles permettent d’évaluer la symétrie de la distribution par le
biais du cœfficient de Yule :
(Q3 − mediane) − (mediane − Q1 )
Y ule = ,
(Q3 − mediane) + (mediane − Q1 )
qui s’interprète :
= 0 symétrique (mode = médiane = moyenne)
Y ule < 0 oblique à droite (mode > médiane > moyenne)
> 0 oblique à gauche (mode < médiane < moyenne)
Les distributions :
Pour chaque distribution, on dispose de quatre commandes préfixées par une des lettres d, p, q, r et suivie du
nom de la distribution :
dnom_dist : pour définir la fonction de densité (resp. la fonction de probabilité), P (X = k), d’une distribution de
probabilité continue (resp. d’une distribution discrète),
pnom_dist : pour définir la fonction de répartition, F (x) = P (X ≤ x), ou densité de probabilité cumulée,
qnom_dist : pour définir la fonction des quantiles, c’est-à-dire la valeur pour laquelle la fonction de répartition
atteint une certaine probabilité ; dans le cas d’une variable discrète, cette fonction renvoie le plus petit entier u
tel que F (u) > p,
rnom_dist : pour pouvoir générer des réalisations aléatoires indépendantes de la distribution nommée nom_dist.
binom(size=n,prob=p) : loi Binomiale. Soit (X1 , . . . , Xn ) (où Xi , i = 1, . . . , n, est une loi de Bernouilli de
probabilité
P P (Xi = 1) = p et Xi = {0, 1}) le résultat de n tirages non exhaustifs (avec remise). Alors la variable
X := n n
i=1 Xi donnant le nombre de 1 dans chaque tirage (x1 , . . . , xn ) ∈ ×i=1 Xi (Ω) est régie par :
P (X = k) = Cnk pk (1 − p)n−k
E(X) = np
V (X) = np(1
“ − p) ” n
ϕX (t) = (1 − p) + peit
f(df1=m1,df2=m2) : loi de Fisher-Snedecor, qui est utilisée pour comparer deux variances observées et qui sert
surtout dans les très nombreux tests d’analyse de variance et de covariance. Elle est régie par :
m2
E(X) = m2 −2
, si m2 > 2
2m22 (m1 +m2 −2)
V (X) = m1 (m2 −4)(m2 −2)2
, si m2 > 4
λν
gamma(shape=ν,scale=λ [1]) : loi Gamma de densité fX (x) = Γ(ν)
e−λx xν−1 1[0,+∞[ (x). On a :
ν
E(X) = λ
ν
V (X) = λ2
“ ”ν
λ
ϕX (t) = λ−it
geom(prob=p) : loi Géométrique. Soit X1 une loi de Bernouilli de probabilité P (X1 = 1) = p et X1 = {0, 1}. Alors
la variable X donnant le nombre d’expériences successives nécessaires pour arriver à 1, est régie par :
P (X = k) = p(1 − p)k−1
E(X) = p1
1−p
V (X) = p2
hyper(Np,N(1-p),n) : loi Hypergéométrique. Soit (X1 , . . . , Xn ) (où Xi , i = 1, . . . , n, est une loi de Bernouilli
de probabilité
P P (Xi = 1) = p et Xi = {0, 1}) le résultat de n tirages exhaustifs (sans remise). Alors la variable
X := n n
i=1 Xi donnant le nombre de 1 dans chaque tirage (x1 , . . . , xn ) ∈ ×i=1 Xi (Ω − {w1 , . . . , wi−1 }) est régie,
si N = cardΩ (Np est le nombre de 1 dans la population totale et N(1-p) y est le nombre de 0), par :
k n−k
CN p CN (1−p)
P (X = k) = n
CN
E(X) = np
V (X) = N−n
N−1
np(1 − p), N−n
N−1
est le facteur d’exhaustivité
lnorm(meanlog=m [0],sdlog=σ [1]) : loi Log-Normale définie par X = eσY +m , où Y est une loi normale de
moyenne 0 et d’écart-type 1. On a :
σ2
E(X) = em+ 2
2 2
V (X) = (eσ − 1)e2m+σ
x−m x−m
1
logis(location=m [0],scale=s [1]) : loi Logistique de densité fX (x) = s
e s (1 + e s )−2 . On a :
1
FX (x) =
1+ e− x−m
s
E(X) = m
π2
V (X) = 3s2
1 2
norm(mean=m [0],sd=σ [1]) : loi Normale de densité fX (x) =
σ
√1
2π
e− 2σ2 (x−m) , avec X ∼ norm(m, σ) ⇔
X−a
b−a
∼ norm(0, 1). On a :
E(X) = m
V (X) = σ2
σ 2 t2
ϕX (t) = eimt− 2
pois(lambda=λ) : loi de Poisson. La variable X prend ses valeurs dans X = {0, 1, . . .} et sa fonction de probabilité
λk −λ
e
est donnée par : P (X = k) = k!
, une décroissance rapide en fonction de k (c’est la loi des événements rares
cadencés). On a :
E(X) = λ
V (X) = λ
it
ϕX (t) = eλ(e −1)
“ ” m+1
2 − 2 R
t(df=m) : loi de Student de densité fX (x) = √
1
1,m) 1+ xm , avec : β(p, q) := 01 tp−1 (1−t)q−1 dx. Elle
m β( 2 2
est utilisée lors des tests de comparaison de paramètres comme la moyenne, et dans l’estimation de paramètres
de la population à partir de données sur un échantillon. On a :
E(X) = 0
m
V (X) = m−2
1 X−a
unif(min=a [0],max=b [1]) : loi Uniforme de densité fX (x) = b−a 1[a,b[ (x), avec X ∼ unif([a, b]) ⇔ b−a
∼
unif([0, 1]). On a :
E(X) = 21 (a + b)
1
V (X) = 12 (a + b)2
a x a−1 −( x )a
weibull(shape=a,scale=b [1]) : loi de Weibull de densité f (x) = ( )
b b
e
b , pour x > 0. On a :
−( x )a
FX (x) = 1 − e b
1
E(X) = bΓ(1
“ + a
) ”
2 1
V (X) = b2 Γ(1 + a
) − Γ2 (1 + a
)
wilcox(m,n) : loi de Wilcoxon. Soit (X1 , . . . , Xm ) et (Y1 , . . . , Yn ) deux listes de nombres aléatoires. Alors la
variable X donnant le nombre de couples (Xi , Yj ), tels que Xi ≥ Yj , prend ses valeurs dans X = {0, 1, . . . , mn}
et on a :
E(X) = mn 2
mn(m+n+1)
V (X) = 12
Les fonctions de statistique exploratoire dans R :
summary(nom_objet) : renvoie un résumé sur le contenu d’un objet créé.
table(nom_var) : affiche la table des éffectifs.
table(factor(cut(nom_var1,breaks=35+10*(0:7))),nom_var) : affiche la table des éffectifs suivant les intervalles
à bords spécifiés.
table(nom_var1,nom_var2) : affiche le tableau de contingence de deux variables.
mean(nom_var) : calcule la moyenne empirique de la variable nommée nom_var.
median(nom_var) : calcule la médiane de la variable nommée nom_var.
quantile(nom_var) : calcule les quantiles empiriques de la variable nommée nom_var.
sd(nom_var) : calcule l’écart-type de la variable nommée nom_var.
var(nom_var) : calcule la variance empirique de la variable nommée nom_var d’estimateur non biaisé.
hist(nom_var[,nclass=n,breaks=c(born1,...,bornN),xlab="...",ylab="...",col="nc1",border="nc2"]) : af-
fiche l’histogramme de la variable nommée nom_var. L’argument nclass fixe la largeur de chaque classe à
Xmax −Xmin
, qui est par défaut, fixée soit par la règle de Sturge : 1 + 3, 3 ln(nbreV ), soit par celle de Yule :
√n
2, 5 4 nbreV ; breaks est un vecteur (donnant les bornes des classes) ou un nombre (fixant le nombre de classes) ;
xlab (resp. ylab) pour mettre une légende sur l’axe des abscisses (resp. des ordonnées) ; col (resp. border) pour
dfinir la couleur de remplissage nc1 (resp. des traits de contour des rectangles). On construit l’histogramme des
fréquences (au lieu des effectifs) avec l’argument optionnel probability=TRUE ou prob=TRUE.
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() :
Une fenêtre graphique vide s’obtient par windows() sous Windows et x11() sous Unix. Il existe des commandes
de bas-niveau permettant de faire des ajouts aux graphiques :
arrows(x1,y1,x2,y2) : trace une flèche joignant les points dont les coordonnées sont données.
segment(x1,y1,x2,y2) : trace un segment joignant les points dont les coordonnées sont données.
text(x0,y0[,val_label],"...") : pour mettre une étiquette au point (x0 , y0 ).
legend(x0,y0,"..."[,fill=n]) : pour mettre une légende au point (x0 , y0 ), avec une boîte de la couleur corres-
pondante au numéro n.
title(sur_titre[,sous_titre]) : pour sur-titrer un graphique et optionnellement le sous-titrer.
abline(a,b) : pour tracer la droite oblique d’équation y = ax + b.
abline(h=y0) : pour tracer la droite horizontale d’équation y = y0 .
abline(v=x0) : pour tracer la droite verticale d’équation x = x0 .
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 :
hclust(dist(x),"com") : pour classer les individus à l’aide d’un dendogramme, en indiquant la matrice des
données et la méthode de classification complete (peut être remplacée par average ou centroid). La fonction
retourne :
– merge : la construction étape par étape de l’arbre hiérarchique,
– height : la matrice (n − 1,n − 1) de vaeurs réels croissantes,
– order : la matrice d’ordre de l’arbre.
princomp(x,cor=faux,scores=vrai,covmat=vrai) : pour une ACP centrée et non réduite des données x, avec
production des coordonnées sur les composantes principales et de la matrice de covariances-variances. Cette
instruction retourne après exécution une liste de résultats qui sont :
– x : contient les coordonnées des variables suivant les nouveaux axes obtenus,
– sdev : l’écart-type des composantes principales,
– loadings : les vecteurs propres,
– scores : les coordonnées sur les composantes principales,
– scale : les écarts-types des variables de départ,
– center : les moyennes des variables de départ,
– N.obs : le nombre d’observations.
prcomp(x,rect=vrai,center=vrai,scale=vrai) : pour une ACP centrée et réduite des données x. Cette instruc-
tion retourne après exécution la liste de résultats suivants :
– x : contient les coordonnées des variables suivant les nouveaux axes obtenus,
– sdev : contient l’écart-type des composantes principales,
– rotation : contient les coordonnées des vecteurs propres,
– center : contient les moyennes des variables de départ,
– scale : contient les écars-types des variables de départ.
En outre, le laboratoire de biométrie et biologie évolutive de l’Université Lyon 1 a développé le package ade4
(avec une interface graphique ade4TkGUI) qui permet d’opérer des ACP avec la commande :
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)
Si trouver dans un n-échantillon d’une N -population un résultat de j opinions favorables, conduit à penser qu’il y a
entre a et b opinions favorables dans toute la population avec α% de chance de se tromper, alors on dit [a, b] est appelé
intervalle de confiance au risque de α% ou au niveau de confiance de 100 − α%. On obtient l’intervalle de confiance avec
le programme R par : prop.test(taille_ech,taille_pop,conf=0.n).
8.3.4 Re-échantillonnage
Un échantillon est aléatoire lorsque chaque individu de la population a une probabilité connue et non nulle d’apparte-
nir à l’échantillon. On a le prélèvement au hasard, qui assure l’indépendance des erreurs et l’absence d’autocorrélations
parmi les données relatives à un même caractère : sample(nom_vec,n,replace=TRUE [FALSE]) : échantillonnage à n
éléments avec remise dans les coordonnées de nom_vec. Le bootstrap et le Jacknife sont d’autres techniques d’échan-
tillonnage couramment utilisées.
Bootstrap dans R : Le principe de bootstrap est de baser la mesure de l’erreur d’échantillonnage sur le seul échan-
tillon. La syntaxe d’utilisation est :
Jacknife dans R : Le principe du Jacknife est d’énumérer tous les sous-échantillons de l’échantillon observé, obtenu
par élimination d’un seul point. Si l’échantillon de départ contient n points, il y a n sous-échantillons de taille
n − 1. L’objectif est de voir si la suppression d’un point influe beaucoup sur la statistique étudiée. La syntaxe
d’utilisation est :
La description d’une primitive Maxima s’ordonne principalement par l’instruction describe(nom_primitive). Les
programmes de démonstrations sont accessibles par demo("nom_demo.dem"), où nom_demo peut prendre les valeurs :
array, cf, dblint, declin, delta, demo, differ, eaton1, eaton2, eigen, ezgcd, functs, hypgeo, lrats, macex, macro,
nchrpl, newfac, optvar, pfaff, qq, recur, rncomb, rombrg, subscr, sumcon, trgsmp, vect.
Les exemples d’utilisations de certaines commandes sont disponibles et s’obtiennent en tapant example(nom_comm),
où nom_comm peut être :
"//" ADDITIVE ALGSYS ALLROOTS ANTISYMMETRIC APPEND
ARRAYINFO ARRAYS AT ATVALUE AUGCOEFMATRIX BEZOUT
BLOCK BOTHCOEFF CATCH CF CFDISREP CFEXPAND
CHANGEVAR CHARPOLY COEFF COMBINE COMMUTATIVE COMPLEX
CONTENT DEFMATCH DEFTAYLOR DELETE DEPENDS DERIVDEGREE
DESOLVE DIFF DISPLAY DIVIDE DO DOTSCRULES
DPART ECHELON ELIMINATE ENTERMATRIX EQUATIONS EV
EVALUATION EVENFUN EXP EXPAND FACTCOMB FACTOR
FACTORSUM FEATUREP FREEOF FULLMAP FULLMAPL FUNCSOLVE
FUNCTIONS GENMATRIX GET GFACTOR GRADEF HORNER
IF ILT INPART INTEGRATE IS ISOLATE
LAMBDA LAPLACE LASSOCIATIVE LET LETRULES LIMIT
LINEAR LINSOLVE LISTOFVARS LISTS LOGCONTRACT MAP
MATCHDECLARE MATRICES MINFACTORIAL MULTIPLICATIVE MULTTHRU NARY
NOUNIFY NROOTS NUMFACTOR NUSUM ODDFUN ODE2
OPTIMIZE ORDERGREAT ORDERLESS OUTATIVE PART PARTFRAC
PARTITION PICKAPART POISSIMP POLARFORM POLY_DISCRIMINANT POSFUN
POWERSERIES PRINTPROPS PRODUCT PROPERTIES PROPVARS QUNIT
RADCAN RANK RASSOCIATIVE RATCOEFF RATDIFF RATEXPAND
RATSIMP RATSUBST RATWEIGHT REALPART REALROOTS RESIDUE
RESULTANT REVEAL REVERSE RISCH ROOTSCONTRACT SCANMAP
SCSIMP SOLVE SPECINT SQFR SUBST SUBSTINPART
SUBSTPART SUM SYMMETRIC SYNTAX TAYLOR TAYTORAT
TELLRAT TELLSIMP TRIANGULARIZE TRIG TRIGEXPAND TRIGREDUCE
UNORDER XTHRU ZEROEQUIV
129
CHAPITRE 9. LE SYSTÈME FORMEL MAXIMA 9.2. PRIMITIVES MAXIMA
Les packages supplémentaires sont disponibles avec l’instruction load(nom_package) ;, où nom_package peut être :
asympa, pdiff, qual pour le calcul mathématique ; dimen, dimension, physconst pour la physique
Entrées/Sorties :
save("nom_fichier.max",all) : sauve sur disque une session Maxima dans un fichier
writefile("nom_fichier.txt",all) : enregistre une session Maxima dans un fichier texte
loadfile("chemin/nom_fichier.max") : charge le contenu d’un fichier
batch("chemin/nom_fichier.max") : exécute avec echo le contenu d’un fichier
kill(nom_var) : supprime une variable, ainsi que son contenu et ses propriétés
restart : commence une nouvelle session maxima
Constantes :
%e : la base du logarithme néperien
√
%i : le nombre complexe −1
%pi : le nombre π
inf : infini
minf : moins infini
true : le bouléen vrai
false : le bouléen faux
Opérations arithmétiques :
+ : addition
- : soustraction
* : produit
/ : division
^ : élevation à la puissance
. : produit matriciel
>= : supérieur ou égal
: : opérateur d’assignation d’une valeur à une variable
:= : opérateur de définition d’une fonction
= : indique une équation
fpprec:nbr : fixe le nombre de décimales à nbr. La valeur par défaut est 16.
expr,numer : affiche la valeur numérique d’une expression symbolique
realpart(compl) : partie réelle d’un complexe
imagpart(compl) : partie imaginaire d’un complexe
expand(expr) : développe une expression
factor(expr) : factorise une expression
num(expr) : affiche le numérateur d’une expression
denom(expr) : affiche le dénominateur d’une expression
coeff(expr,nom_var,n) : affiche le cœfficient du terme d’ordre n en la variable npm_var dans une expression
fonctions primitives
sin(...) : sinus
cos(...) : cosinus
tan(...) : tangente
cot(...) : cotangente
csc(...) : cosecante
sec(...) : secante
asin(...) : Arcsinus
acos(...) : Arccosinus
atan(...) : Arctangente
acot(...) : Arccotangente
acsc(...) : Arccosecante
asec(...) : Arcsecante
sinh(...) : sinus hyperbolique
cosh(...) : cosinus hyperbolique
tanh(...) : tangente hyperbolique
coth(...) : cotangente hyperbolique
csch(...) : cosecante hyperbolique
sech(...) : secante hyperbolique
sqrt(...) : racine carrée
abs(...) : valeur absolue
exp(...) : exponentielle
ln(...) : logarithme néperien
Calculs :
sum(expr,nom_compteur,nbr1,nbr2) : somme discrète incrémentée
lsum(expr,nom_compteur,[liste_valeurs]) : somme discrète incrémentée sur une liste de valeurs
product(expr,nom_compteur,nbr1,nbr2) : produit discret incrémenté
limit(expr,nom_var,point [,plus minus])| : calcule la limite de expr en un point, par valeurs supérieures ou
inférieures
diff(expr,nom_var,n) : dérivée ne de expr
integrate(expr,nom_var) : affiche une primitive de expr
integrate(expr,nom_var,val1,val2) : calcule une intégrale définie de expr
taylor(expr,nom_var,point,ordre) : affiche le développement en série de Taylor de expr en un point jusqu’à un
ordre donné
Polynômes :
expr,nom_var=expr_subst : substitue expr_var à la variable de expr
ratsimp(expr) : rend au même dénominateur une expression
Equations :
solve([equ1,...,equN],[inc1,...,incS]) : résoud un système d’équations
’diff(y,x,n) : notation différentielle dn y/dxn (sert à écrire les équations différentielles)
ode2(expr,fonct_inc,nom_var) : résoud une équation différentielle ordinaire
rhs(nom_equ) : affiche le membre de droite d’une équation
lhs(nom_equ) : affiche le membre de droite d’une équation
Trigonométrie :
trigexpand(expr) : simplifie une expression en utilisant les formules trigonométriques
trigreduce(expr) : convertit une expresion en une somme de termes, dans chacun desquels sin ou cos n’apparaît
qu’une seule fois en facteur
Matrices :
entermatrix(nbr_lig,nbr_col) : appel à la construction élément par élément d’une matrice
matrix([a11,...,a1S],...,[aR1,...,aRS]) : construit une matrice de type (R,S)
transpose(nom_mat) : transpose une matrice
determinant(nom_mat) : affiche le déterminant d’une matrice
invert(nom_mat) : inverse une matrice
eigenvalues(nom_mat) : affiche les valeurs propres d’une matrice et leurs multiplicités
eigenvector(nom_mat, val_propre) : affiche un vecteur propre associé à une valeur propres
eigenvectors(nom_mat) : affiche les valeurs propres, leurs multiplicités et les vecteurs propres d’une matrice
normalise : true : configure Maxima pour des sorties normalisées de l’exécution des commandes à venir
Suites :
difference(%,nom_suite) : exprime le terme général de la suite en fonction de l’indice
differverbose : true : configure Maxima pour des sorties normalisées de l’exécution des commandes à venir
[1] Baudoin M., Apprends LATEX, Ecole nationale supérieure de techniques avancées, 1997.
[2] Brakke K., Surface Evolver manual, 2003.
[3] Bressan S. - Gurari E., TEXProject manual, 2001.
[4] Delafond G., Guide de survie sous Linux, v.06/06/2004.
[5] Del Pino S. - Pironneau O., ff3d documentation, 2003.
[6] Eisenbud D. - Grayson D. - Stillman M. - Sturmfels B., Computations in algebraic geometry with Macaulay2, 2001.
[7] Frey P., Medit : outil interactif de visualisation de maillages, rapport technique Inria 0247, 2001.
[8] Frey P. - Saiac J-H, Simulation numérique en géométries complexes : apport des techniques modernes de l’adapta-
tion de maillages, ressource pédagogique L2, Jussieu, 2004.
[9] Girou D., Seminar FAQ, v 2.1, 1997.
[10] Goossens M. - Mittelbach F. - Samarin A., The LATEX companion, Addison-Wesley publishing, Massachussetts,
1994.
[11] Guarrigues J., La méthode des éléments finis, Notes de cours, 2002.
[12] Hand R., Introduction to Macsyma, Cornell University, 2000.
[13] Hecht F. - Ohtsuka K. - Pironneau O., Freefem++ manual, 2003.
[14] INRIA Meta2 Project/ENPC Cergrence, Scilab reference manual, 1997.
[15] Kelley C. - Williams T., Gnuplot, An interactive ploting program, 1998.
[16] Lamport L., LATEX : a document preparation system, Addison-Wesley publishing, Massachussetts, 2nd edition,
1994.
[17] Lévy B., Méthodes numériques pour la modélisation 3D, notes de cours, 2000.
[18] Lobry J., Régression non linéaire, notes de travaux dirigés, 2005.
[19] Œtiker T. - Partl H. - Hyna I. - Schlegl E. - Flipo D., Une courte introduction à LATEX 2ε , 2005.
[20] Paradis E., R pour les débutants, rapport technique ISE-Univ-Montpellier, 2005.
[21] Rolland C., LATEX par la pratique, Editions O’Reilly, 1999.
[22] Viennet E., Introduction au système Unix, 2001.
133