Вы находитесь на странице: 1из 25

2Legraphique.nb

Page 1 sur 25

Le graphique en Mathematica

Programmation Fonctionnelle et Logique en Mathematica

Jean-Paul Sansonnet

Chapitre 2 : Le graphique

• Affichage de fonctions mathématiques

Mathematica dispose d'opérateurs puissants pour l'affichage des fonctions mathématiques. Cette section n'est qu'un survol rapide des possibilités. Il faudra se reporter au manuel pour découvrir toutes les subtilités des options possibles

• Affichage de fonctions d'une seule variable

• Plot simple

Si nous voulons tracer la fonction mathématique bien connue Sinus, disons entre 0 et 4 Pi, il faut utiliser d'opérateur d'affichage Plot qui prend comme argument

- la fonction à tracer avec sa variable : Sin[x]

- un itérateur qui dit à partir de qu'elle valeur commence à varier la variable x et où elle finit de varier (définissant ainsi les bornes du tracé)

Plot[Sin[x], {x, 0, 4Pi}]

ainsi les bornes du tracé) Plot[Sin[x], {x, 0, 4Pi}] Mathematica construit un objet graphique, d'où la
ainsi les bornes du tracé) Plot[Sin[x], {x, 0, 4Pi}] Mathematica construit un objet graphique, d'où la

Mathematica construit un objet graphique, d'où la notation << -Graphics- >> qui apparaît sous l'affichage (la structure interne des objets de type Graphics sera exposée plus loin). Ensuite, il affiche cet objet à l'écran, dans une cellule qui n'est pas de type Output mais de type Graphics, comme on peut s'en rendre compte en clickant dessus (on voit alors le nom du type de la cellule dans la règle). Le menu << Graph >> permet de faire toutes sortes d'opérations sur le graphique affiché

2Legraphique.nb

Page 2 sur 25

(voir le menu et le manuel). On peut utiliser la souris pour déplacer le graphe, le copier/coller, l'agrandir, le rétrécir etc.

• Ajout d'options aux opérateurs Mathematica

En Mathematica, certains opérateurs possèdent ce qu'on appelle des options. Une option sert à modifier le comportement standard de l'opérateur. Beaucoup d'opérateurs de Mathematica acceptent une ou plusieurs options qui sont décrites dans le manuel ; par exemple, Plot accepte 27 options !

Pour donner une option à un opérateur, on utilise une nouvelle notation de la forme

nom-d'option -> expression-valeur-de-l'option

Où nom-d'option est un symbole. Par exemple, pour un opérateur qui utilise normalement deux expressions

opérateur[expr1, expr2]

Si on lui ajoute deux options, prises parmi les n options qu'il accepte, on obtient

opérateur[expr1, expr2, opt1 -> Valeur1, opt2 -> valeur2]

Il n'y a pas d'ordre entre les options : on aurait tout aussi bien pu écrire

opérateur[expr1, expr2, opt2 -> valeur2, opt1 -> Valeur1]

Par exemple, une des options possibles de Plot est Frame qui entoure l'affichage d'un rectangle gradué. Nous écrivons donc

Plot[Sin[x], {x, 0, 4Pi}, Frame -> True]

écrivons donc Plot[Sin[x], {x, 0, 4Pi}, Frame -> True] Remarque : lorsque P l o t
écrivons donc Plot[Sin[x], {x, 0, 4Pi}, Frame -> True] Remarque : lorsque P l o t

Remarque : lorsque Plot affiche une fonction mathématique, elle place sur l'axe horizontal la variation de la variable donnée par l'utilisateur et sur l'axe vertical les variations qui, elles, dépendent de la fonction.

• Plot de plusieurs fonctions sur un même graphique

Il est possible de tracer plusieurs fonctions en même temps pourvu que la variable et les bornes

2Legraphique.nb

Page 3 sur 25

soient communes (partage du même itérateur). On donne non plus un fonction à tracer mais une liste de fonctions

Plot[{Sin[x], Cos[x]}, {x, 0, 2Pi}]

une liste de fonctions Plot[{Sin[x], Cos[x]}, {x, 0, 2Pi}] Ceci nous a permis de voir comment
une liste de fonctions Plot[{Sin[x], Cos[x]}, {x, 0, 2Pi}] Ceci nous a permis de voir comment

Ceci nous a permis de voir comment évoluent respectivement les fonctions Sinus et Cosinus sur un même intervalle de la variable (ici nous avons pris une période entière soit entre 0 et 2Pi).

• Affichage avec des styles différents

Le problème est que dans le graphique ci-dessus, on ne sait pas qui est Sinus et qui est Cosinus ! On peut essayer de colorer les courbes. Pour cela, il nous faut définir deux symboles utilisateurs rouge et vert qui seront des couleurs. C'est le symbole prédéfini RGBColor qui permet de définir des couleurs en Mathematica (voir manuel). Posons donc

Clear[rouge, bleu, vert, jaune] rouge = RGBColor[1., 0., 0.]; bleu = RGBColor[0., 0., 1.]; vert = RGBColor[0., 1., 0.]; jaune = RGBColor[0.964, 0.960, 0.630];

Alors, il est possible de dire à Plot que l'on veut que le style d'affichage change d'une courbe à l'autre. On utilise une nouvelle option, PlotStyle, qui accepte une liste de couleurs qu'elle applique aux tracés respectifs des fonctions.

Plot[{Sin[x], Cos[x]}, {x, 0, 2Pi}, PlotStyle -> {rouge, vert}]

2Legraphique.nb

Page 4 sur 25

2Legraphique.nb Page 4 sur 25 Ainsi, la première fonction (Sinus) sera colorée à l'écran avec la
2Legraphique.nb Page 4 sur 25 Ainsi, la première fonction (Sinus) sera colorée à l'écran avec la

Ainsi, la première fonction (Sinus) sera colorée à l'écran avec la première couleur de la liste des styles (rouge) et la seconde fonction (Cosinus) sera colorée avec la seconde couleur (vert). Remarque : sur le papier, le rouge apparaît en grisé. On peut aussi dessiner avec plein d'autres styles : en pointillés, en gras etc.

Maintenant traçons ensemble Sinus, Cosinus et Tangente

Plot[{Sin[x], Cos[x], Tan[x]}, {x, 0, 2Pi}, PlotStyle -> {rouge, bleu, vert}]

Tan[x]}, {x, 0, 2Pi}, PlotStyle -> {rouge, bleu, vert}] On voit que Mathematica a ajusté les
Tan[x]}, {x, 0, 2Pi}, PlotStyle -> {rouge, bleu, vert}] On voit que Mathematica a ajusté les

On voit que Mathematica a ajusté les bornes verticales pour qu'on puisse mieux voir la tangente. Cela eu pour effet de “tasser” un peu Sinus et Cosinus. Mathematica est très fort pour déterminer les bornes verticales afin que la visualisation soit la meilleure possible. Rappelons que les bornes horizontales sont fixées par l'utilisateur. Cependant, dans certains cas pathologiques, Mathematica échoue et l'utilisateur mécontent peut fournir ses propres bornes avec l'option PlotRange

Plot[{Sin[x], Cos[x], Tan[x]}, {x, 0, 2Pi}, PlotStyle -> {rouge, bleu, vert}, PlotRange -> {{0,2Pi}, {-2,2}}, Frame -> True]

2Legraphique.nb

Page 5 sur 25

2Legraphique.nb Page 5 sur 25 Ici, Nous avons conservé les bornes horizontales telles quelles { 0
2Legraphique.nb Page 5 sur 25 Ici, Nous avons conservé les bornes horizontales telles quelles { 0

Ici, Nous avons conservé les bornes horizontales telles quelles {0, 2Pi} et nous avons “forcé” les bornes verticales entre {-2, 2} au lieu du calcul automatique précédent qui avait donné {-6, 6} environ. La fonction Tangente se voit moins bien, mais on voit mieux Sinus et Cosinus.

• Plot d'une famille de fonctions

Il est possible de donner à Plot une liste de fonctions calculées symboliquement, et qui définit ce qu'on appelle une famille de fonctions. Par exemple, construisons la table de 10 polynômes en x du 3ème degré, ayant la même forme, mais où le paramètre a varie de 1 à 10

Clear[a,l,x] l = Table[x^3 - a x, {a, 0, 10}]

1 à 1 0 Clear[a,l,x] l = Table[x^3 - a x, {a, 0, 10}] On obtient

On obtient une famille de fonctions en x que Plot peut afficher d'un seul coup

Plot[Evaluate[l], {x, -5, 5}]

afficher d'un seul coup Plot[Evaluate[l], {x, -5, 5}] Remarque : nous avons écrit la formule cryptique
afficher d'un seul coup Plot[Evaluate[l], {x, -5, 5}] Remarque : nous avons écrit la formule cryptique

Remarque : nous avons écrit la formule cryptique Evaluate[l] au lieu de l, sinon Plot a des problèmes, qui ne seront pas explicités ici (voir manuel).

• Affichage de fonctions de deux variables

2Legraphique.nb

Page 6 sur 25

En mathématiques, il y a aussi des fonctions de plusieurs variables. Mathematica affiche aussi les fonctions de deux variables et ceci de plusieurs manières.

• Contours

Une fonction de deux variables n'est plus une ligne mais une surface. On peut afficher cette surface en montrant ses contours comme dans les cartes géographiques. On utilise l'opérateur ContourPlot qui prend comme argument la fonction de deux variables, un itérateur pour la première variable et un itérateur pour la seconde variable

ContourPlot[Sin[x y], {x, -2, 2}, {y, -2, 2}]

variable ContourPlot[Sin[x y], {x, -2, 2}, {y, -2, 2}] Nous avons affiché la fonction S i
variable ContourPlot[Sin[x y], {x, -2, 2}, {y, -2, 2}] Nous avons affiché la fonction S i

Nous avons affiché la fonction Sinus(x*y) vue “de dessus”.

• Densité

Il est possible d''afficher cette même fonction de deux variables Sinus(x*y) sous forme de niveaux de gris (ou de niveaux de couleurs) grâce à l'opérateur DensityPlot. Il marche comme ContourPlot

DensityPlot[Sin[x y], {x, -2, 2}, {y, -2, 2}, PlotPoints -> 50,

Mesh

-> False ]

2Legraphique.nb

Page 7 sur 25

2Legraphique.nb Page 7 sur 25 Nous avons ajouté deux options (parmi bien d'autres ) - P
2Legraphique.nb Page 7 sur 25 Nous avons ajouté deux options (parmi bien d'autres ) - P

Nous avons ajouté deux options (parmi bien d'autres

)

- PlotPoints porte le nombre de points de discrétisation de la surface de 30 (valeur standard) à 50, donc le dessin est plus fin

- Mesh -> False supprime l'affichage de la grille

• Plot 3D

Une fonction de deux variables étant une surface, on peut la visualiser en trois dimensions grâce à l'opérateur Plot3D qui marche comme les opérateurs ContourPlot et DensityPlot

Plot3D[Sin[x + Sin[y]], {x, -Pi, Pi}, {y, -Pi, Pi}]

l o t Plot3D[Sin[x + Sin[y]], {x, -Pi, Pi}, {y, -Pi, Pi}]

2Legraphique.nb

Page 8 sur 25

2Legraphique.nb Page 8 sur 25 Plot3D[Sin[x y], {x,0, 2 Pi}, {y,0, 2 Pi}, PlotPoints->50] Le Front-end

Plot3D[Sin[x y], {x,0, 2 Pi}, {y,0, 2 Pi}, PlotPoints->50]

y], {x,0, 2 Pi}, {y,0, 2 Pi}, PlotPoints->50] Le Front-end de Mathematica possède un outil permettant
y], {x,0, 2 Pi}, {y,0, 2 Pi}, PlotPoints->50] Le Front-end de Mathematica possède un outil permettant

Le Front-end de Mathematica possède un outil permettant de construire une option ViewPoint qui spécifie le point de vue qu'on désire avoir sur l'objet visualisé (voir le manuel du Front-end). Ainsi, cette même surface est vue ci-dessous d'un autre point de l'espace dont les coordonnées sont fixées par l'option ViewPoint

Plot3D[Sin[x y], {x,0, 2 Pi}, {y,0, 2 Pi}, PlotPoints -> 50, ViewPoint -> {2.055, -0.714, 2.591}]

2Legraphique.nb

Page 9 sur 25

2Legraphique.nb Page 9 sur 25 • Affichage de fonctions paramétriques • Fonctions paramétriques dans le plan
2Legraphique.nb Page 9 sur 25 • Affichage de fonctions paramétriques • Fonctions paramétriques dans le plan

• Affichage de fonctions paramétriques

• Fonctions paramétriques dans le plan

En mathématiques, une fonction paramétrique est définie par la conjonction de deux fonctions de la même variable. Il suffit de donner la liste des deux fonctions et l'itérateur à l'opérateur ParametricPlot

ParametricPlot[{Sin[t], Sin[2t]}, {t, 0, 2Pi}]

ParametricPlot[{Sin[t], Sin[2t]}, {t, 0, 2Pi}]

2Legraphique.nb

Page 10 sur 25

2Legraphique.nb Page 10 sur 25 On voit que la syntaxe de P a r a m

On voit que la syntaxe de ParametricPlot est la même que celle de Plot à deux fonctions (voir ci- dessus l'exemple {Sin, Cos}) mais la sémantique n'est pas du tout la même. Il s'agit ici d'une seule fonction qui trace une courbe dans le plan.

• Fonctions paramétriques dans l'espace

Avec des fonctions paramétriques de trois fonctions d'une même variable, il est possible de tracer des courbes dans l'espace. Voici un “tire-bouchon”

ParametricPlot3D[{t/3, Sin[t], Cos[t]}, {t, 0, 12Pi}, ViewPoint->{2.403, -2.001, 1.294}]

{t, 0, 12Pi}, ViewPoint->{2.403, -2.001, 1.294}] • Fonctions paramétriques de deux variables Avec des
{t, 0, 12Pi}, ViewPoint->{2.403, -2.001, 1.294}] • Fonctions paramétriques de deux variables Avec des

• Fonctions paramétriques de deux variables

Avec des fonctions paramétriques de trois fonctions de deux variables, nous avons affaire non plus à une courbe paramétrique mais à une surface paramétrique. Par exemple, on peut visualiser un tore dans l'espace comme étant la surface définie par les trois fonctions des deux variables t et u ci- dessous

ParametricPlot3D[{Cos[t] (3+ Cos[u]), Sin[t] (3 + Cos[u]), Sin[u]}, {t, 0, 2Pi}, {u, 0, 2Pi}]

Sin[t] (3 + Cos[u]), Sin[u]}, {t, 0, 2Pi}, {u, 0, 2Pi}]

2Legraphique.nb

Page 11 sur 25

2Legraphique.nb Page 11 sur 25 • Affichage de listes de nombres • Affichages Monodimensionnels • Plot

• Affichage de listes de nombres

• Affichages Monodimensionnels

• Plot d'une liste simple de nombres

Supposons qu'à la suite d'un examen, nous possédions une liste des notes des étudiants

Clear[ListeDesNotes] ListeDesNotes = {12.5,13,15,16,16,15.5,12,13,

11,2,11,4,14,12,9,8,17,12,13.5,11.5,13.5,5,11};

Il y a 23 notes dans la liste.

Length[ListeDesNotes]

Il y a 23 notes dans la liste. Length[ListeDesNotes] Il est possible de l'afficher telle quelle

Il est possible de l'afficher telle quelle grâce à l'opérateur ListPlot

ListPlot[ListeDesNotes]

L i s t P l o t ListPlot[ListeDesNotes] l'opérateur L i s t P l
L i s t P l o t ListPlot[ListeDesNotes] l'opérateur L i s t P l

l'opérateur ListPlot affiche en abcisses les indices des notes (de 1 à 23) et en ordonnées il trace un point correspondant à la valeur de la note. ListPlot possède 25 options dont PlotJoined qui permet de joindre les points par une ligne

ListPlot[ListeDesNotes, PlotJoined -> True]

2Legraphique.nb

Page 12 sur 25

2Legraphique.nb Page 12 sur 25 On peut trier les notes avant de les tracer ListPlot[Sort[ListeDesNotes],
2Legraphique.nb Page 12 sur 25 On peut trier les notes avant de les tracer ListPlot[Sort[ListeDesNotes],

On peut trier les notes avant de les tracer

ListPlot[Sort[ListeDesNotes], PlotJoined->True]

tracer ListPlot[Sort[ListeDesNotes], PlotJoined->True] • Plot d'une liste de coordonnées (paramétriques) Si
tracer ListPlot[Sort[ListeDesNotes], PlotJoined->True] • Plot d'une liste de coordonnées (paramétriques) Si

• Plot d'une liste de coordonnées (paramétriques)

Si au lieu d'une liste de nombres, on dispose d'une liste de couples de nombres

Clear[étoile] étoile = {{8.938958, 10.631507}, {10.745409, 16.20307}, {12.456783, 10.517801}, {18.066288, 14.611195}, {15.213997, 8.58481}, {19.397357, 1.989898}, {12.551859, 6.651819}, {7.798042, 1.193961}, {8.273423, 7.447756}, {1.427926, 14.952311}, {8.843881, 10.745212}};

Length[étoile]

14.952311}, {8.843881, 10.745212}}; Length[étoile] On peut considérer que cette liste est une matrice de 11

On peut considérer que cette liste est une matrice de 11 lignes et 2 colonnes

TableForm[étoile]

8.938958` 10.631507`

2Legraphique.nb

Page 13 sur 25

10.745409` 16.20307` 12.456783` 10.517801` 18.066288` 14.611195` 15.213997` 8.58481` 19.397357` 1.989898` 12.551859` 6.651819` 7.798042` 1.193961` 8.273423` 7.447756` 1.427926` 14.952311` 8.843881` 10.745212`

ListPlot accepte ce type de liste et considère que chaque couple de nombres représente un point dans le plan (le premier nombre du couple est l'abcisse du point et le second nombre du couple est l'ordonnée du point)

ListPlot[étoile]

du couple est l'ordonnée du point) ListPlot[étoile] Avec l'option P l o t J o i
du couple est l'ordonnée du point) ListPlot[étoile] Avec l'option P l o t J o i

Avec l'option PlotJoined, on y voit un peu plus clair

ListPlot[étoile, PlotJoined->True, Axes->None]

ListPlot[étoile, PlotJoined->True, Axes->None]
ListPlot[étoile, PlotJoined->True, Axes->None]

2Legraphique.nb

Page 14 sur 25

L'option Axes -> None supprime le tracé des axes.

• Affichages Bidimensionnels

• Création d'une matrice des restes de la division de y par x

Nous allons construire une matrice m à deux dimensions (20 x 20) dont chaque élément représente le résultat de la division entière de son numéro de colonne par son numéro de ligne

Clear[m] m = Table[Mod[y,x], {x, 20}, {y, 20}]; TableForm [m, TableSpacing -> {0,1}]

0000000000

0

0

0

0

0

0

0

0

0

0

1010101010

1

0

1

0

1

0

1

0

1

0

1201201201

2

0

1

2

0

1

2

0

1

2

1230123012

3

0

1

2

3

0

1

2

3

0

1234012340

1

2

3

4

0

1

2

3

4

0

1234501234

5

0

1

2

3

4

5

0

1

2

1234560123

4

5

6

0

1

2

3

4

5

6

1234567012

3

4

5

6

7

0

1

2

3

4

1234567801

2

3

4

5

6

7

8

0

1

2

1234567890

1

2

3

4

5

6

7

8

9

0

1 2 3 4 5 6 7 8 9 10 0

1

2

3

4

5

6

7

8

9

1 2 3 4 5 6 7 8 9 10 11 0

1

2

3

4

5

6

7

8

1 2 3 4 5 6 7 8 9 10 11 12 0

1

2

3

4

5

6

7

1 2 3 4 5 6 7 8 9 10 11 12 13 0

1

2

3

4

5

6

1 2 3 4 5 6 7 8 9 10 11 12 13 14 0

1

2

3

4

5

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0

1

2

3

4

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 0

1

2

3

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 0

1

2

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 0

1

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 0

Dans TableForm, l'option TableSpacing règle l'écartement entre les lignes (resp. les colonnes).

• Plot dans l'espace

Avec ListPlot3D, il est possible d'afficher cette matrice, vue comme une surface valuée

ListPlot3D[m]

2Legraphique.nb

Page 15 sur 25

2Legraphique.nb Page 15 sur 25 • Contour De même, pour les contours ListContourPlot[m] • Densité Ou
2Legraphique.nb Page 15 sur 25 • Contour De même, pour les contours ListContourPlot[m] • Densité Ou

• Contour

De même, pour les contours

ListContourPlot[m]

• Contour De même, pour les contours ListContourPlot[m] • Densité Ou encore la densité ListDensityPlot[m,
• Contour De même, pour les contours ListContourPlot[m] • Densité Ou encore la densité ListDensityPlot[m,

• Densité

Ou encore la densité

ListDensityPlot[m, ColorFunction->Hue]

2Legraphique.nb

Page 16 sur 25

2Legraphique.nb Page 16 sur 25 • Le Dessin • Mon premier dessin • Notion sommaire de
2Legraphique.nb Page 16 sur 25 • Le Dessin • Mon premier dessin • Notion sommaire de

• Le Dessin

• Mon premier dessin

• Notion sommaire de type

Mathematica possède des opérateurs d'un genre un peu particulier, en ceci qu'il ne semblent pas produire d'effet. Par exemple

Line[{{0,0},{10,10}}]

pas produire d'effet. Par exemple Line[{{0,0},{10,10}}] a pour résultat lui-même. On peut croire qu'il

a pour résultat lui-même. On peut croire qu'il s'agit d'une expression constante mais ce n'est pas le cas car

Line[{{1-1, 1-1},{1+2+3+4, 10}}]

ce n'est pas le cas car Line[{{1-1, 1-1},{1+2+3+4, 10}}] n'a pas pour résultat lui-même. Les expressions

n'a pas pour résultat lui-même. Les expressions sont calculées (si possible) et le résultat est ensuite laissé tel quel. L'utilisateur peut obtenir le même effet au moyen d'un symbole indéfini

Clear[maLigne] maLigne[{{1-1, 1-1},{1+2+3+4, 10}}]

indéfini Clear[maLigne] maLigne[{{1-1, 1-1},{1+2+3+4, 10}}] On dira grossièrement que L i n e et m a

On dira grossièrement que Line et maLigne sont des types. Line est un type prédéfini et maLigne est un type de l'utilisateur.

2Legraphique.nb

Page 17 sur 25

• Types d'objets graphiques de base

Mathematica utilise un certain nombre de types prédéfinis, en particulier pour construire des objets graphiques. Nous ne donnerons ici que les six principaux types d'objets graphiques

Clear[p,l,r,c,d,t]

p

= Point[{1,3}];

l

= Line[{{0,0},{10,10}}];

r

= Rectangle[{2,2}, {8,3}];

c

= Circle[{5,5}, 2];

d

= Disk[{5,5}, 1/2];

t

= Text["Mon premier dessin", {5,1}];

1) le type Point : on donne le couple de coordonnées du point {abcisse, ordonnée}

p

{ a b c i s s e , o r d o n n é

2) le type Line : on donne une liste de coordonnées de points. La ligne rejoint ces points

l

de coordonnées de points. La ligne rejoint ces points l 2) le type R e c

2) le type Rectangle : on donne les coordonnées du point << en bas à gauche >> et les coordonnées du point << en haut à froite >>. Un rectangle a une surface colorée

r

à froite >>. Un rectangle a une surface colorée r 3) le type C i r

3) le type Circle : on donne les coordonnées du point central et le rayon

c

: on donne les coordonnées du point central et le rayon c 4) le type D

4) le type Disk : on donne les coordonnées du point central et le rayon. Un disque est un cercle dont la surface est colorée

d

Un disque est un cercle dont la surface est colorée d 5) le type T e

5) le type Text : on donne la chaîne de caractères à écrire, suivie des coordonnées du point central où on désire placer le texte

t

du point central où on désire placer le texte t • Composition d'un graphique

Composition d'un graphique

2Legraphique.nb

Page 18 sur 25

Avec ces objets de base, il est possible de composer des graphiques plus complexes en les agrégeant au moyen de listes et du type Graphics

Clear[g] g = Graphics[{p,l,r,c,d,t}]

G r a p h i c s Clear[g] g = Graphics[{p,l,r,c,d,t}] g est un symbole

g est un symbole qui est défini comme un objet de type Graphics (contenant {p,l,r,c,d,t,p}). Si on évalue g, il reste tel quel

g

, p } ) . Si on évalue g , il reste tel quel g On

On devrait voir ce qui est associé à g

?g

Global`g

quel g On devrait voir ce qui est associé à g ?g Global`g Mais comme les

Mais comme les objets graphiques sont souvent très complexes, cela afficherait plusieurs pages de texte. Aussi, on donne une abbréviation (c'est le format de sortie) qui est << -Graphics- >>. Montrons le sur un exemple de graphique simple

Clear[gf] gf = Plot[Sin[x], {x,0,2Pi}]

de graphique simple Clear[gf] gf = Plot[Sin[x], {x,0,2Pi}] Puisque g f est de type G r
de graphique simple Clear[gf] gf = Plot[Sin[x], {x,0,2Pi}] Puisque g f est de type G r

Puisque gf est de type Graphics, montrons son “ventre” avec la commande cryptique

InputForm[gf]

Graphics[{{Line[{{2.617993877991494*^-7, 2.6179938779914644*^-7}, {0.25488992540742256, 0.25213889196341294}, {0.5328694051959509, 0.508006999749293},

2Legraphique.nb

Page 19 sur 25

{0.7939393140028286, 0.7131204212611485}, {1.04500937601917, 0.864929243756943}, {1.1741328775392965, 0.9223551787683757}, {1.2459531215560486, 0.9477007807106171}, {1.3122595300248905, 0.9667651045914426}, {1.3796587590126155, 0.9817887599829266}, {1.4151712519040447, 0.9879148386395655}, {1.452818517786423, 0.9930486867121877}, {1.4685459219881412, 0.9947769803573822}, {1.4854640561545152, 0.9963614104927859}, {1.500086156059384, 0.9975010773404583}, {1.51604684666487, 0.9985016215519943}, {1.5257154450014152, 0.9989840291277866}, {1.5346917166321437, 0.9993482993604226}, {1.5432702860122063, 0.9996211824589527}, {1.5476633256302652, 0.99973244406044}, {1.5524154112126216, 0.9998310757272946}, {1.557095534347201, 0.9999061456112971}, {1.5614014708893083, 0.9999558686658562}, {1.5698668259401665, 0.9999995680141116}, {1.57756114604427, 0.9999771186975212}, {1.5856899292294537, 0.9998890923534056}, {1.5937347090403413, 0.999736926845371}, {1.5982802149227149, 0.9996223417200457}, {1.602485706217873, 0.9994979336332918}, {1.6183967320355177, 0.9988673146044424}, {1.6328563679169932, 0.9980748936376652}, {1.6482179131722097, 0.997004445734794}, {1.6800794238288492, 0.9940345429176443}, {1.7152483657654019, 0.9895849335338148}, {1.777634170587595, 0.9786852066169908}, {1.8362027188838577, 0.9649859833349604}, {1.96935359953808, 0.9216218596882011}, {2.091436795752561, 0.8675007654055193}, {2.3528511178201073, 0.7094669459933797}, {2.6042655930971175, 0.511841554314526}, {2.8718601603635063, 0.26647361190518665}, {3.129454880839359, 0.012137474718667576}, {3.403229693304591, -0.258662225484852}, {3.667004658979287, -0.5015694802512557}, {3.920779777863447, -0.7027013025535859}, {4.049329732663053, -0.7881128613261783}, {4.190734988736986, -0.8669961574133123}, {4.325038532491689, -0.9259131412077234}, {4.450690352819988, -0.965951900053347}, {4.519350313521828, -0.9814258230717512}, {4.553172855688176, -0.9873518656643328}, {4.58453217088966, -0.9918374469130117}, {4.612871648977648, -0.995052235828352}, {4.6430429975047485, -0.9975965307241794}, {4.660289968485605, -0.9986431534294095}, {4.6687462414940395, -0.999047806821418}, {4.676516169447837, -0.9993566397149916}, {4.6834667753234696, -0.9995817821814739}, {4.691086112958075, -0.9997731025006338}, {4.698745200202966, -0.9999069250750359}, {4.706826115311297, -0.9999845273059885}, {4.715467134414191, -0.999995262487626}, {4.723451258164842, -0.9999388136291295}, {4.727619549176575, -0.9998840171292116}, {4.732214472348086, -0.9998034813711373}, {4.741512035166449, -0.9995759538126735}, {4.749667910636782, -0.9993052211474813}, {4.758448417490483, -0.9989394516402537}, {4.774327573059229, -0.9980824185354398}, {4.7899679225898915, -0.9969922628207964}, {4.806412896322693, -0.9955830070890066}, {4.835792493229592, -0.992395444313023}, {4.869997057698077, -0.9876055357375542}, {4.90177824537703, -0.9821193947063364}, {4.973863410215748, -0.9660098805988246}, {5.043467528958331, -0.9456922972001947}, {5.109091761474971, -0.9223399824753976}, {5.231802543952269, -0.8681104190514858}, {5.485922076097097, -0.7154466815504685}, {5.756221700231304, -0.502911193409889}, {6.016521477574974, -0.2635146543573849}, {6.266821408128108, -0.01636316874809926}, {6.283185045380199, -2.6179938774695577*^-7}}]}}, {PlotRange -> Automatic, AspectRatio -> GoldenRatio^(-1), DisplayFunction :> $DisplayFunction, ColorOutput -> Automatic, Axes -> Automatic, AxesOrigin -> Automatic, PlotLabel -> None, AxesLabel -> None, Ticks -> Automatic, GridLines -> None, Prolog -> {}, Epilog -> {}, AxesStyle -> Automatic, Background -> Automatic, DefaultColor -> Automatic, DefaultFont :> $DefaultFont, RotateLabel -> True, Frame -> False, FrameStyle -> Automatic, FrameTicks -> Automatic, FrameLabel -> None, PlotRegion -> Automatic, ImageSize -> Automatic, TextStyle :> $TextStyle, FormatType :> $FormatType}]

On voit que la courbe Sinus est essentiellement représentée par un objet graphique Line possédant beaucoup de points définis avec beaucoup de précision. Remarquons aussi qu'il est possible d'ajouter des options à un objet de type Graphics. En fait, Graphics possède 23 options très proches de celles de Plot.

• Affichage d'un graphique

Maintenant il faut afficher le graphique g. C'est l'opérateur Show qui s'en charge

Show[g]

l'opérateur S h o w qui s'en charge Show[g]

2Legraphique.nb

Page 20 sur 25

2Legraphique.nb Page 20 sur 25 S h o w a les mêmes options que G r

Show a les mêmes options que Graphics. Par exemple, on peut demander à avoir un cadre

Show[g, Frame->True]

on peut demander à avoir un cadre Show[g, Frame->True] Nous avons tracé un cercle (objet c
on peut demander à avoir un cadre Show[g, Frame->True] Nous avons tracé un cercle (objet c

Nous avons tracé un cercle (objet c dans g) et un disque noir (objet d dans g). Ils ne sont pas ronds ! Ceci est dû au fait que Mathematica affiche les dessins dans un cadre dont le rapport Longueur/Hauteur = GoldenRatio, le nombre d'or, respectant ainsi les canons de la représentation classique.

Pour que les cercles soient ronds, il faut que Longueur/Hauteur = 1. Ceci peut être demandé avec l'option AspectRatio

Show[g, Frame->True, AspectRatio->1]

AspectRatio Show[g, Frame->True, AspectRatio->1]
AspectRatio Show[g, Frame->True, AspectRatio->1]

2Legraphique.nb

Page 21 sur 25

On constate que le cadre est carré, en conséquence, le cercle et le disque sont ronds.

• Primitives de dessin

• Lignes

La principale primitive de dessin est Line. Une ligne prend une liste de coordonnées de points, ce qui permet de tracer en fait un polygone

Clear[star, nose, g]

star = Line[{{4, 6}, {5, 9}, {5, 6}, {8, 8}, {6, 4}, {8, 1}, {5, 3}, {3, 1}, {3, 4}, {1, 8}, {4, 6}}]

8}, {6, 4}, {8, 1}, {5, 3}, {3, 1}, {3, 4}, {1, 8}, {4, 6}}] nose

nose = Line[{{4, 5}, {4, 4}, {5, 5}}]

4}, {1, 8}, {4, 6}}] nose = Line[{{4, 5}, {4, 4}, {5, 5}}] Construisons un objet

Construisons un objet graphique en agrégeant le polygone star et le polygone nose

g = Graphics[{star, nose}]

r et le polygone n o s e g = Graphics[{star, nose}] Pour le voir Show[g];

Pour le voir

Show[g];

n o s e g = Graphics[{star, nose}] Pour le voir Show[g]; • Polygones En Mathematica

• Polygones

En Mathematica, on appelle Polygon un objet analogue à un objet Line, mais dont la surface est colorée (en noir par défaut)

Clear[mouth] mouth = Polygon[{{3.6, 3.6}, {3.8, 3.3}, {4.1, 3.3}, {4.4, 3.5}, {4.7, 3.7}, {4.4, 3.0}, {4.0, 2.7}, {3.7, 2.9}, {3.6, 3.6}}];

Ajoutons la bouche mouth. On peut construire directement l'expression à afficher de la manière

2Legraphique.nb

Page 22 sur 25

suivante

Show[Graphics[{star, nose, mouth}]];

Page 22 sur 25 suivante Show[Graphics[{star, nose, mouth}]]; On vérifie que contrairement à une L i

On vérifie que contrairement à une Line, un Polygon est “rempli” de couleur (noire par défaut)

• Cercles et disques

Les disques sont aux cercles ce que les polygones sont aux lignes. On spécifie le point central {x,y} et le rayon (un nombre non complexe)

Clear[eyeLeft, eyeRight] eyeLeft = Circle[{3, 6}, 0.3]; eyeRight = Disk[{5, 5.5}, 0.3];

Show[Graphics[{star, nose, mouth, eyeLeft, eyeRight}]];

Show[Graphics[{star, nose, mouth, eyeLeft, eyeRight}]]; • Points On peut aussi ajouter quelques points Clear[peas]

• Points

On peut aussi ajouter quelques points

Clear[peas] peas = {Point[{5.1, 4.1}], Point[{5.3, 4.5}], Point[{5.6, 4.6}], Point[{5.7, 4.1}], Point[{5.4, 4.3}], Point[{5.4, 3.7}] };

Show[Graphics[{star, nose, mouth, eyeLeft, eyeRight, peas}], Frame->True];

2Legraphique.nb

Page 23 sur 25

2Legraphique.nb Page 23 sur 25 • Rectangle et couleur Nous avons placé le dessin ci-dessus dans

• Rectangle et couleur

Nous avons placé le dessin ci-dessus dans un cadre pour voir ses dimensions. Supposons que nous voulions l'encadrer nous-même en utilisant un Rectangle

Clear[cadre, figure] cadre = Rectangle[{0,0}, {10,10}];

Pour structurer les idées, plaçons le dessin ci-dessus dans un symbole appelé figure et le cadre dans un symbole appelé cadre. Le type Graphics permet d'imbriquer des dessins les uns dans les autres i.e. de les structurer hiérarchiquement

figure = {star, nose, mouth, eyeLeft, eyeRight, peas}; g = Graphics[{figure, cadre}];

On peut le montrer

Show[g];

g = Graphics[{figure, cadre}]; On peut le montrer Show[g]; Mais on ne voit rien ! En

Mais on ne voit rien ! En effet, Rectangle dessine un rectangle de couleur (noire par défaut) qui empêche de voir le dessin. Ce qu'il faudrait c'est une couleur plus claire.

Rappelons les couleurs déjà utilisées plus haut

Clear[rouge, bleu, vert, jaune] rouge = RGBColor[1., 0., 0.]; bleu = RGBColor[0., 0., 1.];

2Legraphique.nb

Page 24 sur 25

vert = RGBColor[0., 1., 0.]; jaune = RGBColor[0.964, 0.960, 0.630];

On peut considérer maintenant que RGBColor est un type au même titre que Line ou Circle mais il dénote un objet graphique particulier : une couleur. Ansi, placé dans un agrégat d'objets graphiques, il les colore avec sa couleur. En général, si on veut colorer un (ou plusieurs) objet(s), on place la couleur en tête de liste et l'(es) objet(s) à colorer derrière.

Clear[cadre] cadre = {jaune, Rectangle[{0,0}+0.1, {10,10}-0.1]};

Ainsi, le cadre sera un Rectangle peint en jaune. De même, on peut peindre en rouge la bouche (mouth) et les points (peas) en vert

figure = {star, nose, {rouge, mouth}, eyeLeft, eyeRight, {vert, peas}};

g = Graphics[{cadre, figure}];

Enfin on montre

Show[g];

g = Graphics[{cadre, figure}]; Enfin on montre Show[g]; Remarque : les couleurs appraissent en niveaux de

Remarque : les couleurs appraissent en niveaux de gris sur le papier.

• Texte

On peut ajouter des textes et ceci de multiples façons. On se contente ici de placer une légende, composée d'une chaîne de caractères (sans accents) suivi des coordonnées du point central du texte

Clear[legend]

legend = Text["A star is Borgne", {7.5, 9.2}];

g = Graphics[{cadre, figure, legend}]; Show[g];

2Legraphique.nb

Page 25 sur 25

2Legraphique.nb Page 25 sur 25 Retour http://www.limsi.fr/%7Ejps/enseignement/tutoriels/math/2.mathgraphique/mathgraphi

Retour