Comment faire des courbes qui «tiennent la route» avec LaTeX ? Pour tracer une fonction dont l’expression est connue, TiKz avec la commande \draw plot (\x,{f(\x)}) ; remplit très bien l’affaire.

Mais pour des fonctions qu’on interpole sur un nombre fini de points, le résultat n’est pas toujours celui escompté. En effet, l’interpolation est un sujet assez vaste et il existe de nombreuses façons de procéder. D’autant plus qu’on souhaite souvent contrôler la dérivée de la fonction obtenue, au moins un en un certain nombre de points.

On peut certes toujours recourir à l’interpolation de Hermite, mais il s’agit d’une technique pénible à mettre en œuvre en TeX, et il est plus simple de recourir à un autre algorithme qui existe déjà : hobby.

L’algorithme de Hobby a été mis en œuvre au sein de TiKz : hobby et nous allons mettre en exergue son utilisation la plus «basique», mais la plus «pertinente» dans le cadre de la production d’exercices pour des lycéens.

:::latex
\begin{center}
  \begin{tikzpicture}[scale=0.8,
    use Hobby shortcut,
    tangent/.style={%
      in angle={(180+#1)},
      Hobby finish,
      designated Hobby path=next,
      out angle=#1,
    },
  ]
    \draw [dotted, help lines, line width=0.6pt] (-6,-6) grid (6,6) ;
    \draw [dotted, help lines, step=0.5] (-6,-6) grid (6,6) ;
    \draw [very thick, ->] (0,-6) -- (0,6) ;
    \draw [very thick, ->] (-6,0) -- (6,0) ;
    \draw [thick] (-6,-4) .. ([tangent=0]-4,-5) .. (-2.5,-1.5) .. (-2,0) ..
    ([tangent=0]-1,1) .. ([tangent=0]0,0) .. (1,1) .. (4,2) ;
    \foreach \x/\y in {-6/-4,-4/-5,-2/0,-1/1,0/0,1/1,4/2}
    { \draw (\x,\y) node [circle,fill,inner sep=1pt] {} ; }
    \draw (4,2) node [right] {$\mathscr{C}_f$} ;
    \draw[thick] (-6,-5) node[circle,fill,inner sep=1pt] {} -- (4,5)
      node[circle,fill,inner sep=1pt] {} ;
    \draw (4,5) node[right] {$\mathscr{C}_g$} ;
  \end{tikzpicture}
\end{center}

Tout est là, de la création de la grille, des axes au choix des tangentes de la courbe.