vendredi 30 juillet 2021

Le calcul des 664 579 nombres premiers inférieurs à 10 000 000 avec TeX

Le calcul des 78498 nombres premiers inférieurs à 1000000 calculés avec TeX et présentés avec LaTeX sous forme d'un tableau de 161 pages où les nombres sont alignés sur 10 colonnes, au choix dans l'ordre verticalement ou horizontalement en moins de 2 s !


Le calcul des 664 579 nombres premiers inférieurs à 10 000 000 demande pratiquement moins d'une minute pour les deux versions, la construction du pdf de 1357 pages demande un peu plus de temps(il faut être un peu plus patient) !


C'est la contribution de Jean-François Burnol à un challenge "Primes | A Software Drag Race" 

 https://github.com/PlummersSoftwareLLC/Primes

https://github.com/PlummersSoftwareLLC/Primes/tree/drag-race/PrimeTeX 

 Pour ceux qui sont sous Windows :

Avec Windows et PowerShell faire :
lualatex "\def\Range{10000000}\input wheel_primestopdf_h.tex"

lualatex "\def\Range{10000000}\input wheel_primestopdf_v.tex"
pour lister les nombres dans un pdf

ou
latex "\def\Range{10000000}\input wheel_primestopdf_h.tex"
pour le dvi puis dvi2pdf

Avec wheel_primestopdf_h.tex les nombres sont listés par ordre croissant ligne après ligne,
avec wheel_primestopdf_v.tex les nombres sont listés par ordre croissant colonne après colonne.

Sur le site : https://github.com/PlummersSoftwareLLC/Primes vous y verrez les très nombreuses contributions dans différents langages, une autre que celle en TeX  a retenu en particulier mon attention celle en PostScript pour le calcul des 78498 nombres premiers inférieurs à 1000000, avec en supplément la possibilité de créer une image bitmap 1000x1000 où chaque carré noir représente un nombre premier. 

Sous Windows :
 gswin64c.exe   -q -dNOSAFER -dNOPAUSE -dBATCH -sDEVICE=bmpmono -o img.bmp -g1000x1000 -f img.ps



 


mardi 27 juillet 2021

Systèmes de coordonnées horizontales et équatoriales superposés

Il s'est agit de créer une commande permettant de superposer les systèmes de coordonnées horizontales et équatoriales comme l'a déjà fait le professeur Kim :

https://web.njit.edu/~hmkim/phys322/Phy_322_Basics_2019Spring.pdf

Les fichiers sont ici :

http://manuel.luque.free.fr/milkyway/pst-eqhz.zip

ou

 pst-eqhz.zip

Les 3 images de la documentation.Le personnage est Basile le disciple de Léonard(de Vinci), dans la bande dessinée ``Léonard'' de Turk et Bob de Groot.


 



lundi 19 juillet 2021

Différents systèmes de coordonnées en astronomie avec PSTricks

Différents systèmes de coordonnées en astronomie illustrés avec PSTricks par Jürgen Gilg.

Dans le package  pst-coordinatesystems trois commandes sont disponibles pour permettre de représenter :

- les coordonnées équatoriales ;

- les coordonnées écliptiques ;

- les coordonnées horizontales.

Les fichiers sont accessibles avec les liens suivants :

http://manuel.luque.free.fr/milkyway/pst-coordinatesystems.zip

pst-coordinatesystems.zip 

http://melusine.eu.org/syracuse/G/xint-polexpr


 

 




mardi 6 juillet 2021

La spirale de Padovan avec xint et PSTricks

Les triangles équilatéraux dont les côtés ont pour longueur les nombres de la suite de Padovan s'enroulent dans le sens des aiguilles d'une montre.
Tous les sommets sont sur une spirale avec des arrondis parfaits, aucune discontinuité dans le tracé, de quoi est-il constitué ?
Êtes-vous observateur ? Dans chaque triangle il y a, au centre, la longueur du côté, ce sont les nombres de la suite de Padovan qui s'enroulent et vérifient :
\begin{equation*}
  u_n = u_{n-2} + u_{n-3}
\end{equation*}
mais Jean-François Burnol a fait remarquer que cette suite, pour $ n \geqslant 5 $ vérifie une autre relation de récurrence, laquelle ?
Cette représentation de la spirale de Padovan, un bel ouvrage de marqueterie,  a été créée par Jean-Michel Sarlat avec xint pour les calculs(à voir comme un exemple de l'utilisation de la récursivité avec xint) et PSTricks pour sa représentation.

https://melusine.eu.org/syracuse/G/xint-polexpr/


 La voici avec PSTricks calculée avec PostScript :

http://manuel.luque.free.fr/Nombre-Plastique/psPadovanSpiral-pstricks.pdf

http://manuel.luque.free.fr/Nombre-Plastique/psPadovanSpiral-pstricks.tex 

Les termes de la suite sont calculés par récursion, nous ne pourrons jamais aller aussi loin qu'avec XINT, mais pour un dessin c'est bien suffisant.

Pour la récursivité en PostScript, il y a un excellent cours et des exemples superbes dans le document d' André Heck : "Learning PostScript by Doing" :

https://staff.science.uva.nl/a.j.p.heck/Courses/Mastercourse2005/tutorial.pdf 

Je m'en suis largement inspiré. Pour la suite de Padovan on écrira  :

/Padovan {
    2 dict begin
        /n exch def
        n 3 gt {
            n 3 sub Padovan n 2 sub Padovan add
        }{
            n 1 eq n 2 eq or n 3 eq or {1} if
        } ifelse
    end
} bind def

% le 48 ème terme s'obtiendra par 

48 Padovan ==




 


 

samedi 3 juillet 2021

Le Nombre Plastique (2)

C'est un supplément à l'article :

http://pstricks.blogspot.com/2021/07/le-nombre-plastique-avec-xint-et-pst.html 

Nous avions pour calculer $\Psi$ proposé 4 méthodes :

- à partir de cette expression

 $$\Psi=
\sqrt[3]{1+\sqrt[3]{1+\sqrt[3]{1+\sqrt[3]{1+\sqrt[3]{1+\sqrt[3]{1+\sqrt[3]{1+\cdots}}}}}}}
$$

 avec xintexpr

-  en résolvant l'équation $x^3-x-x=0$.dont $\Psi$ est la racine réelle. Pour cela, sur la suggestion de Jürgen Gilg c'est le package polexpr qui a été utilisé, et Jean-François Burnol en a développé l'idée, son utilisation est très détaillée et on peut obtenir bien plus de renseignements que de taper par exemple : Solve[x^3-x-x1==0,x]  sur Mathematica, le calcul étant fait in-situ, le document se compose en harmonie avec la succession des calculs.

- à partir de la relation de récurrence linéaire :

\[
u_0=1\ ;\ u_1=1\ ;\ u_2=1\ ;\ u_n=u_{n-2}+u_{n-3}
\]

en utilisant xintexpr

- à partir de la relation de récurrence quadratique :
On considère  la suite $(u_n)$ telle que $u_0$, $u_1$,$u_2$ valent $0$, $0$, $1$. Les
formules de récurrence suivantes pour trois valeurs d'indices consécutifs, l'indice milieu étant une puissance de $2$ s'écrivent :

\begin{align*}
  u_{1+2^{n+1}} &= 2 u_{1+2^n} (u_{2^n} + u_{-1+2^n}) + u_{2^n}^2\\
  u_{2^{n+1}} &= u_{1+2^n}^2 + u_{2^n}^2 + 2 u_{2^n}u_{-1+2^n} \\
  u_{-1+2^{n+1}} &= 2u_{1+2^n}u_{2^n} + u_{-1+2^n}^2
\end{align*}

Pour la démonstration de ces relations, consultez le document  "padovan-jfbu.pdf" intitulé "CALCUL PAR EXPONENTIATION RAPIDE DE TERMES DE LA SUITE DITE DE PADOVAN" inclus dans l'archive .zip. Comme exemple, cette façon a été utilisée pour calculer 6000 chiffres après la virgule.

Cette fois-ci Jean-François Burnol propose une comparaison sur la rapidité des calculs entre la récurrence linéaire et la quadratique.
Dans son document "PadovanLinVsQuad.pdf" (Le nombre plastique) 

https://melusine.eu.org/syracuse/G/xint-polexpr/

où comme toujours à son habitude, calculs et commentaires se complètent, il apparaît que les calculs par récurrence quadratique sont d'une rapidité qui surpasse ceux par récurrence  linéaire.
Par exemple pour 1000 chiffres :
- Linéaire : 14.659s
- Quadratique : 0.435s
avec le processeur : Intel(R) Core(TM) i5-4440 CPU @ 3.10GHz 

http://manuel.luque.free.fr/Nombre-Plastique/Padovan-Suite.zip



vendredi 2 juillet 2021

Le nombre plastique avec xint et pst-solides3d

Présentation

La revue Tangente vient de sortir son deux-centième numéro ! Il y a un article examinant le nombre 200.sous différents aspects, il y en a peu, mais il se trouve que 200 est l'un des termes de la suite de Padovan, dont on sait que le rapport de deux termes consécutifs tend vers le Nombre Plastique : https://fr.wikipedia.org/wiki/Nombre_plastique

 et ainsi l’auteur de l’article Daniel Lignon, trouve le prétexte pour donner quelques aspects de cette suite dans un paragraphe intitulé “La géométrie du plastique”. Dans le “Pour la Science” n°206 d’août 1996, Ian Stewart, dans un article intitulé “La sculpture et les nombres” sous-titré : “Comme le nombre d’or, le nombre plastique inspire les sculpteurs” développe de façon plus détaillée cette “géométrie” :

« Une autre façon de construire les nombres de Padovan consiste à reproduire l'utilisation des carrés pour les nombres de Fibonacci, mais avec des parallélépipèdes. Partons d'un cube de côté égal à 1, et plaçons à côté de lui un autre cube identique, adjacent par une face. On obtient un parallélépipède dont deux côtés sont égaux à 1, et le troisième côté est égal à 2  (parallélépipède $1\times1\times2$).
Contre la face $1\times2$, plaçons un autre parallélépipède $1\times1\times2$. Nous obtenons un parallélépipède $1\times2\times2$.
Puis, contre une face $2\times2$, plaçons un cube $2\times2\times2$, afin de former au total un parallélépipède $2\times2\times3$.
Contre une face $2\times3$, plaçons un parallélépipède $2\times2\times3$, afin d'obtenir un parallélépipède $2\times3\times4$, et ainsi de suite en ajoutant successivement des parallélépipèdes à l'Est, au Sud, en bas, à l'Ouest, au Nord, et en haut. À chaque étape, le nouveau parallélépipède a pour longueur des côtés trois nombres de Padovan consécutifs. »

Nous allons d'abord donner 3 façons de calculer $\Psi$ avec une précision aussi grande que l'on veut. Jean-François Burnol, a apporté son concours décisif à la mise au point de ces méthodes, puis la représentation géométrique de la suite selon Ian Stewart.

Le texte qui suit n'est qu'un échantillon du document principal et des fichiers annexes que vous trouverez dans l'archive :

http://manuel.luque.free.fr/Nombre-Plastique/Nombre-Plastique.zip 

ou

Nombre-Plastique.zip 

 

Le calcul du nombre plastique avec xintexpr

Méthode avec les racines cubiques

\[
\Psi=\sqrt[3]{1+\sqrt[3]{1+\sqrt[3]{1+\sqrt[3]{1+\sqrt[3]{1+\sqrt[3]{1+\sqrt[3]{1+\cdots}}}}}}}
\]

% Ne pas oublier le * !
% Sinon les puissances fractionnaires calculées avec seulement 16 chiffres de précision!
\xintDigits* := 64;% de toute façon la précision de racine cubique pas au-delà
                   % de 62 chiffres, et 64 chiffres sont conservés au max
\xintdeffloatfunc cbrt(x):=x^(1/3);%
\xintdeffloatfunc plast(x):=(x+1)^(1/3);%
\pdfresettimer
\xintdeffloatvar n := 1;%
\def\x{0}%
\xintloop
\edef\x{\the\numexpr\x+1}%
\xintdeffloatvar m:=plast(n);%
\xintifboolexpr{abs(n-m)>1e-62}{\xintdeffloatvar n:=m;\iftrue}{\xintdeffloatvar n:=m;\iffalse}%
\repeat
\edef\tempsA{\strip@pt\dimexpr\pdfelapsedtime sp}%
$\Psi=\xinteval{n}\quad (\x\textrm{ itérations}, \tempsA s)$

$\Psi= 1.32471795724474602596090885447809734073440405690173336453401505$ (87 itérations, 2.72299s)

Méthode par calculs exacts de 100 décimales

\[
u_0=1\ ;\ u_1=1\ ;\ u_2=1\ ;\ u_n=u_{n-2}+u_{n-3}
\]
\[
U_0=(a_0=1, b_0=1, c_0=1); U_{n+1}=(b_n, c_n, a_n + b_n); \Psi_n = \frac{c_n}{b_n}
\]

\pdfresettimer
\xintdefvar a, b, c := 1, 1, 1;%
\xintiloop [1+1]%
\xintdefvar a, b, c := b, c, a + b ;%
% là aussi faudrait peut-être chercher un critère d'arrêt
% J'ai voulu déterminer par dichotomie en partant de 300 et en réduisant...
% ... c'est rapide mais en fait faut pas baisser en-dessous de 2 * 267
% itérations...
% faudrait faire ça de manière dynamique comme avec les racines cubiques
% mais ça ralentirait...
\ifnum\xintiloopindex<534
\repeat
% afficher la fraction avec 98 chiffres après la virgule (expansion décimale
% sans arrondi juste troncation)
\edef\chiffres{\xinteval{trunc(c/b,98)}}%
\edef\tempsC{\strip@pt\dimexpr\pdfelapsedtime sp}%
\makeatother
Obtenu en \tempsC s et 534 itérations :\newline
$\Psi=\chiffres...\relax$
\makebox[2.5cm][l]{numérateur :} \xinteval{c}
\makebox[2.5cm][l]{dénominateur :} \xinteval{b}
Fraction irréductible :
$\xintTeXFrac{\xinteval{reduce(c/b)}}$
Facteur commun :
$\xinteval{gcd(c,b)}$

Obtenu en 0.185s et 534 itérations : 

$\Psi== 1.32471795724474602596090885447809734073440405690173336453401505030282785124554759405469934798178728...$  

Le nombre plastique par résolution de l’équation avec 98 puis 199 décimales

Racine réelle de $x^3 = 1 + x $

On aborde le problème avec polexpr. Se souvenir de ses commandes...

\poldef f(x) := x^3 - x -1;

\PolToSturm{f}{f}

\PolSturmIsolateZeros{f}


Le polynôme \PolTypeset{f} possède \PolSturmNbOfIsolatedZeros{f} racines réelles distinctes qui sont situées dans les intervalles suivants : \PolPrintIntervals{f}

Calculer le nombre plastique avec 499 chiffres après la virgule, avec xintsession

Si vous souhaitez utiliser ce calculateur, rendez vous sur : 

https://www.ctan.org/pkg/xintsession}{xintsession

La méthode utilisée est celle mise au point par Jean-François Burnol qu'il a intitulée ``Calcul par exponentiation rapide des termes de la suite dite de Padovan'', les fichiers ``padovan-jfbu.tex, padovan-jfbu.pdf'' sont dans l'archive : Nombre-Plastique.zip

Calculer le nombre plastique avec 6000 chiffres après la virgule

Le fichier ``Phi6000.tex'' est à compiler par : etex Phi6000.tex. 

Le préambule suivant débute la compilation :

«  Bienvenue ! Nous allons calculer Phi avec 6000 chiffres après la virgule.
Un peu de patience est demandée car cela prend environ (sur ma machine à 2GHz) 35 secondes pour trouver Phi puis près de 40 secondes pour valider que$ \Psi^3 =\Psi + 1$ à cette précision.
Vous trouverez après compilation les valeurs dans le fichier Phi6000-out.txt
. »

La géométrie plastique

C'est la méthode de Ian Stewart qui est utilisée. Vous allez visualiser ci-dessous dex gifs

Dans le fichier principal l'animation est réalisée avec le package animate d'Amexander Grahn.

les fichiers servant à générer les images des Gifs sont dans l'archive :

http://manuel.luque.free.fr/Nombre-Plastique/Nombre-Plastique.zip

ou

 Nombre-Plastique.zip