Mon objectif est de bricoler une famille de fonctions \( (f_n)_{n \in \mathbb{N}^*} \), où chaque \( f_n \) en quelque sorte illustre l'entier \( n \) ; notamment le graphe de \( f_n \) doit permettre de compter les diviseurs de \( n \) ; et si \( n \) est un nombre premier, cela doit se voir.
La première chose dont je vais avoir besoin est approximativement ceci : une palette en carton pour transporter des oeufs !
![]() | ![]() |
En termes mathématiques, je construis une fonction \( \phi \)
Voici des choix qui conviennent :
| \[ \phi_0(x, y) = \frac{\sin^2(\pi x) + \sin^2(\pi y)}{2} \]
(et ses multiples > 0) | ![]() |
| \[ \phi_1(x, y) = 1-\cos^2(\pi x) \cos^2(\pi y) \]
(et ses multiples > 0) | ![]() |
|
n'importe quel barycentre à coefficients positifs des deux précédents, i.e. \[ \phi_k = (1-k) \phi_0 + k \phi_1 \]avec \( k \in [0,1] \) (et ses multiples > 0) Image ci-contre : \( k = 1/2\) | ![]() |
Prenons un marqueur et traçons sur notre carton (= sur le paysage de la représentation 3D de \( \phi \) ) les points satisfaisant l'équation \( x y = n \), où \( n \) est un entier naturel positif, et où \( x \) et \( y \) sont compris entre \( 1 \) et \( n \) ;
vu de dessus selon une projection orthogonale, cela revient à faire ceci (exemple \( n = 6 \) ) :
Un morceau d'hyperbole |
posé sur |
une carte coloriée selon les courbes de niveau de \( \phi \) |
donne |
le trajet d'un cycliste ? |
Imaginer un cycliste partant d'une extrémité (A) du morceau d'hyperbole pour se rendre à l'autre (D) ; il devra parcourir creux et bosses d'altitudes variées. Vu en coupe (et ce bien que la coupe ne soit pas plane !) :
Sur ce trajet, on perçoit la notion de diviseur de \( n \) : le cycliste se trouve en \( (x, y) \) avec \( x \) entier et \( y \) entier, si et seulement si il se trouve à l'altitude \( z = \phi(x, y) = 0 \). C'est le cas par exemple en B, où \( x = 2, y = 3\), deux diviseurs associés de \( 6 \).
Exprimons la position sur l'hyperbole d'équation \( xy = n \) à l'aide d'un seul paramètre \( t \) et des équations paramétriques que voici :
\[ x = n^{\frac{1+t}{2}} \] \[ y = n^{\frac{1-t}{2}} \]Déjà vérifier que cela fonctionne :
\[ xy = n^{\frac{1+t}{2}} n^{\frac{1-t}{2}} = n^{\frac{1+t}{2}+\frac{1-t}{2}} = n^{\frac{(1+t)+(1-t)}{2}} = \dots = n \]OK. Quand \( t \) vaut \( -1 \) : \( x = 1 \) et \( y = n \). Quand \( t \) vaut \( +1 \) : \( x = n \) et \( y = 1 \). Autrement dit à \( t \) croissant, on parcourt l'hyperbole depuis en haut à gauche vers en bas à droite. Quand \( t = 0 \) : \( x = y = \sqrt{n} \) : on est à mi-chemin.
Cette paramétrisation a l'avantage de "normaliser" l'intervalle de définition : quel que soit \( n \), \( t \) parcourt \( [-1, 1] \), intervalle ne dépendant pas de \( n \).
De plus, on se place dans une optique de recherche des diviseurs \( d \) de \( n \). Que vaut \( t \) quand \( (x, y) = (d, n/d) \) ?
Réponse :
\[ t_d = 2 \frac{\ln d}{\ln n} - 1 \]La même formule appliquée à \( n / d \) et non plus à \( d \) donne après simplifications :
\[ t_{n/d} = 1 - 2 \frac{\ln d}{\ln n} \]On a donc la jolie propriété :
\[ t_{n/d} = - t_d \]Pour conclure, cette paramétrisation est on ne peut plus naturelle pour faire jouer à \( d \) et \( n / d \) des rôles symétriques.
On combine les ingrédients vus précédemment en définissant pour tout entier naturel \( n \) une fonction \( f_n \) de \( [-1, 1] \) vers \( \mathbb{R} \) que je baptise "l'ovifonction de \( n \)" :
\[ f_n(t) = \phi \left (n^{\frac{1+t}{2}}, n^{\frac{1-t}{2}} \right) \]Par construction, hormis pour le cas \( n = 1\) qui est dégénéré, le nombre de zéros de \( f_n \) est égal au nombre de diviseurs de \( n \) ; \( n \) est premier si \( f_n \) atteint zéro exactement 2 fois.
Exemples avec \( \phi = \phi_0 \) :
| \( n = 1 \) | \( n = 2 \) | \( n = 3 \) | \( n = 4 \) | \( n = 5 \) |
|---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
| \( n = 6 \) | \( n = 7 \) | \( n = 8 \) | \( n = 9 \) | \( n = 10 \) |
|---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
| \( n = 180 \) |
|---|
![]() |
Exemple avec \( \phi = \phi_1 \) :
| \( n = 180 \) |
|---|
![]() |
Exemple avec \( \phi = \phi_1 \) en représentation polaire \( r = f_n(\theta / \pi) \), où \( \theta \in [-\pi, +\pi] \) - noter que l'on recolle les extrémités à l'ouest (\( -\pi \equiv + \pi \)) ce qui a pour effet d'amalgamer les pics de \( (1, n) \) et de \( (n, 1) \) :
| \( n = 37 \) |
|---|
![]() |
Légende : pour 37, on n'atteint le centre qu'une fois, donc 37 est un nombre premier. |
Prenons \( \phi(x,y) = \cos^2(\pi x) \cos^2(\pi y) = 1 - \phi_1(x,y) \), ce qui (comparé à \( \phi_1 \) ) place les diviseurs de \( n \) non plus dans les "creux" ( \( 0 \) ) mais sur les "bosses" ( \( 1 \) ).
Appliquons par dessus une fonction qui "aiguise" les pics, i.e. qui envoie \( 0 \) sur \( 0 \) et \( 1 \) sur \( 1 \) mais qui contracte le reste de l'intervalle \( [0,1] \) vers la valeur \( 1/2 \). Une telle fonction (pour \( t \in [0, 1] \) ) :
\[ t \mapsto \frac{1}{\pi} \arcsin \left ( 2t - 1 \right ) + \frac{1}{2} \]Envoyons ensuite l'intervalle \( [0,1] \) sur l'intervalle \( [1/2, 1] \) par une transformation affine. Enfin représentons le tout en coordonnées polaires et remplissons l'intérieur de la courbe fermée. Si vous avez bien suivi, cela donne :
\[ \phi(x,y) = \cos^2(\pi x) \cos^2(\pi y) \] \[ \forall \theta \in [ -\pi, \pi ], r \leq f_n\left ( \frac{\theta}{\pi} \right ) = \frac{1}{2 \pi} \arcsin \left ( 2 \phi\left( n^{(1+\theta/\pi)/2}, n^{(1-\theta/\pi)/2)} \right ) - 1 \right ) + \frac{3}{4} \]![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Légende : les diviseurs de \( n \) sont matérialisés par les pics atteignant le cercle unité. Le pic orienté plein ouest compte double car représente tout à la fois \( 1 \) et \( n \). |
|||||
Conclusion : on a commencé avec des oeufs mais on termine avec des oursins !
LR, 28/12/2022.