Développées, enveloppes et courbes parallèles par Juergen Gilg, en utilisant :
xintexpr : https://ctan.org/pkg/xint
pst-plot : https://ctan.org/pkg/pst-plot
animate : https://ctan.org/pkg/animate
Les fichiers de Juergen Gilg sont ici :
Quelques animations et images extraites du document :
Développée d'une ellipse :
Néphroïde :
Cardioïde :
Enveloppe :
Courbes parallèles :
lundi 29 avril 2019
vendredi 26 avril 2019
Inéquations avec xintexpr et PSTricks
Une idée originale de Juergen Gilg : des illustrations d'inéquations, se limitant aux couples de points $(x,y)\in \mathbb{Z}^2$, réalisées avec xintexpr de Jean-François Burnol :
et PSTricks de Timothy Van Zandt :
Les fichiers de Jürgen Gilg sont ici :
Marquer les points $(x,y)\in \mathbb{Z}^2$ dans les intervalles $x\in [-5;5]$ et $y\in[-5;5]$ pour:
$y < x^2$ (rouge) ; $y = x^2$ (bleu) ; $y >x^2 $ (vert)
Marquer les points $(x,y)\in \mathbb{Z}^2$ dans les intervalles $x\in [-5;5]$ et $y\in[0;10]$ vérifiant la relation :
\begin{equation*}
y^2+2 < y\cdot x^2
\end{equation*}
La méthode de G.Galperin pour calculer π
G. Galperin considère 2 billes ponctuelles de masses $m$ et $M$; $M\geqslant m$.
Elles sont placées sur un axe $Ox$, un mur vertical est en $O$ . Les billes sont disposées initialement ($t=0$), à des distances respectives $x_1(0)$ et $x_2(0)$ avec $x_1(0)>x_2(0)$ du mur.
La bille de masse $M$ est la plus éloignée. On lance la bille (1) de masse $M$ vers la bille (2) avec une vitesse $v_1(0)$, elle va percuter la bille (2), le choc va modifier les vitesses des deux billes.
Le calcul des vitesses après la collision considérée comme parfaitement élastique, obéit aux deux lois de la mécanique classique : conservation de la quantité de mouvement et de l'énergie cinétique.
La bille (2) va aller percuter le mur et la collision étant parfaitement élastique et instantanée, elle repart avec une vitesse de même valeur mais de sens opposé. Sur son trajet de retour elle percute à nouveau la bille (1) et ainsi de suite jusqu'à ce que la bille (1) s'éloigne sans qu'elle puisse à nouveau entrer en collision avec la bille (2).
G. Galperin montre que si le rapport des masses est $\frac{M}{m}=100^N$, le nombre de chocs entre les billes et entre la bille (2) et le mur, qu'il note $\Pi(N)$ coïncide avec les premiers $N+1$ chiffres décimaux du nombre $\pi$(en incluant 3).
$N=0 \Longrightarrow \Pi(0)=3$
$N=1 \Longrightarrow \Pi(1)=31$
$N=2 \Longrightarrow \Pi(2)=314$
On trouve facilement l'article de G. Galperin sur internet avec la recherche ``Galperin. Playing pool with pi.pdf''. Le dernier numéro de la revue Pour la Science (Hors-Série), dont le thème est ``L'ordre caché des nombres'' contient un article de Jean-Paul Delahaye dont le titre est ``Le nombre $\pi$ est partout'' dans lequel, parmi d'autres, la méthode de G. Galperin est décrite.
On peut lire cet article sur le site de la revue :
J'ai noté aussi les articles suivants :
où l'auteur donne le code permettant de calculer les collisions avec scilab et que j'ai adapté en postscript pour cette page.
et le très intéressant et détaillé article de Bastien Mallein :
Pour les commandes ayant permis d'illustrer cette page, elles sont dans les fichiers accessibles ici :
Elles sont placées sur un axe $Ox$, un mur vertical est en $O$ . Les billes sont disposées initialement ($t=0$), à des distances respectives $x_1(0)$ et $x_2(0)$ avec $x_1(0)>x_2(0)$ du mur.
La bille de masse $M$ est la plus éloignée. On lance la bille (1) de masse $M$ vers la bille (2) avec une vitesse $v_1(0)$, elle va percuter la bille (2), le choc va modifier les vitesses des deux billes.
Le calcul des vitesses après la collision considérée comme parfaitement élastique, obéit aux deux lois de la mécanique classique : conservation de la quantité de mouvement et de l'énergie cinétique.
La bille (2) va aller percuter le mur et la collision étant parfaitement élastique et instantanée, elle repart avec une vitesse de même valeur mais de sens opposé. Sur son trajet de retour elle percute à nouveau la bille (1) et ainsi de suite jusqu'à ce que la bille (1) s'éloigne sans qu'elle puisse à nouveau entrer en collision avec la bille (2).
G. Galperin montre que si le rapport des masses est $\frac{M}{m}=100^N$, le nombre de chocs entre les billes et entre la bille (2) et le mur, qu'il note $\Pi(N)$ coïncide avec les premiers $N+1$ chiffres décimaux du nombre $\pi$(en incluant 3).
$N=0 \Longrightarrow \Pi(0)=3$
$N=1 \Longrightarrow \Pi(1)=31$
$N=2 \Longrightarrow \Pi(2)=314$
On trouve facilement l'article de G. Galperin sur internet avec la recherche ``Galperin. Playing pool with pi.pdf''. Le dernier numéro de la revue Pour la Science (Hors-Série), dont le thème est ``L'ordre caché des nombres'' contient un article de Jean-Paul Delahaye dont le titre est ``Le nombre $\pi$ est partout'' dans lequel, parmi d'autres, la méthode de G. Galperin est décrite.
On peut lire cet article sur le site de la revue :
J'ai noté aussi les articles suivants :
où l'auteur donne le code permettant de calculer les collisions avec scilab et que j'ai adapté en postscript pour cette page.
et le très intéressant et détaillé article de Bastien Mallein :
Pour les commandes ayant permis d'illustrer cette page, elles sont dans les fichiers accessibles ici :
mardi 23 avril 2019
Animations XINT-PSTricks
Ces animations ont été calculées avec xint de Jean-François Burnol :
et réalisées avec PSTricks de Timothy Van Zandt :
par Juergen Gilg.Tous les fichiers sont ici :
Sur la première, les 3 cercles ont le même rayon, les sommets du triangle se déplaçant respectivement sur chacun des cercles. On dessine le trajet suivi par le centre de gravité du triangle.
Vous trouverez des explications détaillées et de belles animations sur le site :
https://www.mathcurve.com/courbes2d/trisectricedeceva/trisectricedeceva.shtml
Vous noterez l'humour de la deuxième animation :
La troisième est une illustration de la chaîne de Pappus, voir par exemple :
et réalisées avec PSTricks de Timothy Van Zandt :
par Juergen Gilg.Tous les fichiers sont ici :
Vous trouverez des explications détaillées et de belles animations sur le site :
https://www.mathcurve.com/courbes2d/trisectricedeceva/trisectricedeceva.shtml
Vous noterez l'humour de la deuxième animation :
La troisième est une illustration de la chaîne de Pappus, voir par exemple :
mardi 16 avril 2019
Cathédrale Notre-Dame de Paris
Suite à l'incendie qui a dévasté la Cathédrale Notre-Dame de Paris, Jürgen Gilg et Thomas Söll, nos amis allemands de ``l'équipe motivée'', nous ont envoyé un message de sympathie sous la forme d'un gif animé réalisé avec PSTricks et dont vous trouverez les fichiers sources ici :
Jean-François et Manuel
lundi 15 avril 2019
La suite de Stern-Brocot
Calcul et représentation graphique avec TeX, xint et PSTricks
La « suite diatomique de Stern » peut être définie par la récurrence :
pour n>0: a(2n) = a(n), a(2n+1) = a(n) + a(n+1) avec a(0)=0, a(1)=1.
On utilise aussi parfois la notation fusc(n).
Les références sur cette suite sont nombreuses, on peut citer :
https://fr.wikipedia.org/wiki/Suite_diatomique_de_Stern
et l'article de Jean-Paul Delahaye dans la revue ``Pour la Science'' - n° 420 - Octobre 2012, qu'il met à la disposition des lecteurs :
http://cristal.univ-lille.fr/~jdelahay/pls/227.pdf
Jean-François Burnol s'est attaché à développer plusieurs méthodes codées en TeX cherchant à élaborer la plus efficace et la plus rapide.
Afin d'avoir une référence, voici le résultat obtenu en calculant pour $n=2^{13}-1$ avec mathematica avec le code suivant :
start = SessionTime[];
ListPlot[fusc /@ Range[8191], AxesLabel → {n, HoldForm[fusc[n]]}]
Sow[SessionTime[] - start]
500.8 secondes Donc un peu plus de 8 min.
Pour la compilation du fichier, il faut décomposer la durée en fonction des processus.
Sur un Mac à 2.8 Ghz, pour les 6 pages du document :
$
time latex Suite-Stern-PSTricks-xint
real 0m1.054s
user 0m0.934s
sys 0m0.059s
$
time dvips Suite-Stern-PSTricks-xint.dvi
real 0m0.340s
user 0m0.301s
sys 0m0.022s
$
time ps2pdf Suite-Stern-PSTricks-xint.ps
real 0m6.435s
user 0m6.342s
sys 0m0.041s
C'est époustouflant, incroyable n'est-ce pas !
Le document comprend aussi un calcul en postscript, pas aussi rapide que ceux proposés par Jean-François, mais qui n'est pas mal non plus.
Voici schématiquement les 4 méthodes codées en TeX, écrites par Jean-François Burnol et qui feront le bonheur de tous les utilisateurs de TeX, LaTeX, XeLaTeX et des amateurs de programmation en TeX !
1. Calcul avec TeX de base et \numexpr
2. Approche avec xintexpr mais problèmes de saturation de la mémoire de TeX, seconde approche utilisant directement des macros de xinttools pour éviter ce problème.
3. Utilisation de TeX avec un stockage plus rapide des données numériques en utilisant les paramètres \fontdimen d’une police de caractère fictive, méthode 4 fois plus rapide que la première.
4. Utilisation de \listplot avec la nouvelle primitive \expanded : c'est la méthode la plus rapide et peut-être la plus élégante ? En voici le début, vous lirez la suite dans le document.
« On peut engendrer la suite de STERN (après le zéro initial) par blocs de longueurs des puissances de deux : 1(1) engendre 12(1) qui engendre 1323(1) qui engendre 14352534(1), chaque série provenant de la précédente en intercalant les sommes d’entiers successifs, et les « 1 » terminaux sont utilisés pour engendrer, mais oubliés lorsque l’on fait la concaténation, pour obtenir donc ici les valeurs de fusc(n), pour n=1..15 : 112132314352534...
Il est facile de coder ceci avec des \edef mais ceci empêcherait l’expandabilité. La nouvelle primitive \expanded révolutionne le codage expandable en TeX, comme nous allons l’illustrer maintenant en allant jusque fusc(8191). [...] »
Pour terminer, Jean-François donne le code qui calcule en une fraction de seconde les 50000 valeurs de fusc(1) à fusc(50000) puis les exporte dans un fichier.
Les fichiers sont disponibles soit ici :
Suite-Stern-Brocot
soit sur le site officiel de xint-ploexpr :
https://melusine.eu.org/syracuse/G/xint-polexpr/
Images extraites de la documentation :
New version of pst-marble 1.5
The actual version 1.5 of pst-marble ships with some changes and new options which are introduced within CHANGES.md (part of the package) and of course within its documentation:
The most important changes will be illustrated.
Aubrey Jaffer introduces a very powerful action "jiggle" which now replaces "wiggle".
"jiggle" needs 5 arguments in the following order:
- an angle (in degrees) $\theta$ which defines the direction of one axis.
- the period (or wave length $\lambda$) in points
- the displacement (or offset $\Omega$) in points
- A an amplitude in points
- B an amplitude in points
\[a = 360 \frac{x \sin(\theta) + y \cos(\theta) +\Omega}{\lambda}\]
\begin{align*}
x'&=x+\frac{1}{2}A\sin(a)\cdot\sin(\theta)+\frac{1}{2}B\cos(a)\cdot\cos(\theta)\\
y'&=y+\frac{1}{2}A\sin(a)\cdot\cos(\theta)-\frac{1}{2}B\cos(a)\cdot\sin(\theta)
\end{align*}
With the following parameters we get:
\[ \theta=0\quad \lambda=200\quad \Omega=-50 \quad A=0\quad B= 45 \]
\[ \theta=0\quad \lambda=200\quad \Omega=-50 \quad A=45\quad B= 0 \]
If we consider the surface as divided into parallel bands of infinitesimal width perpendicular to the $\theta$ direction, the displacements in the $\theta$ direction compress and dilate the distances between the bands.
\[ \theta=0\quad \lambda=200\quad \Omega=-50 \quad A=45\quad B=45 \]
Another quite spectacular action created by Aubrey Jaffer is "shading". It needs 4 arguments :
- an angle (in degrees) $\theta$ which defines the direction of one axis.
- the period (or wave length $\lambda$) in points
- the displacement (or offset $\Omega$) in points
- A an amplitude in points which can be different to that of "jiggle".
The command "shadings" simulate the lightening and darkening of the paint transferred to the paper by pulling the paper from the bath at uneven speeds. Shading is always done for sprays, but only when "oversample>0" is taken as option.
Ainsi :
Here some nice new marblings with the new version:
It is a fashion to draw hearts, leaves or other patterns on the surface of cream coffee, here is the one of pst-marble:
The bouquet - the psychedelic version:
To finish here is what one could obtain with a figure drawn on the surface of the bath by applying to him different actions "jiggle". We take as an example a rectangular grid on which is drawn the head of a tiger.
And now let's apply the jiggle action:
dimanche 14 avril 2019
pst-marble version 1.5
La version 1.5 de pst-marble apporte de nombreux changements et nouveautés indiqués dans le fichier CHANGES.md inclus dans le package et décrits dans la documentation :
Je voudrais simplement signaler ici les plus importants.
Aubrey Jaffer a introduit une action puissante nommée "jiggle" en remplacement de "wiggle".
"jiggle" nécessite 5 arguments, dans l'ordre :
\[a = 360 \frac{x \sin(\theta) + y \cos(\theta) +\Omega}{\lambda}\]
\begin{align*}
x'&=x+\frac{1}{2}A\sin(a)\sin(\theta)+\frac{1}{2}B\cos(a)\cos(\theta)\\
y'&=y+\frac{1}{2}A\sin(a)\cos(\theta)-\frac{1}{2}B\cos(a)\sin(\theta)
\end{align*}
Suivant les valeurs des paramètres nous obtenons :
\[ \theta=0\quad \lambda=200\quad \Omega=-50 \quad A=0\quad B= 45 \]
\[ \theta=0\quad \lambda=200\quad \Omega=-50 \quad A=45\quad B= 0 \]
Si nous considérons la surface comme divisée en bandes parallèles de largeur infinitésimale perpendiculaires à la direction $\theta$, les déplacements dans la direction $\theta$ compriment et dilatent les distances entre les bandes.
\[ \theta=0\quad \lambda=200\quad \Omega=-50 \quad A=45\quad B=45 \]
L'autre action particulièrement spectaculaire créée par Aubrey Jaffer est "shading". Elle nécessite 4 arguments :
Ainsi :
Voici quelques nouveaux papiers marbrés obtenus avec cette version :
C 'est une mode que de dessiner des cœurs, des feuilles ou d'autres motifs à la surface des cafés crème, voici celui de pst-marble :
Le bouquet version psychédélique :
Pour terminer voici ce qu'on pourrait obtenir avec une figure dessinée sur la surface du bain en lui appliquant différentes actions "jiggle". Nous prenons comme exemple un quadrillage rectangulaire sur lequel est dessinée la tête d'un tigre.
Et appliquons-lui les transformations de jiggle :
Je voudrais simplement signaler ici les plus importants.
Aubrey Jaffer a introduit une action puissante nommée "jiggle" en remplacement de "wiggle".
"jiggle" nécessite 5 arguments, dans l'ordre :
- un angle en degrés $\theta$ qui définit la direction d'un axe.
- la période(ou longueur d'onde $\lambda$) en points des déformations à la surface du liquide
- un décalage(ou offset $\Omega$) en points
- A une amplitude en points
- B une amplitude en points
\[a = 360 \frac{x \sin(\theta) + y \cos(\theta) +\Omega}{\lambda}\]
\begin{align*}
x'&=x+\frac{1}{2}A\sin(a)\sin(\theta)+\frac{1}{2}B\cos(a)\cos(\theta)\\
y'&=y+\frac{1}{2}A\sin(a)\cos(\theta)-\frac{1}{2}B\cos(a)\sin(\theta)
\end{align*}
Suivant les valeurs des paramètres nous obtenons :
\[ \theta=0\quad \lambda=200\quad \Omega=-50 \quad A=0\quad B= 45 \]
\[ \theta=0\quad \lambda=200\quad \Omega=-50 \quad A=45\quad B= 0 \]
Si nous considérons la surface comme divisée en bandes parallèles de largeur infinitésimale perpendiculaires à la direction $\theta$, les déplacements dans la direction $\theta$ compriment et dilatent les distances entre les bandes.
\[ \theta=0\quad \lambda=200\quad \Omega=-50 \quad A=45\quad B=45 \]
L'autre action particulièrement spectaculaire créée par Aubrey Jaffer est "shading". Elle nécessite 4 arguments :
- un angle en degrés $\theta$ qui définit la direction d'un axe.
- la période(ou longueur d'onde $\lambda$) en points des déformations à la surface du liquide
- un décalage(ou offset $\Omega$) en points
- A une amplitude en points qui peut être différente de celle de "jiggle".
Ainsi :
C 'est une mode que de dessiner des cœurs, des feuilles ou d'autres motifs à la surface des cafés crème, voici celui de pst-marble :
Le bouquet version psychédélique :
Pour terminer voici ce qu'on pourrait obtenir avec une figure dessinée sur la surface du bain en lui appliquant différentes actions "jiggle". Nous prenons comme exemple un quadrillage rectangulaire sur lequel est dessinée la tête d'un tigre.
Et appliquons-lui les transformations de jiggle :
jeudi 11 avril 2019
polexpr et xint : applications (15)
Les calculs de Haute-Précision avec XINT
Les extensions XINT et POLEXPR de Jean-François Burnol, ouvrent un univers nouveau et exceptionnel pour tous les utilisateurs de TeX, LaTeX, XeLaTeX, dans le calcul formel avec POLEXPR et dans le calcul de très grande précision avec XINT. Comme ces extensions sont codées avec TeX, on pourrait penser que ces opérations ne s'effectuent pas très rapidement, il n'en est rien, la rapidité des calculs est comparable à celle de Maple ou de Mathematica. Pour le vérifier, il y a dans les pages de ce blog, de nombreuses applications de XINT et POLEXPR et je recommande en particulier le polynôme de Rump.
Cette fois-ci, c'est la précision des calculs qui est mise valeur dans quelques illustrations réalisées avec PSTricks.
Encore une fois tous les calculs sont faits avec xint !
Vous trouverez tous les fichiers dans le répertoire :
le fichier zippé les contenant tous.
Tous les exemples, dont quelques images sont affichées ci-dessous (extraites de la documentation) ont été réalisés par les membres de l'équipe motivée : Jean-François Burnol, Jürgen Gilg, Manuel Luque et Thomas Söll.
dimanche 7 avril 2019
Mise-à-jour de XINT
Note d'information
Certaines applications "polexpr et xint" numérotées de 1 à 14, utilisaient le fichier "poormantrig.tex" pour les fonctions trigonométriques. Celui-ci est devenu obsolète. La nouvelle version de xint : 1.3e 2019-04-05 disponible sur le serveur du CTAN :contient la bibliothèque "xinttrig" qui est automatiquement chargée par "xintexpr". Elle fournit des fonctions trigonométriques directes et inverses utilisant des degrés ou des radians avec une précision allant jusqu'à (un peu moins de) 60 chiffres.
Si vous êtes utilisateur de MiKTeX : https://miktex.org/
la mise à jour est prête : ouvrez MiKTeX Console et cliquez sur Updates.
"poormantrig.tex" est rendu public pour un temps limité Si on a xint 1.3e, alors automatiquement il s'efface et ne charge pas (de toute façon il est incompatible).
Sur le site de :
vecteurs.sty a été mis à jour sur le site de :
dans le répertoire "Fichiers nécessaires".
samedi 6 avril 2019
Point de Monge d'un tétraèdre
Point de Monge d’un tétraèdre, sphère circonscrite, centre de gravité
Victor Thébault commence son livre “Parmi les belles figures de la géométrie dans l’espace”, sous-titré (Géométrie du tétraèdre), par l’étude du point de Monge.
«Dans un mémoire intitulé “Sur la pyramide triangulaire” Monge montre que les plans menés par les milieux des arêtes d’un tétraèdre perpendiculairement aux arêtes opposées concourent en un point, et que ce point est le symétrique du centre de la sphère circonscrite à ce tétraèdre par rapport à son centre de gravité.»
Pour une démonstration plus récente, celle publiée dans la revue “Feuille de Vigne n°112” de l’IREM de Dijon par Tristan Deray,
me paraît excellente.
Gilbert Julia (http://gjmaths.pagesperso-orange.fr/) propose une belle et concise démonstration :
je cite :
«On pourrait ainsi démontrer, de façon peut-être plus élégante, que les six plans médiaux ont un point commun : puisque les six plans médiateurs ont en commun le centre O de la sphère circonscrite au tétraèdre, les six plans médiaux qui en sont leurs images par la symétrie centrale de centre G ont en commun l’image de O par cette symétrie centrale.»
Voici 2 illustrations de cette propriété, toutes les deux réalisées avec PSTricks, mais dont les calculs sont faits avec postscript pour l'une et avec xint avec l'autre, cette dernière a été écrite par Juergen Gilg.
Tous les fichiers sont dans le répertoire :
Diverses constructions relatives au tétraèdre ont été ajoutées dans des fichiers séparés : trace des plans médiaux, des plans médiateurs et coupes du tétraèdre suivant ces plans.
Quelques images :
Un tétraèdre et les milieux des arêtes.
Les coupes d'un tétraèdre par les 6 plans médiaux, en voici une :
Les traces des plans médiateurs, en voici une :
Les coupes d'un tétraèdre par les 6 plans médiateurs, en voici une :
Une image réalisée par Juergen Gilg avec PSTricks et xint :
Inscription à :
Articles (Atom)