Tracer fonction discontinue avec tikz

adrien2019
Modifié (April 2022) dans LaTeX
Bonjour à tous,

Je cherche à tracer en tex le graphe sur $[0,1]$ de la fonction $x \mapsto x - \frac{99}{100} \lfloor 10 x \rfloor + \frac{9}{100} \lfloor 100 x \rfloor$ (cette fonction inverse les deux premières décimales après la virgule de $x$). J'ai tracé cette figure avec Wolfram et j'ai mis l'allure en image jointe. Je voudrais reproduire la même en utilisant tikz, mais pour le moment les points sont automatiquement reliés. La fonction présentant une centaine de discontinuités, j'aimerais trouver une solution autre que de définir la fonction sur chacun des intervalles (un par un). Quelqu'un sait-il comment faire? J'aimerais au passage positionner la figure entre deux zones de texte, ce qui n'est pas le cas pour le moment... Voici mon code (j'ai essayé de libérer au maximum le préambule, mais il reste peut-être des choses inutiles dedans, pardonnez-moi d'avance):

\documentclass[a4paper,8pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{caption}
\usepackage{graphicx}
\usepackage{tikz}
\usepackage{amsthm}
\usepackage{mathtools}
\usepackage{nameref}
\usepackage{hyperref}
\usepackage{xcolor}
\usepackage{tikz}
\usetikzlibrary{decorations.pathreplacing, calligraphy, tikzmark, matrix, fit, positioning,calc}
\usepackage[left=2.8cm,right=2.9cm,margin=2cm]{geometry}
\setlength{\parindent}{0pt}
\begin{document}
Blablabla...

\begin{figure}\centering
\begin{tikzpicture}[scale=10]
% le cadre
\draw[step=1cm, gray, very thin] (-0.01, -0.01)  (1.06, 1.06);
% axe des y
\draw[very thick, ->] (0,-0.01) -- (0,1.06);
\foreach \y in {0.2,0.4,0.6,0.8,1}
   \draw (0.3pt, \y) -- (-0.3pt, \y) node[left]{$\y$};
\foreach \y in {0.05,0.1,0.15,0.25,0.3,0.35,0.45,0.5,0.55,0.65,0.7,0.75,0.85,0.9,0.95,1.05}
   \draw (0.2pt, \y) -- (-0.2pt, \y);
% axe des x
\draw[very thick, ->] (-0.01,0) -- (1.06,0);
\foreach \x in {0,0.2,0.4,0.6,0.8,1}
   \draw (\x, 0.3pt) -- (\x, -0.3pt) node[below]{$\x$};
\foreach \x in {0.05,0.1,0.15,0.25,0.3,0.35,0.45,0.5,0.55,0.65,0.7,0.75,0.85,0.9,0.95,1.05}
   \draw (\x, 0.2pt) -- (\x, -0.2pt);
% la courbe               
\draw[blue, very thick] [domain=0:1,samples=9000] plot (\x,{\x - 99/100*floor(10*\x) + 9/100*floor(100*\x)});

\end{tikzpicture}
\captionsetup{labelformat=empty}
\caption{Graphe de $f$ sur $[0,1]$ en base $10$}
\end{figure}

Re-blablabla...
\end{document}
Je vous remercie d'avance pour votre aide !
[Je me suis permis d'ajouter des commentaires dans ton code. :) AD]


Réponses

  • Bonsoir,

    Peut-être l'exportation de Géogébra avec $y=x-0.99*floor(10*x)+0.09*floor(100*x)$.

    Cordialement,
    Rescassol

  • Math Coss
    Modifié (April 2022)
    Une façon de faire.
    \begin{tikzpicture}[scale=10]
    % le cadre
    \draw[step=1cm, gray, very thin] (-0.01, -0.01)  (1.06, 1.06);
    % axe des y
    \draw[very thick, ->] (0,-0.01) -- (0,1.06);
    \foreach \y in {0.2,0.4,0.6,0.8,1}
       \draw (0.3pt, \y) -- (-0.3pt, \y) node[left]{$\y$};
    \foreach \y in {0.05,0.1,0.15,0.25,0.3,0.35,0.45,0.5,0.55,0.65,0.7,0.75,0.85,0.9,0.95,1.05}
       \draw (0.2pt, \y) -- (-0.2pt, \y);
    % axe des x
    \draw[very thick, ->] (-0.01,0) -- (1.06,0);
    \foreach \x in {0,0.2,0.4,0.6,0.8,1}
       \draw (\x, 0.3pt) -- (\x, -0.3pt) node[below]{$\x$};
    \foreach \x in {0.05,0.1,0.15,0.25,0.3,0.35,0.45,0.5,0.55,0.65,0.7,0.75,0.85,0.9,0.95,1.05}
       \draw (\x, 0.2pt) -- (\x, -0.2pt);
    % la courbe               
    %\draw[blue, very thick] [domain=0:1,samples=9000] plot (\x,{\x - 99/100*floor(10*\x) + 9/100*floor(100*\x)});
     \foreach \i in {0,...,9} {
       \foreach \j in {0,...,9} {
         \draw[blue, very thick]  (\i/10+\j/100,\i/100+\j/10) --++ (1/100,1/100);
       }
     }
    \end{tikzpicture}
    
  • @Math Coss  ça marche bien, merci!
    Savez-vous comment faire pour intégrer la figure dans un document de façon centrée et exactement à l'endroit désiré (l'option [H] de "\begin{figure}" ne marche pas...)?
  • Pour centrer il suffit de faire
    \begin{figure]}[options]
    \centering
    ...
    \end{figure}

    Pour le placement, l'environnement figure est un flottant, LaTeX le place là où il pense que c'est le mieux pour la mise en page selon des règles précises. Si tu veux placer tes figures exactement là où tu veux (ce qui en fait n'est pas une bonne idée), il faut se passer de l'environnement figure.
  • Un crochet fermant de trop dans le code de Héhéhé.
    Une façon de renforcer l'expression de ses désirs consiste à mettre un point d'exclamation dans les options de figure (j'oublie toujours si c'est [!h] ou [h!]). Ce n'est pas péremptoire pour autant.
Connectez-vous ou Inscrivez-vous pour répondre.