Gnuplot est un logiciel permettant d'effectuer des représentations graphiques à partir de données stockées dans un fichier ou à partir de l'équation d'une courbe. Dans le cadre du module "Preuves et Analyse d'Algorithmes", cet utilitaire vous permettra de comparer l'évolution du temps d'exécution de certains algorithmes avec des courbes connues. Pour lancer le logiciel il suffit de taper la commande gnuplot (dans ce qui suit on mettra en italique ce qui s'affiche à l'écran suite aux différentes commandes exécutées, le caractère % symbolise le prompt de votre interprète de commande):
% gnuplot
G N U P L O T
Linux version ???
.
.
.
Terminal type set to 'x11'
gnuplot>
Vous vous retrouvez alors sous le prompt de l'interprète de commande du logiciel. Pour une aide complète, tapez la commande help. Nous nous contenterons dans cette introduction de décrire uniquement une partie du fonctionnemment de la commande plot permettant de tracer un graphique.
La commande plot
Dans sa version la plus simple, il suffit pour obtenir le tracé
de la courbe y=f(x) d'invoquer la commande plot
f(x). Par défaut l'intervalle pour l'axe des x et des y est
choisi automatiquement,
il est possible cependant de spécifier la valeur de l'un ou
l'autre ou des 2 (cf. exemples ci-dessous).
Remarque: Pour tracer une courbe la variable à utiliser
est toujours x, plot
n*n est incorrect par exemple.
Axes automatiques
gnuplot> plot x*x |
Axe des x spécifié
gnuplot> plot [-5:5] x*x | |
|
|
|
Axes des x et des y spécifiés
gnuplot> plot [-5:5] [0:10] x*x |
Axe des y spécifié
gnuplot> plot [] [0:10] x*x |
|
|
|
Le fichier doit être un fichier texte contenant un ensemble
de nombres (un ou 2 nombres par ligne, deux nombres devant être séparés
par un unique espace). Si le fichier comporte 2 colonnes de nombre ces
dernières représentent un ensemble de couples (x,
y) à afficher. Si le fichier comporte une seule colonne,
les données sont interprétées comme l'ensemble des
couples (i, yi), i varaint
de 0 à n-1, n étant le nombre de lignes
du fichier et yi représentant
la valeur apparaissant sur la ième ligne (les
lignes étant numérotées à partir de 0). La
syntaxe permettant de représenter graphiquelent un fichier est plot
"nom du fichier" (ce dernier devant se trouver dans le répeertoire
courant).
Exemples: Soient les deux fichiers suivants
fic1.txt
100 7
|
fic2.txt
10
|
voici les résultats obtenus (par défaut les données
sont représentées par des points, l'option w
de
plot permet d'utiliser différents
styles comme les barres d'histogramme par exemple, faites
help plot pour plus de renseignements.
Ici nous utilisons le style lines pour
joindre les points de fic2.txt entre eux):
gnuplot> plot "fic1.txt" | gnuplot> plot "fic2.txt" w lines |
Nous désirons à présent pouvoir comparer
des données (par exemple différents temps d'exécution
d'un même algorithme) avec une courbe connue. La syntaxe est la suivante
(les options mentionnées ci-dessus peuvent bien sur être utilisées):
plot
"nom du fichier", f(x).
Exemple: Le fichier fic1.txt est en fait un extrait du fichier dicho.txt qui contient pour des tableaux ordonnés de différentes tailles (variant de 100 à 52428800) , le nombre de fois où s'exécute la boucle utilisée dans la recherche d'un élément en appliquant le principe de la dichotomie. Par exemple, pour un tableau de taille 400, la boucle s'est exécutée 9 fois. Il est bien connu que le nombre de passages dans la boucle est de l'ordre de log2(n) si n est la taille du tableau. Vérifions ceci:
gnuplot> plot "dicho.txt" w lines , log(x)/log(2)
De façon plus formelle, on sait que le nombre de passages est
en O(log2(n)), ce qui signifie qu'il existe une constante
A
telle que ce nombre soit majoré par Alog2(n) à
partir d'un certain n. Essayons de trouver une telle constante,
on se restreint à l'intervalle [100,5000].
gnuplot> plot [100:5000] "dicho.txt" w lines , 1.2*log(x)/log(2)