Tikz

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 10

Sance no 5

Figures mathmatiques avec TikZ

5.1 Introduction

Dans beaucoup douvrages mathmatiques, les figures souffrent de dfauts rdhibitoires : traits trop
pais, flches dans un style compltement diffrent de celles du reste du document, polices de caractres
diffrentes de celles du document, pixellisation, etc.
Il y a plusieurs faon de faire des figures mathmatiques avec LaTeX 1 , mais celle que nous allons voir
aujourdhui, TikZ, a lavantage de pallier tous ces dfauts. Un autre avantage de TikZ est de disposer
dun manuel complet (560 pages) dcrivant toutes les fonctions disponibles en un seul et unique endroit.
On peut trouver ce manuel ladresse
http://www.ctan.org/tex-archive/graphics/pgf/base/doc/generic/pgf/pgfmanual.pdf
On pourra aussi consulter la gallerie dexemples en ligne :
http://www.texample.net/tikz/examples/all/
Il est galement possible de faire des animations avec TikZ et le package animate. Voici, titre
dexemple, la convergence des sommes de Riemann vers lintgrale dune fonction :

(Cliquer sur le dessin pour lancer lanimation.)

1. Citons par exemple pstricks, metapost, asymptote ou des logiciels externes comme xfig ou texgraph. Noter que quelques
uns dentre eux ont certains des cueils mentionns plus haut.

1
Seance no 5. Figures mathmatiques avec TikZ LM204

5.2 Traits, flches, rectangles, cercles et ellipses


Noter que, dans TeXmaker, il y a un menu TikZ dans la barre latrale. Eller permet daccder la
plupart des fonctions usuelles. Avant de pouvoir faire une figure avec TikZ, il faut charge le package
tikz :
\usepackage{tikz}

Toute figure TikZ doit tre lintrieur dun environnement tikzpicture, quil vaut mieux toujours
mettre dans un environnement center (ou figure si besoin est) :
\begin{center}\begin{tikzpicture}

\end{tikzpicture}\end{center}

Pour tracer une ligne entre deux points, on utilise la commande \draw de la faon suivante
\begin{tikzpicture}
\draw (0,0) -- (1,1);
\end{tikzpicture}

Bien noter le ; la fin de la ligne. Pour tracer une flche, il suffit de rajouter une option \draw :
\begin{tikzpicture}
\draw[->] (0,0) -- (1,1);
\draw[<->] (0.5,0) -- (0,1);
\end{tikzpicture}

On peut vouloir que les lignes sont en pointill :


\begin{tikzpicture}
\draw[dotted] (0,0) -- (1,1);
\draw[<-,dashed] (0.5,0) -- (0,1);
\end{tikzpicture}

Il est possible de tracer plusieurs traits de suite en les enchanant :


\begin{tikzpicture}
\draw (0,0) -- (1,1) -- (0.5,0) -- (0,1);
\end{tikzpicture}

Si on veut refermer le trac, il sufit de terminer la chaine par un cycle :


\begin{tikzpicture}
\draw (0,0) -- (1,1) -- (0.5,0) -- (0,1) -- cycle;
\end{tikzpicture}

On peut changer la couleur du trait avec loption color et la couleur de remplissage avec fill (les
diffrentes couleurs disponibles sont dcrites dans laide-mmoire, page 3) :
\begin{tikzpicture}
\draw[color=red,fill=blue] (0,0) -- (1,1) -- (0.5,0) -- (0,1) -- cycle;
\end{tikzpicture}

Pour rendre un trait plus pais, on peut spcifier une paisseur, par exemple
\begin{tikzpicture}
\draw[ultra thick] (0,0) -- (1,1);
\end{tikzpicture}

Les paisseurs disponibles sont ultra thin, very thin, thin (largeur par dfaut), semithick,
thick, very thick, ultra thick.
Pour tracer un rectangle, on peut utiliser rectangle et spcifier le point en bas gauche et en haut
droite :

2
LM204 5.3. Texte et lgendes

\begin{tikzpicture}
\draw[fill=green!30] (0,0) rectangle (1,0.75);
\end{tikzpicture}

De mme, on peut tracer des cercles :


\begin{tikzpicture}
\draw[color=violet] (0,0) circle (0.5cm);
\end{tikzpicture}

et des ellipses :
\begin{tikzpicture}
\draw[dashed] (0,0) ellipse (0.5cm and 0.33cm);
\end{tikzpicture}

Pour agrandir une figure dun facteur, disons 2, il suffit dutiliser loption scale=2 :
\begin{tikzpicture}[scale=2]
\draw[dashed] (0,0) ellipse (0.5cm and 0.33cm);
\end{tikzpicture}

Exercice 1. Reproduire la figure suivante, qui reprsente diffrentes les boules units de R2 pour les
trois normes usuelles :

5.3 Texte et lgendes

Pour placer du texte un endroit prcis, on utilise \node de la faon suivante :

texte \begin{tikzpicture}
\node at (0,0) {texte};
\end{tikzpicture}

Le texte est alors centr la position indique. On peut nanmoins le mettre au-dessus, en-dessous ou
ct en spcifiant loption adquate :
\begin{tikzpicture}
g hc r \node at (0,0) {c};
b \node[above] at (0,0) {h};
\node[below] at (0,0) {b};
\node[left] at (0,0) {g};
\node[right] at (0,0) {r};
\end{tikzpicture}

3
Seance no 5. Figures mathmatiques avec TikZ LM204

On peut aussi utiliser below right, above left, etc. Il est possible, si besoin, dloigner le texte de
son point dancrage en spcifiant la distance explicitement :
\begin{tikzpicture}
hg hd \node at (0,0) {c};
c \node[above left=0.25cm] at (0,0) {hg};
bg bd \node[below left=0.25cm] at (0,0) {bg};
\node[above right=0.25cm] at (0,0) {hd};
\node[below right=0.25cm] at (0,0) {bd};
\end{tikzpicture}
On peut aussi rapprocher le point en spcifiant une distance ngative. Il est possible dancrer un texte
non pas un point quon vient de spcifier, mais lintrieur dun \draw, par exemple :
\begin{tikzpicture}
A B
\draw (0,0) node[below] {A} -- (1,0) node[below] {B};
\end{tikzpicture}
Bien noter que cest node et non \node lintrieur dun \draw. Il est possible de mettre un node au
milieu de ce qui vient dtre dessin. Par exemple :
\begin{tikzpicture}
` \draw (0,0) -- (1,0) node[pos=0.5,below] {$\ell$};
\end{tikzpicture}

Exercice 2. Reprendre le code de la figure de lexercice prcdent pour obtenir


y

Lgende
k k

k k2
x
k k1

5.4 Boucles

Pour faire des graduations sur un axe, il est possible dutiliser la boucle \foreach de la faon suivante :

0 1 2 3 4

\begin{tikzpicture}
\draw (0,0) -- (4,0);
\foreach \x in {0,1,...,4} {
\draw (\x,0.1cm) -- (\x,-0.1cm) node[below] {$\x\strut$};
}
\end{tikzpicture}
(Le \strut est l uniquement pour sassurer de lalignement vertical des nombres.) Pour les nombres
ngatifs, on peut employer la mme commande ou alors, si on veut que le signe ne soit pas pris en
compte dans lalignement, utiliser un \phantom :

4
LM204 5.5. Trac de fonctions

4 3 2 1

\begin{tikzpicture}
\draw (-4,0) -- (-1,0);
\foreach \x in {-4,...,-1} {
\draw (\x,0.1cm) -- (\x,-0.1cm) node[below] {$\x\phantom{-}\strut$};
}
\end{tikzpicture}

(Ce quon vient de faire revient crire 4 mais avec le deuxime non affich grce au \phantom.)

Si jamais on a besoin dafficher un texte diffrent de la valeur, on peut le faire ainsi :


0 1 2

\begin{tikzpicture}
\draw (0,0) -- (4,0);
\foreach \x/\xtext in {0,1,1.414/\sqrt{2},3.14/\pi} {
\draw (\x,0.1cm) -- (\x,-0.1cm) node[below] {$\xtext\strut$};
}
\end{tikzpicture}

Exercice 3. Avec les commandes prcdentes pour les boucles, tracer les axes gradus suivants :
y

x
4 3 2 1 0 1 2 3 4
1

5.5 Trac de fonctions

5
Seance no 5. Figures mathmatiques avec TikZ LM204

Pour des raisons techniques (caractres actifs), partir de maintenant, toujours ra-
jouter \shorthandoff{:} avant \begin{tikzpicture} et \shorthandon{:} aprs
\end{tikzpicture} :
\begin{center}\shorthandoff{:}\begin{tikzpicture}

\end{tikzpicture}\shorthandon{:}\end{center}

Utiliser \shorthandoff{:} dans la dfinition dune macro naura aucun effet ; il faut le mettre
avant le \newcommand et mettre \shorthandon{:} aprs :
\shorthandoff{:}
\newcommand{\dessine}[1]{\begin{tikzpicture}...\end{tikzpicture}}
\shorthandon{:}

Pour tracer une fonction, on utilise la commande draw avec un plot. Par exemple, pour tracer la

fonction x 7 x,

\shorthandoff{:}\begin{tikzpicture}
\draw[domain=0:5,samples=100,color=blue] plot ({\x},{sqrt(\x)});
\end{tikzpicture}\shorthandon{:}

Loption domain=0:5 permet de se restreindre au domaine allant de x = 0 x = 5 (le domaine par


dfaut est x = 5 x = 5), o la racine carre est dfinie et loption samples=100 permet de prendre
plus de points pour tracer la fonction, ce qui amliore la qualit du trac.

Les fonctions disponibles sont rcapitules dans le tableau suivant :

nom signification exemple


exp exponentielle exp(\x)
ln logarithme ln(\x)
sqrt racine carre sqrt(\x)
sin sinus sin(\x r)
cos cosinus cos(\x r)
tan tangente tan(\x r)
cot cotangente cot(\x r)
abs value absolue abs(\x)
asin arcsinus rad(asin(\x))
acos arccosinus rad(acos(\x))
atan arctangente rad(atan(\x))
1
sec sin sec(\x r)
1
cosec cos cosec(\x r)

Le r aprs les fonctions trigonomtriques est l pour que largument soit en radiant. Attention, dans la
version actuelle (2.0), la fonction tan est buggue pour les valeurs ngatives de largument. Pour obtenir
un carr, ne pas taper \x^2, mais utiliser plutt \x*\x ; cest un peut lourd taper mais a vite certaines
erreurs difficiles trouver.

6
LM204 5.6. Animations

Exercice 4. Tracer les fonctions cosinus et sinus :


y

x
2 0
2
1

Il peut arriver, dans certains cas, que la courbe monte trop haut pour certaines valeurs de x, au point de
ne plus tenir sur la page ; cest le cas avec x 7 x2 par exemple qui vaut 25 pour x = 5. Il faut dans ce cas
clipper le dessin
y

x
4 3 2 1 0 1 2 3 4

\shorthandoff{:}\begin{tikzpicture}
\draw[->] (-5,0) -- (5,0) node[right] {$x$};
\draw[->] (0,-1) -- (0,5) node[above] {$y$};
\foreach \x in {-4,...,-1} {
\draw (\x,0.1cm) -- (\x,-0.1cm) node[below] {$\x\phantom{-}\strut$};
}
\foreach \x in {1,...,4} {
\draw (\x,0.1cm) -- (\x,-0.1cm) node[below] {$\x\strut$};
}
\foreach \y in {1,2,...,4} {
\draw (0.1cm,\y) -- (-0.1cm,\y) node[left] {$\y\strut$};
}
\node[below left=0.1cm] at (-0,0) {$0\strut$};
\begin{scope}
\clip (-5,-1) rectangle (5,5);
\draw[color=red,samples=100] plot ({\x},{\x*\x});
\end{scope}
\end{tikzpicture}\shorthandon{:}
Dans le code prcdent le \begin{scope}...\end{scope} sert dlimiter laction du \clip (pour
mettre, par exemple, du code aprs qui pourrai dpasser du rectangle de clippage).

5.6 Animations
Pour pouvoir faire des animations, il suffit de rajouter au prambule le package animate :

7
Seance no 5. Figures mathmatiques avec TikZ LM204

\usepackage{animate}
On utilise ensuite lenvironnement animateinline avec le paramtre obligatoire 1 (ce paramtre contrle
la vitesse de dfilement). On met ensuite limage ou la figure quon veut pour premire image de
lanimation puis un \newframe puis la seconde image/figure puis encore \newframe, etc. La dernire
image sera celle qui sera affiche la fin de lanimation (souvent, on remet la premire image, mais ce
nest pas obligatoire).
Voici un exemple, o on trace un rectangle pas pas. Pour des raisons techniques (interaction entre les
bounding box et animate), on rajoute dans toutes les images la ligne
\useasboundingbox (-0.1,-0.1) rectangle (1.1,1.1);
qui permet de sassurer que toutes les images auront la mme taille, taille qui doit tre suffisante pour
afficher toutes les images. Voici le code :
\begin{center}\shorthandoff{:}
\newcommand{\dessiner}[1]{
\begin{tikzpicture}
\useasboundingbox (-0.1,-0.1) rectangle (1.1,1.1);
#1
\end{tikzpicture}
}
\begin{animateinline}{1}%
\dessiner{\draw (0,0) -- (1,0);}
\newframe
\dessiner{\draw (0,0) -- (1,0) -- (1,1);}
\newframe
\dessiner{\draw (0,0) -- (1,0) -- (1,1) -- (0,1);}
\newframe
\dessiner{\draw (0,0) -- (1,0) -- (1,1) -- (0,1) -- cycle;}
\newframe
\dessiner{\draw (0,0) -- (1,0);}
\end{animateinline}
\shorthandon{:}\end{center}
(exceptionnellement, on a mis un \newcommand ailleurs que dans le prambule, car la commande
\dessiner nest utile nulle part ailleurs) et voici le rsultat :

(Cliquer sur limage pour lancer lanimation.)

Exercice 5. Reproduire lanimation suivante, qui dessine la courbe reprsentative de cosinus avec les
2 2 4 2 4 x6
polynmes de Taylor, successivement x 7 1, x 7 1 x2 , x 7 1 x2 + x24 et x 7 1 x2 + x24 + 720 :

x
2 0
2
1

x2 x4 x6 x8
Que se passe-t-il si on essaie de dessiner x 7 1 2 + 24 720 + 40320 ? Pourquoi ? Comment
contourner ce problme ?

8
LM204 5.7. Pour aller plus loin : courbes paramtriques, courbes polaires

5.7 Pour aller plus loin : courbes paramtriques, courbes polaires

Le fait dcrire plot ({\x},{f(\x)}) pour tracer une fonction suggre que lon peut aussi faire des
trac de courbes paramtriques en utilisant plot ({f(\x)},{g(\x)}).

Exercice 6. Tracer la courbe paramtre t 7 (cos(3t), sin(2t)) pour t [ ; ] :


y

x
1 0 1

Pour tracer des courbes polaires, il ny a actuellemen pas dinterface utilisateur simple, donc il faut
utiliser des commandes internes un peu compliques. Par exemple, voici le code pour tracer la courbe
r = cos(4) :

x
1 0 1

9
Seance no 5. Figures mathmatiques avec TikZ LM204

\shorthandoff{:}\begin{tikzpicture}[scale=2]
\draw[->] (-1.5,0) -- (1.5,0) node[right] {$x$};
\draw[->] (0,-1.5) -- (0,1.5) node[above] {$y$};
\foreach \x/\xtext in {-1} {
\draw (\x,0.05cm) -- (\x,-0.05cm) node[below] {$\xtext\phantom{-}\strut$};
}
\foreach \x/\xtext in {1} {
\draw (\x,0.05cm) -- (\x,-0.05cm) node[below] {$\xtext\strut$};
}
\foreach \y in {-1,1} {
\draw (0.05cm,\y) -- (-0.05cm,\y) node[left] {$\y\strut$};
}
\node[below left=0.1cm] at (-0,0) {$0\strut$};
\begin{scope}
\clip (-1.5,-1.5) rectangle (1.5,1.5);
\draw[color=blue,domain=-3.14:3.14,samples=200,smooth]
plot (canvas polar cs:angle=\x r,radius={cos(4*\x r)*28.35});
\end{scope}
\end{tikzpicture}\shorthandon{:}

(Le 28.35 est l pour convertir les points (qui sont lunit de mesure interne par dfaut en centimrtres
vu que 1 cm = 28.35 pt.) Noter lutilisation de loption smooth pour viter davoir trop augmenter
la valeur de samples.

Exercice 7. Tracer la courbe polaire r = ln pour [0,01 ; 37,69] :


y

x
4 3 2 1 0 1 2 3 4
1

10

Vous aimerez peut-être aussi