Latex, package tzk-tab. Tableaux de signes et de variations de fonctions

Logo

Introduction

Comment dessiner de jolis tableaux de signes et de variations pour des publications mathématiques avec Latex et le puissant package tkz-tab ?

Une fois que l’on a compris le mécanisme des trois principales macros à connaître (tkzTabInit, tkzTabLine, tkzTabVar), un tableau de signes et de variations est construit en quelques minutes.

Squelette du tableau, tkzTabInit

Importer le package tkz-tab package dans le document Latex :

\usepackage{tkz-tab}

Pour initialiser un tableau, utiliser \tkzTabInit, commande à placer dans un environnement tkzpicture.

tkz-tab first table
\documentclass[tikz]{standalone}

\usepackage{amsmath,amssymb}
\usepackage{tkz-tab}

\begin{document}

  \begin{tikzpicture}
     
     \tkzTabInit[lgt=3,espcl=1.5]
       {$x$ / 1 , $f'(x)=-\sin(x)$ / 1, $f(x)=cos(x)$ / 2 }
       {$0$, $\dfrac{\pi}{2}$, $\pi$, $\dfrac{3\pi}{2}$, $2\pi$}

  \end{tikzpicture}

\end{document}

La syntaxe globale de la commande \tkzTabInit est :

\tkzTabinit[local options]{e(1)/h(1),...,e(p)/h(p)}{a(1),...,a(n)}

2 listes obligatoires et des options facultatives.

  • {e(1)/h(1),...,e(p)/h(p)} : données de la colonne de gauche. 1 élément e(p) \( \implies \) 1 ligne, aussi le nombre d’éléments définit le nombre de lignes du tableau. Les hauteurs (h(p)) sont en centimètres.
  • {a(1),...,a(n)} : valeurs en entête. Ce qui définit le nombre de colonnes après la première colonne de gauche.
tkz-tab tkzTabInit, matching elements

Dans l’exemple ci-dessus, 2 options appliquées :

  • lgt redimensionne la largeur de la première colonne (en centimètres).
  • espcl redimensionne l’espacement entre 2 valeurs dans l’entête (en centimètres).

Le code minimum pour un tableau tkzTab est le suivant :

\tkzTabInit{ / 1}{ , }

Utiliser les accolades pour échapper les virgules "," dans les nombres :

\tkzTabInit{$x$ / 1, $x^2$ / 1}{ $0$, ${0,5}$, $1$ }
tkz-tab numbers with comma

Structure d’un programme tkz-tab

Quand le squelette d’un tableau est prêt avec \tkzTabInit, la structure globale du programme est alors le suivant :

\begin{tikzpicture}
  \tkzTabInit{…}{…}
  commande pour la ligne 1
  commande pour la ligne 2
  …
\end{tikzpicture}

Les commandes sont (liste exhaustive) :

  • \tkzTabLine : crée une ligne de signes
  • \tkzTabVar : crée une ligne de variations
  • \tkzTabIma,\tkzTabVal : ajoute des valeurs intermédiaires
  • \tkzTabSlope : ajoute des valeurs de dérivées dans une ligne de signes
  • \tkzTabTan, \tkzTabTan : ajoute des tangentes horizontales

Les 2 premières commandes sont les plus importantes.

Ligne de signes, tkzTabLine

L’argument de la commande \tkzTabLine pour créer une ligne de signes est une liste. Pour \(n\) valeurs dans l’entête du tableau, \tkzTabLine attend une liste de \(2n - 1\) éléments : \(n\) éléments placés sous les valeurs et \(n - 1\) éléments placés entre les valeurs :

tkz-tab tkzTabLine, matching elements
  \begin{tikzpicture}
     \tkzTabInit[lgt=3,espcl=1.5]
       {$x$ / 1 , $f'(x)=-\sin(x)$ / 1, $f(x)=cos(x)$ / 2 }
       {$0$, $\dfrac{\pi}{2}$, $\pi$, $\dfrac{3\pi}{2}$, $2\pi$}
     \tkzTabLine
       { , , - , , , , + , , }
  \end{tikzpicture}
tkz-tab tkzTabLine, first skeleton

Les symboles autorisés sous les valeurs sont :

  • z : zéro centré sur une ligne verticale en pointillés
  • t : ligne verticale en pointillés
  • d : double barre verticale

Remarque : ils ne sont pas autorisés entre 2 valeurs.

  \begin{tikzpicture}
     \tkzTabInit[lgt=3,espcl=1.5]
       {$x$ / 1 , $f'(x)=-\sin(x)$ / 1, $f(x)=cos(x)$ / 2 }
       {$0$, $\dfrac{\pi}{2}$, $\pi$, $\dfrac{3\pi}{2}$, $2\pi$}
     \tkzTabLine
       {z, , - ,  , z, , + , ,z}
  \end{tikzpicture}
tkz-tab tkzTabLine, second skeleton with z

Le symbole h dessine une zone interdite (fonction non définie) : l’intervalle est en hâchures. Évidemment, le symbole h ne peut être appliqué que pour un élément de la liste entre 2 valeurs.

  \begin{tikzpicture}
     \tkzTabInit[lgt=3]
       {$x$ / 1 , $f'(x)$ / 1, $f(x)=\sqrt{\dfrac{x-1}{x+1}}$ / 2 }
       {$-\infty$, $-1$, $1$, $+\infty$}
     \tkzTabLine
       { , + , d , h , d, +, }
  \end{tikzpicture}
tkz-tab tkzTabLine, third skeleton with d,h

Ligne de variations, tkzTabVar

La macro \tkTabVar construit une ligne de variations. L’argument est une liste comme pour \tkTabLine.

Pour \(n\) valeurs en entête, la liste contiendra \(n\) groupes.

  • \( \pm / e \) pour positionner un élément sous une valeur: \(+\) au sommet, \(-\) au bas de la ligne de variations.
  • /R si il n’y a rien à faire pour une valeur.
tkz-tab tkzTabVar, matching elements
  \begin{tikzpicture}  
     \tkzTabInit[lgt=3]
       {$x$ / 1 , $f'(x)=-\sin(x)$ / 1, $f(x)=cos(x)$ / 2 }
       {$0$, $\dfrac{\pi}{2}$, $\pi$, $\dfrac{3\pi}{2}$, $2\pi$}
     \tkzTabLine
       {z, , - ,  , z, , + , ,z}
     \tkzTabVar
       { +/$1$, R/ , -/$-1$, R/, +/$1$}
  \end{tikzpicture}
tkz-tab tkzTabVar, first skeleton

Concernant la continuité, la discontinuité et les zones interdites, les symboles sont :

  • Double barre verticale et continuité : -C/x, +C/x
  • Double barre verticale et discontinuité : -D/x, +D/x, D-/x, D+/x
  • Zone interdite : -H/x, +H/x
  • Combinaisons: -CH/x, +CH/x, -DH/x, +DH/x

Des exemples concrets sont bien mieux que de très longues explications sur les symboles C/D/H :

  \begin{tikzpicture}   
     \tkzTabInit[lgt=3,espcl=1.5]
       {$x$ / 1 , $f'(x)$ / 1, $f(x)=\sqrt{\dfrac{x-1}{x+1}}$ / 2 }
       {$-\infty$, $-1$, $1$, $+\infty$}
     \tkzTabLine
       { , + , d , h , d, +, }
     \tkzTabVar
       { -/1 , +DH/$+\infty$, -C/0, +/1}
  \end{tikzpicture}
tkz-tab tkzTabVar, example 1 C, H and D
  \begin{tikzpicture}  
     \tkzTabInit[lgt=2.75]
       { $x$/1  ,  $f'(x)$/1  ,  $f(x) = tan(x)$/2  }
       { $0$,  $\dfrac{\pi}{2}$,  $\pi$}
     \tkzTabLine
       { , + , d , + , }
     \tkzTabVar
       { -/$0$ ,  +D-/$+\infty$/$-\infty$ , +/$0$}
  \end{tikzpicture}  
tkz-tab tkzTabVar, example 2, C, H and D

Valeurs intermédiaires dans les lignes de variations, tkzTabIma, tkzTabVal

tkzTabIma

Pour ajouter des valeurs dans les flèches de variations pour des valeurs en entête existantes et définies avec \tkzTabInit, utiliser \tkzTabIma après \tkzTabVar.

\tkzTabIma {position de départ de la flèche}{position de fin de la flèche}{position de la valeur d’entête}{valeur à afficher sur la ligne}
  \begin{tikzpicture}     
     \tkzTabInit[lgt=3,espcl=1.5]
       {$x$ / 1 , $f'(x)=-\sin(x)$ / 1, $f(x)=cos(x)$ / 2 }
       {$0$, $\dfrac{\pi}{2}$, $\pi$, $\dfrac{3\pi}{2}$, $2\pi$}
     \tkzTabLine
       {z, , - ,  , z, , + , ,z}
     \tkzTabVar
       { +/$1$, R/ , -/$-1$, R/, +/$1$}
     \tkzTabIma{1}{3}{2}{0}
     \tkzTabIma{3}{5}{4}{0}
  \end{tikzpicture}  
tkz-tab tkzTabVar, tkzTabIma

tkzTabVal

Dans un paragraphe précédent, un tableau de signes et de variations a été construit pour la fonction \(f(x) = tan(x)\).

tkz-tab tkzTabVar, example 2, C, H and D

Souvent, des valeurs remarquables sont affichées sur les lignes de variations. Dans l’exemple ci-dessus, on veut afficher la valeur de \(tan(x)\) pour \(\dfrac{\pi}{4}\) et \(\dfrac{3\pi}{4}\).

Sans avoir à redéfinir \tkzTabInit, \tkzTabLine, \tkzTabVar afin d’ajouter \(\dfrac{\pi}{4}\) et \(\dfrac{3\pi}{4}\), des valeurs d’entête et leurs valeurs correspondantes sur les lignes de variations peuvent être ajoutées en utilisant \tkzTabVal. Comme \tkzTabIma, la commande \tkzTabVal est appelée après \tkzTabVar.

\tkzTabVal {position de départ de la flèche}{position de fin de la flèche}{position relative entre le début et la fin [0-1]}
             {valeur en entête}{valeur à afficher sur la ligne}
  \begin{tikzpicture}
     \tkzTabInit[lgt=2.60]
       { $x$/1  ,  $f'(x)$/1  ,  $f(x) = tan(x)$/2.5  }
       { $0$,  $\dfrac{\pi}{2}$,  $\pi$}
     \tkzTabLine
       { , + , d , + , }
     \tkzTabVar
       { -/$0$ ,  +D-/$+\infty$/$-\infty$ , +/$0$}
     \tkzTabVal {1}{2}{0.5}{$\dfrac{\pi}{4}$}{$1$}
     \tkzTabVal {2}{3}{0.5}{$\dfrac{3\pi}{4}$}{$1$}
  \end{tikzpicture}  
tkz-tab tkzTabVar, tkzTabVal

L’exemple dans cet article qui construit le tableau pour la fonction cosinus sur le domaine \([0,2\pi]\) est alors bien plus facilement codé en utilisant \tkzTabVal : \(\dfrac{\pi}{2}\) et \(\dfrac{3\pi}{2}\) ne sont en effet plus explicitement définis dans les macros \tkzTabInit, \tkzTabLine et \tkzTabVal.

  \begin{tikzpicture}
     \tkzTabInit[lgt=3,espcl=2.5]
       {$x$ / 1 , $f'(x)=-\sin(x)$ / 1, $f(x)=cos(x)$ / 2 }
       {$0$, $\pi$, $2\pi$}
     \tkzTabLine
       {z, - , z , + , z}
     \tkzTabVar
       { +/$1$ , -/$-1$ , +/$1$}
     \tkzTabVal {1}{2}{0.5}{$\dfrac{\pi}{2}$}{$0$}
     \tkzTabVal {2}{3}{0.5}{$\dfrac{3\pi}{2}$}{$0$}
  \end{tikzpicture}  
tkz-tab cos function example with tkzTabVal

Dans les 2 exemples précédents, le positionnement est facile, les valeurs intermédiaires à ajouter sont exactement au milieu de la flèche {0.5}.

Dans l’exemple ci-dessous, une valeur intermédiaire est ajoutée sur la flèche partant de la position #1 et finissant à la position #3. La position est qualitativement définie à 0.4 pour respecter l’échelle.

\begin{tikzpicture}
	\tkzTabInit[espcl=6]
		{$x$/1 , $f'(x)$/1 , $f(x)$/2}
		{$0$ , $\sqrt{e}$ , $+\infty$}
	\tkzTabLine{d,+,0,+,}
	\tkzTabVar{D- / $-\infty$ , R/ , + / $0$ }
	\tkzTabVal[draw]{1}{3}{0.4}{$1$}{$-e$}
\end{tikzpicture}
tkz-tab, tkzTabVal positioning and dotted line draw

Remarquer l’option draw ajoutée dans la macro tkTabVal pour faciliter la lecture : une ligne verticale en pointillés est affichée entre la valeur en entête et la valeur intermédiaire sur la ligne de variations.

Valeurs des dérivées, tkzTabSlope

Pour ajouter les valeurs des dérivées sur une ligne de signes, utiliser tkzTabSlope après la commande tkzTabLine.

\tkTabSlope { position/valeur à gauche/valeur à droite, position/valeur à gauche/valeur à droite, … }
  \begin{tikzpicture}
     \tkzTabInit[lgt=2.70]
       { $x$/1  ,  $f'(x)=\dfrac{1}{\cos^2x}$/2  ,  $f(x) = tan(x)$/2.5  }
       { $0$,  $\dfrac{\pi}{2}$,  $\pi$}
     \tkzTabLine
       { , + , d , + , }
     \tkzTabSlope { 1//$1$, 2/+\infty/+\infty, 3/1/ }
     \tkzTabVar
       { -/$0$ ,  +D-/$+\infty$/$-\infty$ , +/$0$}
     \tkzTabVal {1}{2}{0.5}{$\dfrac{\pi}{4}$}{$1$}
     \tkzTabVal {2}{3}{0.5}{$\dfrac{3\pi}{4}$}{$1$}
  \end{tikzpicture}  
tkz-tab, tkzTabSlope

Tangentes horizontales, tkzTabTan

Utiliser tkzTabTan pour dessiner des tangentes horizontales qui montrent plus précisément dans les variations les extrema, la convexité, la concavité, les points d’inflexion… :

\tkTabTan { position de départ de la flèche, position de fin de la flèche , position de la valeur d’entête, valeur à appliquer sur la tangente }
  \begin{tikzpicture}
     \tkzTabInit[lgt=3]
       {$x$ / 1 , $f'(x)=2x$ / 1, $f(x)=x^2$ / 2 }
       {$-\infty$, $0$, $+\infty$}
     \tkzTabLine
       { , - , z , + , }
     \tkzTabSlope
       { 1//-\infty , 3/+\infty/ }
     \tkzTabVar
       { +/$+\infty$, -/ , +/$+\infty$ }
     \tkzTabTan
       {1}{2}{2}{$0$}
  \end{tikzpicture}
tkz-tab, tkzTabTan

À propos des styles

Le style par défaut est généralement suffisant, mais il est possible d’appliquer des styles personnalisés (couleurs, arrière-plan…) pour la plupart des éléments d’un tableau avec tikzset :

  • Flèches
  • Nœuds
  • Double barres
  • Barres verticales

Les options de style sont très nombreuses et ce n’est pas l’objet de cet article.

Dans l’exemple qui suit, un style personnalisé est appliqué pour les zones interdites, celui par défaut est quelque peu "affreux".

  \begin{tikzpicture}

     \tikzset{h style/.style = {pattern = north west lines,
		    pattern color = red!30}}
     
     \tkzTabInit[lgt=3]
       {$x$ / 1 , $f'(x)$ / 1, $f(x)=\sqrt{\dfrac{x-1}{x+1}}$ / 2 }
       {$-\infty$, $-1$, $1$, $+\infty$}
     \tkzTabLine
       { , + , d , h , d, +, }
     \tkzTabVar
       { -/1 , +DH/$+\infty$, -C/0, +/1}

  \end{tikzpicture}
tkz-tab, style h forbidden zone