mardi 27 novembre 2007

De l'ordre des nombres ...

Une des activités des mathématiques qui me fascine le plus est l'étude des nombres premiers. Il m'arrive parfois de prendre un carnet, de calculer les nombres premiers dans l'ordre, puis de tracer toutes sortes de représentations graphiques, ou suite logique basée sur les nombres premiers (par exemple une suite composé d'un "0" pour chaque nombre non premier et un "1" pour chaque nombre premier) en espérant pouvoir y déceler une sorte de structure secrète des nombres, voire de l'univers, d'être le MAITRE DU MONDE !!! ... Mais un peu de sérieux.

Malheureusement, comme la plupart de mes tentatives naïves pour trouver une réponse là où les plus grands spécialistes n'ont pas encore trouvé grand chose, cela échoue systématiquement.

Mais avant de vous raconter ma dernière tentative, je tiens d'abord à vous donner deux formules, qui sont parmi les plus belles dans l'étude des nombres premiers.

Le Théorème des Nombres Premiers (TNP)

Il s'agit d'une formule qui permet d'estimer le nombre de nombres premiers (non, ce n'est pas une répétition) inférieurs à un certain nombre. La voici :

PI(n) ~ Li(n)

Ce qui signifie "le nombre de nombres premiers inférieurs à n est environ égal au logarithme intégral de n".

Cette formule permet d'estimer, avec une précision de plus en plus fine au fur et à mesure que n est grand, le nombre de nombres premiers inférieurs à n.

Il est vrai que ce théorème ne donne pas une estimation exacte. Pour obtenir LA formule exacte il faudrait résoudre la "conjecture de Rieman". Je ne vais pas entrer dans les détails (je vous conseille plutôt le livre "Dans la jungle des nombres premiers" de John Derbyshire), mais en résumé : en résolvant cette conjecture, on pourrait (peut-être) découvrir le petit quelque chose qu'il manque pour que le "environ égal" se transforme en "égal" (le "terme correctif", pour les puristes...)

Pour conclure sur ce théorème et sur cette conjecture, l'intérêt de connaître exactement le nombre de nombres premiers inférieurs à n, permettrait de déterminer de manière très simple si un nombre est premier ou pas.

Imaginons qu'on sache calculer PI(n) (le nombre de nombres premiers inférieurs à n), alors pour savoir si n est premier, il suffit de calculer PI(n+1) - PI(n) : si le résultat est un, alors bingo ! n est premier.

La formule d'Euler

zêta(s) = produit(1/(1-p^-s))

Cette formule se lit "zêta de s est égal au produit de un divisé par un moins p à la puissance moins s, pour p parcourant l'ensemble des nombres premiers". Mais avant d'en donner une lecture plus compréhensible, je dois rappeler la définition de la fonction zêta de Rieman (tiens, ce nom m'est familier ?...)

En réalité la fonction zêta de Rieman n'a pas été inventée par Rieman, mais par Euler. Voici cette définition :

zêta(s) = somme(1/n^s)

En français : La fonction zêta est la "somme de 1 sur n à la puissance s, lorsque n parcoure l'ensemble des nombres entiers". Enfin, l'argument de la fonction, "s", est un nombre complexe quelconque différent de 1 (sinon la somme tend vers l'infini et la fonction est indéfinie).

Donc, la puissance de cette formule d'Euler, est de mettre en relation l'ensemble des nombres entiers naturel avec l'ensemble des nombres premiers (le fameux motif que je recherchais aussi naïvement avec mon carnet). Elle est donc à priori la meilleure candidate pour connaître répartition des nombres premiers et pour compléter le TNP.

En réalité, cela s'avère très difficile et on peut dire que l'hypothèse de Rieman consiste en gros, à partir de la formule d'Euler, à compléter le TNP (ou du moins à faire une partie du boulot).

Pour conclure cette première partie, je ne peux pas m'empêcher de citer l'hypothèse de Rieman, qui même si elle n'est qu'une hypothèse, est bien entendu une formule très belle :

Pour tout s!=-2n, zêta(s) = 0 => s = 1/2 + ik

Expliquer cette formule en détail serait trop long, je donnerais simplement cette même hypothèse de Rieman en Français :

"Tout les zéro non triviaux de la fonction zêta se trouvent sur la droite critique du plan complexe y = 1/2"

J'ai bien conscience que présenter tous ces outils sans donner plus d'explication rend la compréhension bien difficile, c'est pourquoi je vous invite à consulter wikipédia ou même à livre ce livre ("Dans la jungle des nombres premiers") pour une avoir une meilleure approche du sujet.

J'ai cependant tenu à présenter d'abord brièvement l'approche "standard" des nombres premiers, qui est certes très prometteuse et très rigoureuse, mais assez peu accessible pour les non spécialistes (comme moi) : la résolution de l'hypothèse de Rieman est d'aileurs l'un des problèmes du millénaire, irrésolu depuis près de deux cent ans ! AI-je une chance avec mon carnet ? ... Après tout j'ai rien d'autre à faire pour l'instant...

Mon approche naïve : Les nombres premiers...oui mais dans quel ordre ?

Cet été, lorsque je m'aventurai "Dans la jungle des nombres premiers", il m'est venu une question un peu stupide :

Plutôt que de s'intéresser uniquement aux nombres premiers, pourquoi ne s'intéresse t'on pas à tous les nombres : les nombres "seconds", les nombres "troisièmes", etc. ?

J'ai donc défini (bien que j'imagine que cette fonction existe déjà quelque part...), ce que j'ai appelé la "fonction d'ordre", que j'appelerai originalement "o".

o(n) est une fonction qui pour un nombre entier donné, nous retourne le nombre de diviseurs premiers qui composent ce nombre. Autrement dit :

o(p) = 1 <=> p est premier

Exemples :
o(2)=1
o(3)=1
o(4)=2 (2 et 2)
o(5)=1
o(6)=2 (2 et 3)
o(7) = 1
o(8) = 3 (2, 2 et encore 2)
...
o(n) = k <=> n à k diviseurs premiers

Est-il possible, en étudiant cette fonction un peu bizarre, non seulement d'étudier la répartition des nombres premiers, mais aussi la répartition de tous les nombres d'ordre 2, 3 ? Peut-être cette fonction a-t'elle une schéma plus simple et cohérent que le schéma chaotique (ou du moins Riemaniesque) de la fonction PI(n) ?

Etant donné qu'il est déjà deux heures du mat' passées et que je dois bosser demain, je me contenterai pour l'instant de donner deux éléments qui pourraient être intéressants sur la fonction d'ordre :

Cette fonction possède les mêmes propriétés qu'une fonction logarithmique, c'est à dire :

o(a*b) = o(a) + o(b)
o(a/b) = o(a) - o(b)
o(a^n) = n*o(a)
...
et bien sûr o(1) = 0 , le nombre 1 ne possédant aucun diviseur premier
enfin, o(0) = infini, puisque 0 est divisible par tous les nombres premiers

Enfin, le dernier élément est un joli graphique, qui montre l'allure de la fonction d'ordre (en bleu) entre 1 et 132 (pourquoi 132 ? et bien parce que j'ai eu la flemme d'aller plus loin...)

Fonction d'ordre
Cliquez sur l'image pour l'aggrandir


Lorsque j'ai vu cette courbe, j'ai d'abord pensé à une sorte de fractale et puis j'ai essayé de borner de différentes manières la fonction d'ordre, histoire d'en savoir un peu plus. (courbes en rouge, vert et jaune) Pour la petite histoire, ce magnifique graphique a été réalisé avec le logiciel libre VisualMaths, que vous pouvez télécharger gratuitement sur sourceforge

En travaillant sur ce graphique, j'ai donc essayé de calculer une suite de fonctions qui permettent de majorer la fonction d'ordre à plusieurs niveaux :

La fonction d'ordre atteint un maximum local à chaque fois que n est une puissance de deux : en effet, le plus petit nombre entier ayant k diviseurs premiers n'est autre que 2^k. Avec un peu de calcul, on obtient que la fonction qui majore au mieux o(n) est f2(t) = ln(t)/ln(2), il s'agit de la fonction en
rouge sur le graphique.

Ensuite, si on élimine ces maximums, que reste t'il ? Quels sont les nombres les plus petits, d'ordre k, mais n'étant pas de la forme 2^k ? Les nombres de la forme 3*2^(k-1) (autrement dit, on remplace un deux par un trois)

On obtient alors la fonction f3, qui majore les points restants (en vert) : f3(t) = ln(t/3)/ln(2)+1

Ma supposition est qu'on pourrait (peut-être) trouver une formule générale de la fonction fa (a étant l'indice, nous connaissons déjà f2 et f3).

Je n'ai malheureusement pas encore eu le temps (ou le courage) de creuser cette question, j'ai juste calculé f4 (en orange) :

f4(t) = ln(t/4.5)/ln(2)+1

Il me paraît encore difficile de faire un pronostic sur la généralisation de cette formule, car la fonction f4 par exemple a un gros inconvénient : elle ne majore pas 5 (f4(1) = 4.5). Pourtant elle majore au mieux tout le reste de la fonction d'ordre.

En conclusion, je ne sais pas si cette approche peut réellement m'apporter quelque chose à la compréhension de la répartition des nombres premiers. Mais j'aime assez l'idée d'étudier la fonction d'ordre et peut-être de pouvoir avoir plus d'informations sur la répartition des nombres premiers en étudiant également la répartition des autres nombres.

Je pense en fait que cette approche est un peu similaire à celle du crible d'eratosthène (supprimer tous les nombres divisibles par deux, puis par trois ... afin qu'il ne reste que les nombres premiers). Mais quand on sait que le crible d'érathosthène est un algorithme à temps exponentiel, cela ne présage rien de bon quant à l'efficacité de cette méthode pour étudier les nombres premiers. A moins peut-être de savoir généraliser et utiliser correctement les fonctions que j'ai appelé fa, ou éventuellement de tenter une autre approche sur cette fonction d'ordre.

Si vous n'avez rien, mais vraiement rien d'autre à faire ;) vous pouvez m'envoyer vos tables de la fonction d'ordre pour des valeurs supérieurs à 132, cela me permettra de continuer mon délire...euh je veux dire mon étude !

J'attends aussi vos commentaires sur l'approche "standard", sur mon approche modeste et sur d'autres approches qui pourraient être intéressantes, le but étant d'essayer de trouver l'approche la plus simple sans pour autant qu'elle soit triviale.

Amusez-vous bien et à très bientôt.

Aucun commentaire: