J'ai écrit une petite macro qui me permet de dessiner les deux axes de coordonnées sur des intervalles [xmin,xmax] et [ymin,ymax] (les 4 paramètres) et de les graduer automatiquement, sauf l'origine.
Après l'appel de cette macro, il me suffit de dessiner le graphique de f(x).
Voir ECM ci-dessous.
Ma question : dans l'instruction
\foreach \x in {\xmin,...,\xmax}
c'est tikz qui "décide" du nombre de graduations et j'aimerais en mettre un peu plus, si c'est possible.Je sais qu'en mettant un troisième nombre dans la liste, la différence entre les deux premiers fait office d'incrément (par exemple \x in {1,1.5,...,5}) pour un incrément de 0.5, ce qui correspondrait à \x in {1,1.5,2,2.5,3,3.5,4,4.5,5}
Si je veux découper l'intervalle [xmin,xmax] en 5 sous-intervalles, il me suffirait, en théorie, de prendre comme second nombre de la liste
\xmin+(\xmax-\xmin)/5
.MAIS çà ne marche pas ; j'ai l'impression que l'expression n'est pas calculée...
Merci d'avance ! et belle journée
Code : Tout sélectionner
% tikz-axes
\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{ifthen}
\begin{document}
% macro \axes{xmin}{xmax}{ymin}{ymax}
\newcommand\axes[4]{
\pgfmathsetmacro\xmin{#1}
\pgfmathsetmacro\xmax{#2}
\pgfmathsetmacro\ymin{#3}
\pgfmathsetmacro\ymax{#4}
\draw[-] (\xmin,0) -- (\xmax,0) node[above]{$x$};
\draw[-] (0,\ymin) -- (0,\ymax) node[right]{$y$};
\foreach \x in {\xmin,...,\xmax}
\ifthenelse{0=\x}{;}{\draw[shift={(\x,0)}] (0pt,1pt) -- (0pt,-1pt) node[below]{\scriptsize $\x$};};
\foreach \y in {\ymin,...,\ymax}
\ifthenelse{0=\y}{;}{\draw[shift={(0,\y)}] (1pt,0pt) -- (-1pt,0pt) node[left] {\scriptsize $\y$};};
}
% fin macro \axes
% appel macro \axes pour graphique f(x)
\begin{tikzpicture}[scale=2]
\axes{-1}{2}{-2}{3}
\draw[line width=0.8pt,magenta,domain=\xmin:\xmax-0.2] plot (\x,{\x^3-\x-1});
\end{tikzpicture}
\end{document}
[\code]