Section : Graphiques
Précédent : Graphiques
Suivant : Graphiques composés

Représenter des fonctions

Le plus simple pour commencer est de tracer le graphe d'une fonction de IR dans IR à l'aide de plot. On crée pour cela un vecteur x d'abscisses, et on prend l'image de ce vecteur par la fonction pour créer un vecteur y d'ordonnées. La commande plot(x,y) représente les points de coordonnées (x(i),y(i)) en les joignant par des traits noirs (par défaut), ou selon un autre style, si le style de base a été changé. La qualité de la représentation dépend donc du nombre de points. On pourra essayer l'exemple suivant en changeant le style de graphique par xset(). Notez que contrairement aux autres primitives graphiques, plot efface la fenêtre à chaque appel.
x=linspace(0,3*%pi,10); y=x.*sin(x);
plot(x,y)
x=linspace(0,3*%pi,100); y=x.*sin(x);
plot(x,y)
On obtient le même résultat par fplot2d, mais il faut pour cela prédéfinir la fonction à représenter. Les tracés successifs se superposent.
deff("y=f(x)","y=x.*sin(x)")
x=linspace(0,3*%pi,10);
fplot2d(x,f)
x=linspace(0,3*%pi,100);
fplot2d(x,f)
Quand on veut superposer plusieurs courbes avec les mêmes échelles de représentation, il est préférable d'utiliser plot2d, qui autorise des styles différents pour chaque courbe. La syntaxe générale est la suivante.
plot2d(abscisses,ordonnees,style,cadre,legendes,bornes,graduation)
Après les deux premiers, les arguments sont facultatifs, mais si l'un d'entre eux est précisé, ceux qui le précèdent devront l'être aussi. La signification des arguments est la suivante.
$ \bullet$
abscisses, ordonnees : ce sont nécessairement des matrices de mêmes dimensions. Si ce sont des vecteurs (une seule courbe à tracer), ils peuvent être ligne ou colonne. Si plusieurs courbes doivent être tracées, elles doivent correspondre à autant de colonnes. Par défaut les points seront reliés par des segments. A chaque courbe correspond une couleur de la palette (il y en a 32).
x=linspace(0,3*%pi,30);
y=x.*sin(x);
plot2d(x,y)
xbasc()
y2=2*y;
plot2d([x,x],[y,y2])   // incorrect : deux courbes concatenees
xbasc()
plot2d([x;x],[y;y2])   // incorrect : trace 30 segments
xbasc()
plot2d([x;x]',[y;y2]') // correct
xbasc()
X=x'*ones(1,20);
Y=y'*[1:20];
plot2d(X,Y)
$ \bullet$
style : c'est un vecteur ligne dont la dimension est le nombre de courbes à tracer (nombre de colonnes des matrices abscisses et ordonnees). Les coordonnées sont positives ou négatives. Si le style est positif, les points sont joints par des segments. Si le style est nul, les points sont affichés comme des pixels noirs. Si le style est négatif, des marques de formes particulières sont affichées.
x=linspace(0,3*%pi,30); X=x'*ones(1,10);
y=x.*sin(x); Y=y'*[1:10];
couleurs=matrix([2;5]*ones(1,5),1,10)
xbasc()
plot2d(X,Y,couleurs)
marques=-[0:9]
xbasc()
plot2d(X,Y,marques)
$ \bullet$
cadre : ce paramètre est une chaîne de caractères formée de trois chiffres, dont : Par défaut, l'argument cadre vaut "021" (pas de légendes, échelles de représentation calculées automatiquement, axes tracés). Si l'on superpose deux graphiques avec cette option par défaut, les échelles ne seront pas les mêmes. La solution consiste à tracer tous les graphiques à partir du second sur une même fenêtre avec l'option "000" (pas de légende, utiliser les échelles précédentes, ne pas retracer les axes).
x=linspace(0,3*%pi,30);
y=x.*sin(x);
xbasc()
plot2d(x,y)
y2=2*y;
plot2d(x,y2)         // incorrect : les echelles sont differentes
xbasc();
plot2d(x,y)
plot2d(x,y2,"000")   // erreur
plot2d(x,y2,1,"000")
xbasc();
plot2d(x,y2)
plot2d(x,y,1,"000")
$ \bullet$
legendes : c'est une chaîne de caractères contenant les différentes légendes, séparées par @.
x=linspace(0,3*%pi,30); X=x'*ones(1,5);
y=x.*sin(x); Y=y'*[1:5];
styles=[-2:2]
legendes="x sin(x)@2 x sin(x)@3 x sin(x)@4 x sin(x)@5 x sin(x)"
xbasc()
plot2d(X,Y,styles,"121",legendes)
$ \bullet$
bornes : c'est le rectangle de représentation, décrit par les deux coordonnées du coin inférieur gauche, suivies des deux coordonnées du coin inférieur droit : [xmin,ymin,xmax,ymax].
x=linspace(0,3*%pi,30);
y=x.*sin(x);
xbasc()
plot2d(x,y,1,"011"," ",[0,-10,10,10])
$ \bullet$
graduations : ce vecteur de quatre entiers permet de préciser la fréquence des graduations et sous-graduations en abscisse et ordonnée. Par exemple, avec [2,10,4,5], l'intervalle des abscisses sera divisé en 10, chacun des 10 sous-intervalles étant subdivisé en 2. Pour les ordonnées il y aura 5 sous-intervalles, chacun subdivisé en 4.
x=linspace(0,3*%pi,30);
y=x.*sin(x);
xbasc()
plot2d(x,y,1,"011"," ",[0,-10,10,10],[2,10,4,5])

Figure 1: Représentation de plusieurs courbes.

Graphes de fonctions
plotframe rectangle de représentation
plot points joints par des segments
plot2d plusieurs courbes avec styles différents
plot2d1 idem, avec plus d'options
plot2d2 représentation en escalier
plot2d3 barres verticales
plot2d4 flèches
fplot2d représenter des fonctions
Les échelles de représentation, choisies automatiquement, ne sont pas les mêmes en abscisse et en ordonnée. On peut corriger ceci à l'aide de isoview ou square.

Section : Graphiques
Précédent : Graphiques
Suivant : Graphiques composés

© B. Ycart (2001)