Introduction à Scilab
2. Graphiques. Saisie de données

d'après Jean-Philippe Chancelier & Michel de Lara


Date: 28 décembre 2004 (dernière date de mise à jour)



Table des matières

Ouvrir une fenêtre Scilab

Pour ces travaux pratiques d'introduction à Scilab, il vous faut lancer le logiciel Scilab et disposer ainsi d'une fenêtre permettant de saisir et d'exécuter des instructions.

Taper des instructions Scilab

Dans ces premiers travaux pratiques, vous trouverez une série de lignes de commandes Scilab précédées du signe -->. Pour commencer, il vous suffit de les recopier ou de les saisir par copier-coller (sans -->) pour les exécuter immédiatement dans la fenêtre Scilab.

Charger des instructions Scilab

Quand il y a une succession de lignes de commande, il est préférable de disposer d'un éditeur (par exemple celui de Scilab), d'ouvrir un fichier (par exemple nom_du_fichier.sci), d'y écrire les lignes de commandes puis de les exécuter en cliquant l'item Exec... sur le menu Fichier. On peut aussi taper sous Scilab l'instruction :

 exec("nom_du_fichier.sce")

Une bonne pratique à adopter : dès l'ouverture d'une session Scilab, mettez-vous dans votre répertoire de travail, en cliquant sur l'item Changer... du menu Fichier.

Commentaires

Toute ligne débutant par // est une ligne de commentaires.

1 Graphiques 2D

Pour effectuer des graphiques en deux dimensions, on utilise la commande plot2d. Pour utiliser ses nombreux arguments optionnels, taper help plot2d ou se reporter au poly, §2.4.1.

plot2d

-->x=[1,3,4,9];
-->y=[2,7,-6,-3];
-->plot2d(x,y)
// relie les points de coordonnées (x(1),y(1)), (x(2),y(2)), etc.

\epsfig{file=Figures/des0.eps,height=5cm,width=6.5cm}

Tracé d'une unique courbe

-->x=0.1:0.1:10;
-->y=sin(x)./x;
-->plot2d(x,y)

\epsfig{file=Figures/des1.eps,height=5cm,width=6.5cm}

Tracé de deux courbes (par superposition)

-->x=0.1:0.1:10;
-->y=sin(x)./x;
-->z=cos(x)./x;
-->xbasc(); // efface le contenu de la fenêtre graphique
-->plot2d(x,y);plot2d(x,z) // les deux graphiques sont superposés

Tracé de deux courbes (simultanément)

-->x=x';y=y';z=z';
// x, y et z sont maintenant des vecteurs colonnes
// ce qui est obligatoire quand on veut dessiner plus de deux courbes.
-->xbasc();plot2d(x,[y z])
// idem, mais les deux graphiques sont tracés chacun avec sa couleur

\epsfig{file=Figures/des4.eps,height=5cm,width=6.5cm}

Tracé de plusieurs courbes (simultanément)

-->M=[(0:0.1:10)' (5:0.1:15)' (10:0.1:20)'];
-->N=[0.1*M(:,1).^2 log(M(:,2)) 0.5*M(:,3)];
-->xbasc();plot2d(M,N);

Option style de plot2d

-->r=rand(100,1);
-->xbasc();plot2d(r)
// par défaut, les abcisses sont les entiers de 1 à dimension de r
// et les points sont reliés par des droites
-->x=(1:100)';
-->xbasc();plot2d(x,r,style=-5)
// avec l'option style
-->s=rand(100,1);
-->xbasc();plot2d(r,s,style=-2)

\epsfig{file=Figures/des2.eps,height=5cm,width=6.5cm}

Option rect de plot2d

-->y=[6:-1:0,1:5] ; x =[y,y,y,y,y];
-->xbasc();plot2d(1:60,x);
// un graphique simple
-->xbasc();plot2d(1:60,x,rect=[0,0,70,10])
// le cadre est fixé par rect =[xmin,ymin,xmax,ymax]

\epsfig{file=Figures/dents_scie.eps,height=5cm,width=6.5cm}

plot2d2, plot2d3

-->x=1:10;
-->xbasc();plot2d2(x,x);
-->xbasc();plot2d3(x,x);

\epsfig{file=Figures/creneaux.eps,height=5cm,width=6.5cm}

    

Question 1   Tracer l'évolution des prix, en euros constants de 2001, du litre de gazole. Faire en sorte que l'axe des ordonnées s'étende de 0 à 1 euro.
annees=[1973 1979 1983:2001]
//prix du gazole en francs constants de 2001
prix_gazole_EC2001=[0.557 0.715 0.879 0.885 0.902 0.699 0.652 0.618 ...
0.633 0.643 0.627 0.592 0.614 0.638 0.624 0.681 0.697 0.658 0.702 0.848 0.783]
// dans une instruction trop longue pour tenir dans une ligne,
// mettre ... avant de passer à la ligne


\epsfig{file=Figures/gazole.eps,height=10cm,width=13cm}

2 Saisie de tableaux de chiffres

Le tableau de chiffres suivant représente l'indicateur de pouvoir d'achat du franc (source Insee). Il permet de traduire en francs actuels des valeurs exprimées en franc du passé. Sur une ligne, on trouve

  1. l'année ;
  2. la valeur équivalente en francs, en pouvoir d'achat de 2001, d'1 FF de l'année ;
  3. la valeur équivalente en euros, en pouvoir d'achat de 2001, d'1 FF de l'année.
Ainsi, 1 FF de l'année XXXX vaut en franc 2001 Y.YYY et vaut en euro 2001 Z.ZZZZZ (et, par exemple, on peut calculer que 1000 F de 1980 équivaudraient, en pouvoir d'achat, à 1840 F de 1990).


Par copier-coller, transférer les lignes suivantes dans un fichier donnees.txt :

1980    2.217    0.33792
1981 1.955 0.29797
1982 1.748 0.26648
1983 1.595 0.24309
1984 1.485 0.22633
1985 1.403 0.21386
1986 1.367 0.20832
1987 1.325 0.20197
1988 1.29 0.19668
1989 1.245 0.18983
1990 1.205 0.18364
1991 1.167 0.17794
1992 1.14 0.17382
1993 1.117 0.17028
1994 1.099 0.16748
1995 1.08 0.16464
1996 1.059 0.16145
1997 1.046 0.15949
1998 1.039 0.15839
1999 1.034 0.15761
2000 1.017 0.15498
2001 1 0.15245

On va à présent lire le contenu du fichier donnees.txt et stocker le résultat de la lecture dans une matrice M (à 3 colonnes et n lignes). Pour cela utiliser help fscanfMat :

-->M= fscanfMat('donnees.txt'); 
-->size(M)
-->M(1,sourire

    

Question 2   Le tableau suivant représente, en euros constants 2001, les prix des carburants. On touve sur une ligne : année, supercarburant sans plomb (95), supercarburant sans plomb (98), gazole (0.000 signifie que le prix n'est pas disponible).
1973  0.000  0.000   0.557
1979 0.000 0.000 0.715
1983 0.000 0.000 0.879
1984 0.000 0.000 0.885
1985 0.000 0.000 0.902
1986 0.000 0.000 0.699
1987 0.000 0.000 0.652
1988 0.000 0.000 0.618
1989 0.000 0.000 0.633
1990 0.000 0.000 0.643
1991 0.899 0.909 0.627
1992 0.853 0.869 0.592
1993 0.858 0.881 0.614
1994 0.870 0.887 0.638
1995 0.912 0.918 0.624
1996 0.947 0.955 0.681
1997 0.969 0.979 0.697
1998 0.940 0.950 0.658
1999 0.971 0.980 0.702
2000 1.091 1.109 0.848
2001 1.019 1.043 0.783
Saisir le tableau dans une matrice M et tracer sur un même graphique les évolutions des prix des trois carburants depuis 1991 (il sera utile d'utiliser une instruction du type M(11:$,n)).


\epsfig{file=Figures/carburants_1991_2001.eps,height=10cm,width=13cm}

3 Graphiques 3D

    

Question 3  
  • Saisir le tableau suivant sous forme de matrice
    M=[ 10.66   13.75   16.28   18.17   19.34   19.73   19.34   18.17   16.28   13.75   10.66 
    11.31 14.59 17.28 19.28 20.52 20.93 20.52 19.28 17.28 14.59 11.31
    10.99 14.17 16.79 18.73 19.93 20.34 19.93 18.73 16.79 14.17 10.99
    9.00 11.61 13.75 15.34 16.33 16.66 16.33 15.34 13.75 11.61 9.00
    4.66 6.01 7.12 7.95 8.45 8.63 8.45 7.95 7.12 6.01 4.66
    -2.01 -2.60 -3.08 -3.43 -3.65 -3.73 -3.65 -3.43 -3.08 -2.60 -2.01
    -8.98 -11.58 -13.72 -15.31 -16.29 -16.63 -16.29 -15.31 -13.72 -11.58 -8.98
    -11.02 -14.21 -16.83 -18.78 -19.99 -20.39 -19.99 -18.78 -16.83 -14.21 -11.02
    -2.63 -3.39 -4.01 -4.48 -4.76 -4.86 -4.76 -4.48 -4.01 -3.39 -2.63
    10.14 13.08 15.49 17.29 18.40 18.77 18.40 17.29 15.49 13.08 10.14
    4.42 5.69 6.75 7.53 8.01 8.17 8.01 7.53 6.75 5.69 4.42
    -11.34 -14.63 -17.33 -19.33 -20.57 -20.99 -20.57 -19.33 -17.33 -14.63 -11.34 ]
  • Faire help plot3d ou se reporter au poly, §2.4.2.
  • On suppose que le terme M(i,j) représente la cote z du point (i,j,z). Tracer la surface correspondante.
  • Faire help contour et tracer les courbes de niveau.


\epsfig{file=Figures/plot3d.eps,height=10cm,width=13cm}

Nous pouvons stocker les graphiques, selon plusieurs formats, dans des fichiers qui peuvent être utilisés par la suite pour faire des rapports ou des présentations. Pour les détails se reporter au poly, §2.4.3.