Sous Jupyter, par exemple, comment afficher en LaTeX des fonctions Python? Il existe un module pour faire cela…
LaTeX, Python, Jupyter: installation du module latexify
pip install latexify-py
ou (selon votre distribution)
conda install latexify-py
Vous trouverez plus d’informations sur le module latexify ici : https://pypi.org/project/latexify-py/
Enfin… c’est un bien grand mot car toutes les docs rédigées en anglais sont totalement merdiques et non exhaustives! Donc là, en ne mettant qu’un exemple, ça signifie : « démerde-toi bibi ! ». En fait, il faut aller sur le github pour avoir bien plus d’informations!
LaTeX, Python, Jupyter: quelques exemples
Exemple 1: fonction définie par morceaux
Rien ne vaut le code direct:
import latexify @latexify.function def f(x): if x <= -3: return 3*x+1 elif -3 < x <= 3: return 2*x - 2 else: return x+1
Personnellement, j’utilise Spyder, qui s’appuie sur Jupyter. Voici une capture d’écran:
Il suffit de taper le nom de la fonction Python pour qu’elle affiche au format \(\LaTeX\) notre fonction mathématique. C’est plutôt ludique pour enseigner les tests conditionnels Python et les fonctions définies par morceaux en classe de Seconde par exemple.
Si vous souhaitez afficher directement le code \(\LaTeX\) pour le mettre dans un document TEX, vous pouvez aussi faire ceci:
In [5]: print(f)
Out [5]: f(x) = \left\{ \begin{array}{ll} 3 x + 1, & \mathrm{if} \ x \le -3 \\ 2 x - 2, & \mathrm{if} \ -3 < x \le 3 \\ x + 1, & \mathrm{otherwise} \end{array} \right.
Exemple 2: la factorielle
import latexify @latexify.function def factorial(n: int) -> int: if n == 0: return 1 else: return n * factorial(n-1)
In [3]: print(factorial)
Out [3]: \mathrm{factorial}(n) = \left\{ \begin{array}{ll} 1, & \mathrm{if} \ n = 0 \\ n \cdot \mathopen{}\left( n - 1 \mathclose{}\right) !, & \mathrm{otherwise} \end{array} \right.
Exemple 3: une fonction Python retournant une expression mathématique
Allez! On va s’amuser un peu en mélangeant les tests conditionnels, les lettres grecques et les expressions littérales.
import latexify from math import sqrt @latexify.expression(use_math_symbols=True) def solve(a, b, c): Delta = b**2-4*a*c if Delta < 0: return None elif Delta == 0: return -b/(2*a) else: return (-b - sqrt(Delta)) / (2 * a) , (-b + sqrt(Delta)) / (2 * a)
In [17]: print(solve)
Out [17]: \begin{array}{l} \Delta = b^{2} - 4 a c \\ \left\{ \begin{array}{ll} \mathrm{None}, & \mathrm{if} \ \Delta < 0 \\ \frac{-b}{2 a}, & \mathrm{if} \ \Delta = 0 \\ \mathopen{}\left( \frac{-b - \sqrt{ \Delta }}{2 a}, \frac{-b + \sqrt{ \Delta }}{2 a} \mathclose{}\right), & \mathrm{otherwise} \end{array} \right. \end{array}
On peut ainsi s’amuser à faire beaucoup de choses… Avez-vous des idées pour compléter ce post ? Lâchez-vous en commentaire et j’ajouterai les suggestions qui me paraissent intéressantes et différentes de celles déjà proposées.