Category ArchiveInformatique

Créer un GIF avec \(\LaTeX\), Python et ImageMagick

Le résultat à obtenir

Dans un article précédent, je vous expliquais comment créer un GIF avec \(\LaTeX\), et avec une manipulation Gimp. Trouvant la dernière étape un peu… (comment dire pour rester poli ?) … pénible, je vous propose un combi \(\LaTeX\) + Python + ImageMagick.

VerbTex, ou comment faire du \(\LaTeX\) sous Android

Un des abonné m’a demandé aujourd’hui s’il était possible de faire du \(\LaTeX\) sous Android. Faisant du \(\LaTeX\) uniquement sur mon PC Windows, je ne m’était jamais posé la question… Mais il y a une solution, et elle est pas dégueu du tout ! Elle s’appelle VerbTeX…

Une enveloppe astroïdale obtenue en Python avec Turtle

L’enveloppe de cette famille de cercles est une astroïde

L’objectif de cet article est de construire cette suite de cercles rouges à l’aide de Python et de son module Turtle.

Approche mathématique

Avant toute chose, il est nécessaire de comprendre comment sont obtenus tous les cercles rouges.

Si on regarde et analyse bien la figure, les tracés suggèrent que pour un angle \(\alpha\) donné, exprimé en degré, on trace un segment d’origine O (si on se place dans un repère, c’est l’origine) et d’angle \(\alpha\), qui coupe l’un des côté du carré inscrit dans le cercle principal.

Prenons le côté en haut à droite (donc dans le cadran x > 0 et y > 0 si on se ramène à un repère). Il a pour équation \(y=-x+R\) si on considère que le cercle principal a pour rayon \(R\). Notons I le point d’intersection de la droite d’équation \(y = x\tan(\alpha)\), qui forme un angle de \(\alpha\) avec l’horizontale, avec le segment d’équation \(y=-x+R\). Alors, ses coordonnées vérifient:$$\begin{cases}y_I=-x_I+R\\y_I=x_I\tan(\alpha)\end{cases} $$Donc:$$x_I\tan(\alpha)=-x_I+R$$d’où:$$x_I=\frac{R}{\tan(\alpha)+R}.$$

Une fois les coordonnées de I connues, on calcule la longueur IM, où M est le point du cercle principal de coordonnées \(R\cos\alpha;R\sin\alpha)\), à l’aide de la formule vue en classe de Seconde:$$IM = \sqrt{(x_I-x_M)^2 + (y_I-y_M)^2}.$$On peut alors tracer le cercle de centre I et de rayon IM : c’est un des cercles rouges.

Avec Turtle

Il faut faire appel à quelques méthodes du module Turtle; inutile donc d’écrire:

from turtle import *

En effet, le mieux est de n’importer que les méthodes qui nous intéressent. Il en est de même pour le module math, où seules les méthodes sin, cos, tan et pi sont nécessaires (pour la racine carrée, on élève à la puissance 0.5).

On commence donc par tracer un cercle (avec Turtle, c’est un peu… comment dire poliment ? … je trouve pas ! Désolé !) en se déplaçant d’abord en bas de la fenêtre puis en traçant le cercle. Ensuite, on en profite pour tracer le carré inscrit dans le cercle (avec “goto”, comme le stylo est déjà baissé, ça trace les segments).

Maintenant, on fait une boucle itérative sur l’angle variant de 0 à 359. Si vous observez bien, je ne me suis pas embêté avec les cas où l’angle est égal à 90°, 180° et 270° car ça n’a que peu d’importance au final du point de vue visuel). En fait 180° ne pose pas de problème pour la tangente, mais peu importe… Ouais, je suis une grosse feignasse !…

Remarquez aussi que j’ai pris \(R=300\) car la fenêtre par défaut fait 800×800. “300” me semblait un bon compromis. Voilà donc le programme:

Alors là, les plus observateurs.trices. d’entre vous me diront : “t’es qu’un charlatant ! Le GIF n’est pas exactement ce que fait ce programme…” et c’est vrai ! C’est en fait un ancien GIF qui traînait sur mon disque dur… quand je vous disais que j’étais une grosse feignasse !

En attendant, si vous souhaitez télécharger le programme directement plutôt que de vous embêter à le réécrire à la main, c’est sur cette page.

Saut, parabole et physique

Cet article est principalement destiné aux élèves de 1ère Math Spécialité.

Parlons dans cet article de mathématiques, et plus précisément du second degré. Alors, vous allez me dire : “oui, mais bon ! C’est super simple, il suffit de connaître les formules et on sait tout faire.” Ce n’est pas totalement faux… mais ce n’est pas suffisant ! Il y a beaucoup de situations qui font intervenir le second degré, notamment ce problème…

Ajuster en largeur un listing sous \(\LaTeX\)

Cet article est inspiré du post du forum mathematex dont l’adresse est : http://forum.mathematex.net/latex-f6/cadre-pour-algorithme-python-avec-listings-t17255.html

L’idée est ici de créer un environnement “python” (par exemple) qui permet d’écrire un code Python et de le présenter encadré de sorte que le cadre soit ajusté en largeur (ce qui n’est pas le cas par défaut car le cadre tient sur toute la largeur).

Les classes en Python

Dans le programme de Terminale NSI, la notion de classes apparaît. En 1ère, on ne doit pas en parler car la Première est une classe d’initiation avancée. Comment se présente une classe ? Et en quoi peut-elle aider ? Voici quelques éléments de réponse.

Etude d’une suite définie par \(u_{n+1} = f(u_n)\)

C’est un classique dans l’étude des suites : on considère une fonction f et on définit une suite par son premier terme \(u_0\) et par la relation \(u_{n+1}=f(u_n)\) pour tout entier naturel n.

Voyons cela avec l’exemple où \(f(x)=\frac{ax+b}{x^2-3x+2}\)…

Installer un serveur SQL sous Windows 10

Avec le programme 2020 de NSI, les enseignant.e.s et élèves trouveront plutôt appréciable le fait d’avoir un serveur SQL sur son ordinateur personnel afin de tester différentes actions.

Introduction aux matrices de rotation

Considérons la configuration suivante :

Dans le repère orthonormé d’origine O, A(x;y) est un point quelconque et A'(x’;y’) est son image par la rotation de centre O et d’angle \(\theta\). On cherche à exprimer x’ et y’ en fonction de x, y et \(\theta\)…

Reconnaître une chaîne de caractères palindrome avec Python

Dans cet article, nous allons manipuler les chaînes de caractères ainsi que les dictionnaires en Python.