1.  Tableaux de signes et de variations

On peut créer des tableaux de variations avec l’environnement array :

\[\begin{array}{|c|ccccc|}
\hline
x     & -10 &     & 0 &     & +10 \\ \hline
f'(x) &     &  +  & 0 &  -  &     \\ \hline
      &     &     & 3 &     &     \\ 
f(x)  &  &\nearrow & &\searrow &  \\
      & -1  &     &   &     & -2  \\ \hline
\end{array}\]

Pour des tableaux plus complexes, on pourra charger le module tabvar disponible sur
http://www.tug.org/tex-archive/macros/latex/contrib/tabvar/doc/

Attention : remarquez bien que les définitions des colonnes utilisent la lettre C majuscule.

\usepackage{tabvar}
\[\begin{tabvar}{|C|CCCCC|} \hline
x    & -\infty & & 0 & & +\infty \\ \hline
f'(x)&         &+&   &-&         \\ \hline
\niveau{1}{2}f(x) %
     &-1   &\croit& 0&\decroit&-1\\ \hline
\end{tabvar}\]

\usepackage{tabvar}
\[\begin{tabvar}{|C|CCCCCCC|} \hline
x &-\infty & &-1& &   0  & &+\infty\\ \hline
f'(x)&     &-&  &-&\dbarre&-&0     \\ \hline
\niveau{3}{3}f(x) &+\infty  &\decroit 
   &0                       &\decroit
   &\discont{-\infty}{<}{1} &\croit &+\infty
\\ \hline
\end{tabvar}\]

Remarques :

  • Pour que l’élément $f(x)$ soit positionné sur la deuxième ligne (centré verticalement), on va remplacer
\niveau{3}{3}f(x) &+\infty     &\decroit

par

\niveau{2}{3}f(x) &\niveau{3}{3}+\infty &\decroit
  • Comme vous l’avez constaté, il y a une erreur dans ce tableau : pour que la courbe devienne par décroissante de $+\infty$ à 1 sur l’intervalle $]0,+\infty[$, on va remplacer
&\discont{-\infty}{<}{1} &\croit &+\infty

par

&\discont[1]{-\infty}{<}{+\infty} &\decroit &1

2.  Principes de base

Ajoutons \usepackage{pstricks-add} au préambule afin de charger le module PSTricks (cf http://cgm.cs.mcgill.ca/~msuder/latex/pstricks.pdf ) pour (entre autres!) tracer des courbes avec la commande \psplot. La syntaxe en est la suivante :
\psplot[par]{xmin}\{xmax}{fonction}par sont les paramètres, xmin et xmax sont les bornes du domaine de définition et fonction est la fonction de la variable x

  • Par défaut l’expression de la fonction est donnée en RPN (la Reverse Polish Notation chère à nos calculatrices HP…).
  • En activant l’option algebraic=true, l’expression pourra être donné de façon plus usuelle.

Dans l’exemple suivant1, on va tracer la fonction $x \mapsto x^2+x$ sur l’intervalle [−1;1]

\usepackage{pstricks-add}
\psset{algebraic=true}
\pspicture(-2,-0.5)(2,2)

\psline{<->}(-2,0)(2,0)
\psline{->}(0,-0.5)(0,2)
\psplot{-1.5}{1}{x*x+x}

\endpspicture

 

1 sans l’option algebraic=true, on aurait saisi psplot{−1}{1}{x x mul x add} (↑)

3.  Des exmples de tracés de courbes

Maintenant que nous avons compris le principe, essayons nous à des choses plus recherchées.

Voici une liste d’opérateurs disponibles pour l’option algebraic :

NomSyntaxeSignification
^x^yxy
sin, cos, tan, acos, asinsin(x)sin(x)
sh, ch, th, Argsh, Argch, Argthsh(x)sh(x)
log, lnln(x)ln(x)
sqrtsqrt(x)$\sqrt{x}$
absabs(x)|x|
factfact(n)n!

la commande psaxes[par]{flèches}(x0,y0)(xmin,ymin)(xmax,ymax) place un repère dans un rectangle délimité par (xmin,ymin) et (xmax,ymax) et dont les axes se coupent en (x0,y0).

La fonction $x \mapsto (1-x)(x+3)$ sur l’intervalle [−3;1.2]

\usepackage{pstricks-add}
\pspicture(-3.5,-1)(2.5,4.5)
\psset{algebraic=true}

\psaxes{->}(0,0)(-3.5,-1)(2.5,4.5)
\psplot{-3}{1.2}{ (1-x)*(x+3) }
\psdots(-2,3) \uput[135](-2,3){$A$}
\psline[linestyle=dashed](-2,0)(-2,3)(0,3)

\endpspicture

La commande \psgrid[par](xmin,ymin)(xmax,ymax) crée un quadrillage dans un rectangle délimité par (xmin,ymin) et (xmax,ymax).

La fonction $x \mapsto x^3-x+2$ sur l’intervalle [−1.6;1.6]

\usepackage{pstricks-add}
\pspicture(-2.5,-1.5)(2.5,5.5)
\psset{algebraic=true}

\psgrid(-2,-1)(2,5)

% Tracer la courbe
\psplot{-1.65}{1.65}{ x*x*x-x+2 }

% Placer les 17 points de [-1.6,1.6]
\psplot[plotpoints=17,plotstyle=dots,dotstyle=+]
{-1.6}{1.6}{ x*x*x-x+2 }

4.  Intersections de courbes et calcul d’image

La commande \pstInterFF[par]{f}{g}{x0}{M} du module pst-eucl permet de positionner une intersection entre les fonctions f et g en un point M dont l’abscisse est proche1 de x0. Pour que cette commande fonctionne, il est cependant nécessaire d’exprimer les fonctions en RPN, en voici une liste des opérateurs mathématiques disponibles :

NomSyntaxeSignification NomSyntaxeSignification
addx y add$x+y$ subx y sub$x-y$
mulx y mul$x \times y$ divx y div$\frac{x}{y}$
expx y exp$x^y$ sqrtx sqrt$\sqrt{n}$
negx neg$-x$ absx abs$|x|$
modx y modreste (div. eucl.) ceilingx ceilingplus petit entier sup. ou égal
floorx floorplus grand entier inf. ou égal roundx roundentier le plus proche
sinx sin$\sin(x)$ cosx cos$\cos(x)$
atanx atan$\arctan(x)$    
logx Log$\log(x)$ lnx ln$\ln(x)$
 

1 La recherche de l’intersection se fait en utilisant l’algorithme de Newton, elle pourra donc ne pas aboutir dans certains cas particuliers. (↑)

\usepackage{pstricks-add}
\usepackage{pst-eucl}
\pspicture*(-2.5,-0.5)(3,4)
\psaxes[labels=none]{->}(0,0)(-3,-1)(3,4)

% f(x)=(x^3)/3+x+2/3
\def\f{x 3 exp 3 div x sub 2 3 div add}
\psplot{-2.5}{2.5}{\f}

% g(x)=x^2
\def\g{x 2 exp}
\psplot{-2.5}{2.5}{\g}

\pstInterFF[PosAngle=90]{\f}{\g}{1}{P}
\pstInterFF[PosAngle=45]{\f}{\g}{-1}{M_0}

\endpspicture

L’extension pst-func propose la commande \psPrintValue{x}{fonction} permet d’afficher la valeur prise par la fonction (exprimée en RPN) en x :
voir http://www.ctan.org/get/graphics/pstricks/contrib/pst-func/pst-func-doc.pdf

\usepackage{pstricks-add}
\usepackage{pst-func}
\psset{yunit=0.66}
\begin{pspicture}(-4,-2)(4,7)
\psaxes{->}(0,0)(-3,-1)(3,7)[$x$,-90][$g(x)$,180] 
\psplot{-2.5}{2.5}{x 2 exp}
\psline[linestyle=dashed](-1.5,0)(-1.5,7)
\end{pspicture}

Graphiquement, on constate que 
$g(-\frac{3}{2})\simeq$ \psPrintValue{-1.5 2 exp}


Plus complexe mais avec pas mal de choses intéressantes :-) :

\usepackage{pstricks-add}
\usepackage{pst-func}
%Définition de f:x->x²/6
\newcommand{\f}[1]{#1 2 exp 6 div}

\begin{pspicture}(-5,-1)(8,7)
 \psaxes{->}(0,0)(-5,-1)(8,7)[$x$,-90][$y$,180] 

 % On trace la courbe sur [-5,7]
 \psplot[linecolor=red]{-5}{7}{\f{x}}

 % Une boucle pour afficher les 6 valeurs
 \multido{\i=-4+2}{6}{
    \psdots(!\i \space \f{\i})	
    \uput[90](!\i \space \f{\i})%
     {\psPrintValue{\f{\i} 100 mul round 100 div}}
 }
\end{pspicture}

Une explication sur la ligne :

 \uput[90](!\i \space \f{\i}){\psPrintValue{\f{\i} 100 mul round 100 div}}

Elle permet de placer au dessus du point de coordonnées (\i, f(\i)), l’expression calculée par \psPrintValue : à chaque itération de multido, elle calcule f(\i) puis on prend l’arrondi de ce nombre multiplié par 100 qu’on divise ensuite par 100 afin d’obtenir une appriximation à deux chiffres après la virgule : $\dfrac{\mathrm{Arrondi}(100f(x))}{100}$.

5.  Tangentes en un point et fonctions dérivées

Pstricks-add apporte des fonctionnalités pour l’étude des courbes. Par exemple \psplotTangent{x}{long}{fonc} qui permet par défaut de tracer une tangente de longueur long à la courbe représentative de la fonction fonc au point d’abscisse x et ce, en calculant le taux d’accroissement sur un intervalle de rayon 0.00005 autour du point spécifié. En cas de problème, en spécifiant l’option Derive , on peut donner explicitement l’expression de la fonction dérivée qui sera alors utilisée pour calculer exactement la valeur de la dérivée :

\usepackage{pstricks-add}
\pspicture(-3,-2)(3,2)
\psset{algebraic=true,yunit=0.5cm}

\psaxes{->}(0,0)(-3,-3)(3,3)

\def\f{2-x^2} 
\psplot[linecolor=blue]{-2}{2}{\f}
\psplotTangent[arrows=<->]{1}{1}{\f}
\psplotTangent[linecolor=red,arrows=<->,%
               Derive={-2*x}]{-1.5}{1}{\f}

\endpspicture

La fonction Derive (toujours incluse dans PSTricks-add) permet de tracer les courbes représentatives des dérivées successives d’une fonction. Attention elle doit être utilisée avec l’option algebraic :

\usepackage{pstricks-add}
\pspicture(-3,-3.5)(3,3.5)
\psset{algebraic=true,yunit=0.5cm}

\psaxes{->}(0,0)(-3,-7)(3,7)

% définition de la fonction 
\def\f{2-x^2} 

% Tracer la courbe d'équation y=f(x)
\psplot[linecolor=blue]{-3}{3}{\f} 

% Tracer la courbe d'équation y=f'(x)
\psplot[linecolor=red]{-3}{3}{Derive(1,\f)} 

% Tracer la courbe d'équation y=f''(x)
\psplot[linecolor=pink]{-3}{3}{Derive(2,\f)}

\endpspicture

6.  Surfaces délimitées par des courbes et sommes de Riemann

Dans le cadre d’un travail sur les intégrales, il peut être intéressant de faire apparaître une surface délimitée par des courbes et/ou des droites. Avec \pscustom l’idée consiste à “faire le tour” de la zone à mettre en valeur.

\usepackage{pstricks-add}
\psset{algebraic=true,yunit=2.5cm}
\pspicture(-2.5,-0.3)(4.5,1.3)

\def\f{1/(e^((x-1)^2))}
\psplot{-2.5}{4.5}{\f}

\pscustom{
\psplot{1}{2}{\f} \gsave
\psline(2,0)(1,0)
\fill[fillstyle=vlines] \grestore }

\psaxes[labelsep=-17pt,yAxis=false]%
            {->}(0,0)(-2.5,0)(4.5,0)
\endpspicture

Dans ce second exemple, observez l’utilisation de \psPi utile ici car l’option algebraic=true fait travailler PSTricks en radians :

\usepackage{pstricks-add}
\pspicture*(-1,-1.7)(6,2.5)
\psset{yunit=2cm,algebraic=true}

\def\f{1/(x^2+1)}
\def\g{cos(2*\psPi*x)/(x^2+1)}

\pscustom{
\psplot{0}{5.5}{\f} \gsave
\psplot{5.5}{0}{\g}
\fill[fillstyle=solid, fillcolor=lightgray]
\grestore }
\psplot{0}{5.5}{\g}

\psaxes[Dy=0.2,labels=y,%
ticks=y,tickstyle=bottom](0,0)(-1,-0.9)(6,1.5)
\endpspicture

Remarque :

  • la ligne
 \psplot{0}{5.5}{\g} 

serait avantageusement remplacée par la suivante afin de lisser la courbe de la sinusoide :

 \psplot[plotpoints=200]{0}{5.5}{\g}

La documentation de pstricks-add (pages 107–109) est riche en exemples concernant les représentations des sommes de Riemann. En voici un exemple, la fonction \psStep[options](xmin,xmax){nbRect}{fonc} trace nbRect rectangles entre xmin et xmax pour la fonction fonc :

\usepackage{pstricks-add}
\psset{xunit=4cm, yunit=3cm,plotpoints=100}
\begin{pspicture}(-0.5,-1.5)(5.5,1.5)
\psset{algebraic=true}

\def\f{cos(2*\psPi*x)/(x^2+1)}

\psaxes{->}(0,0)(0,-1.1)(4,1.1)

\psStep[StepType=infimum,fillstyle=solid,
        fillcolor=lightgray](0,2){40}{\f}
\psStep[StepType=supremum,linecolor=red,
            linewidth=0.5pt](0,2){40}{\f}

\psplot{0}{2.5}{\f}

\end{pspicture}

7.  Courbes paramétrées

Pour les courbes paramétrées, on utilise la commande

\parametricplot[par]{tmin}{tmax}{fonction}par sont les paramètres, tmin et tmax sont bornes du domaine de définition et fonction est la fonction paramétrée de la variable t exprimée soit en RPN grâce à une expression laissant deux éléments dans la pile, soit avec l’option algebraic en spécifiant le séparateur |.

pour afficher la fonction $t \mapsto (sin(t);cos(3t))$ sur l’intervalle [0;2$\pi$], on tapera donc :

\usepackage{pstricks-add}
\pspicture(-1.5,-1.5)(1.5,1.5)
\psset{algebraic=true}

\psaxes[labels=none,ticksize=0pt]
{->}(0,0)(-1.2,-1.2)(1.4,1.4)

\parametricplot[linewidth=1.5pt]
      {0}{6.28}{sin(t)|cos(3*t)}

\endpspicture

Remarque :

  • En RPN on aurait plutôt saisi la ligne suiavnte (remarquez que en RPN, l’unité d’angle est le degré alors qu’avec algebraic, on travaille en radians) :
 \parametricplot[linewidth=1.5pt]{0}{360}{t sin t 3 mul cos}

8.  Repères trigonométriques, papiers milimétré, semi-logarithmique et logarithmique

Pour bien comprendre le fonctionnement de ce qui suit, voir page 81 dans :
http://www.ctan.org/get/graphics/pstricks/contrib/pstricks-add/pstricks-add-doc.pdf

\usepackage{pstricks-add}
\pspicture(-4,-1.5)(4,1.5)

\psaxes[trigLabels=true,trigLabelBase=3,%
        xunit=\pstRadUnit]%
        {->}(0,0)(-3.5,-1.5)(3.5,1.5)

\psplot{-3.5}{3.5}{x RadtoDeg sin}

\endpspicture

La commande \dataplot permet de tracer des courbes à partir de listes de points (générées par exemple par Mathematica) sur un papier milimétré :

\usepackage{pstricks-add}
\savedata{\mydata}[{{0,0},{1,2},{2,2.82842},
{3,3.4641},{4,4},{5,4.47214}} ]

\pspicture(-1,-0.5)(5,5.5)
\psaxes [xticksize=0 5, yticksize=0 5,
  subticksize=1, tickwidth=1pt, 
  subtickwidth=0.5pt,subticks=10](5,5)
\dataplot[showpoints=true]{\mydata}
\endpspicture

Sur un papier semi-logarithmique et logarithmique :

\usepackage{pstricks-add}
\savedata{\mydata}[{{137,0.067},{507,0.129},
{1004,0.148},{4998,0.263},{15055,0.409},
{34644,0.594},{50455,1.589},{55355,10.03},
{59777,21.55}} ]


\psset{xunit=1cm, yunit=.2cm}
\begin{pspicture}(-1,0)(5,25)
\psaxes [xlogBase=10, logLines=x, 
  xticksize=0 25, yticksize=0 5,
  Dy=5, subticksize=1, tickwidth=1pt, 
  subtickwidth=0.5pt,subticks=10](0,0)(5,25)
\pstScalePoints(1,1){log}{}
\dataplot[showpoints=true]{\mydata}
\end{pspicture}













\psset{xunit=1cm, yunit=1.2cm}
\begin{pspicture}(-1,-2.5)(5,3)
\psaxes [xylogBase=10, logLines=all,
  xticksize=0 4, yticksize=0 5, 
  tickwidth=1pt, subtickwidth=0.5pt,
  subticks=10](0,-2)(5,2)
\pstScalePoints(1,1){log}{log}
\dataplot[showpoints=true]{\mydata}
\end{pspicture}