David Madore's WebLog: La beauté du système de racines E8

Index of all entries / Index de toutes les entréesXML (RSS 1.0) • Recent comments / Commentaires récents

Entry #1988 [older|newer] / Entrée #1988 [précédente|suivante]:

(jeudi)

La beauté du système de racines E8

[Une projection de E8]Parmi les objets mathématiques qui me fascinent complètement, un des plus beaux et des plus remarquables est certainement le système de racines de E8 (ou du moins tout le cortège d'objets mathématiques plus ou moins liés à E8 : le système de racines, les polytopes associés et leur groupe de Weyl, le réseau des poids, les groupes de Lie ou de Chevalley associés, les immeubles de Tits qui en découlent et les variétés de drapeaux en question, etc. : il y a plein de choses auxquelles on pense quand on dit E8). Sans rentrer dans les détails mathématiques, disons qu'il s'agit ici d'un solide semi-régulier en dimension 8 (pas exactement régulier — il n'y a que trois solides réguliers à partir de la dimension 5 et ils ne sont pas très amusants — mais uniforme), le plus grand et le plus remarquable d'une famille de cinq objets exceptionnels ; il s'agit aussi des points les plus proches de l'origine dans un certain réseau cristallographique aux propriétés mirobolantes[#].

J'avais déjà fait une page interactive à son sujet (que je devrais d'ailleurs retravailler un peu), mais je reste sur ma faim : cette page ne laisse pas vraiment voir la beauté de l'objet, parce qu'on ne le voit pas bouger.

Bref, je voulais me faire une image du système de racines de E8 en train de tourner et d'exhiber quelques unes de ses impressionnantes symétries.

Le problème est que le polytope dont je parle a 240 sommets et 6720 arêtes[#2], et que tracer 6720 arêtes 25 fois par seconde ça a l'air un chouïa trop rapide pour une bête application en JavaScript sur Canvas (enfin, si quelqu'un trouve moyen d'optimiser ça et peut m'expliquer comment faire, je suis preneur ; le calcul des projections de 240 points, lui, devrait être très rapide). [Mise à jour : voir néanmoins cette page.] À défaut, je me suis fait une vidéo, que j'ai entre autres mise sur YouTube ; bon, l'ennui, c'est que la compression drastique que YouTube fait subir à ses vidéos fait que c'est en fait épouvantablement moche (surtout dans la deuxième partie de la vidéo, celle où ça tourne très vite), ce qui est dommage pour quelque chose censé être d'une beauté ineffable : j'en ai donc aussi fait une version en plus haute qualité à télécharger (170Mo ; le lien qui précède pointe sur un fichier BitTorrent[#3], si ça ne marche pas, vous pouvez réessayer sans l'extension .torrent pour télécharger directement le fichier WebM), ce n'est toujours pas très satisfaisant, il y a encore des artefacts de compression et aussi des artefacts d'aliasing dans le tracé, mais bon, c'est quand même joli à regarder (et certainement mieux que l'horreur qui a atterri sur YouTube).

Les premières 1′30″ montrent différentes petites rotations du polytope pour illustrer certains de ses plans de projection à haute symétrie (à 10″ on voit une symétrie d'ordre 30 appelée figure de Petrie, à 20″ une symétrie d'ordre 20, à 30″ une symétrie d'ordre 24, à 50″ une symétrie d'ordre 18, à 1′10″ une symétrie d'ordre 14). Les 2′30″ restantes sont différentes : cette fois, on revient toutes les 10″ à une projection équivalente, après avoir fait une rotation qui laisse le polytope symétrique (ça tourne donc beaucoup plus vite, et c'est cette partie-là qui a été le plus complètement massacrée par la compression vidéo sur YouTube).

Bizarrement, le plus difficile dans l'histoire a surtout été d'écrire le code qui interpole une rotation discrète en un mouvement continu (ou, de façon mathématiquement plus précise, qui inscrit une transformation orthogonale directe au bout d'un groupe à un paramètre de telles transformations[#4]).

[#] Par exemple, concernant le problème de savoir combien de sphères identiques on peut placer en contact avec une sphère donnée (sans qu'elles se chevauchent, bien sûr), la réponse est connue en toute petite dimension (≤4), en dimension 8 grâce à E8, en dimension 24 grâce au réseau de Leech (un autre réseau aux propriétés mirifiques), et c'est tout. Donc en fait je pourrais définir mon polyèdre E8 de la façon suivante : placez 240 sphères toutes identique autour d'une autre (également identique) en dimension 8, il n'y a essentiellement qu'une seule façon de faire ça, et les centres des 240 sphères forment le polyèdre dont je parle. Mais bon, il est plus simple de dire constructivement que mes 240 points sont ceux qui ont les coordonnées (±1,±1,0,0,0,0,0,0) (pour un choix quelconque de deux coordonnées non nulles et deux signes indépendants, ce qui fait 112 points) ou bien (±½,±½,±½,±½,±½,±½,±½,±½) (pour un nombre pair de signes moins, ce qui fait 128 points).

[#2] Il a aussi 60480 faces, qui sont des triangles équilatéraux, 241920 trois-cellules (c'est-à-dire les faces de dimension 3), qui sont des tétraèdres réguliers, 483840 quatre-cellules, qui sont des 4-simplexes réguliers, 483840 cinq-cellules, qui sont des 5-simplexes réguliers, 207360 six-cellules (dont 138240 relient une facette 7-simplexe à une facette 7-croix et 69120 relient deux 7-croix), et enfin 19440 facettes (=sept-cellules), 17280 étant des 7-simplexes réguliers et 2160 étant des octaèdres généralisés (des 7-croix). Enfin, son groupe de symétries (le groupe de Weyl de E8) est d'ordre 696729600 (et il est isomorphe, à un facteur 2 près, au groupe des transformations préservant une forme quadratique déployée de rang 8 sur 𝔽8).

[#3] Mon organisation BitTorrent, basée sur XBT est d'ailleurs épouvantablement bordélique, mal foutue, et probablement bourrée de trous de sécurité inquiétants. Mais je n'ai jamais réussi à trouver un tracker et client BitTorrent qui me satisfassent (notamment, sans PHP), à utiliser en ligne de commande (sur des machines qui sont essentiellement des serveurs) ; si quelqu'un a des suggestions, je suis preneur. Je devrais peut-être essayer la combinaison opentracker et rTorrent, ce sera peut-être plus agréable que l'horreur que j'ai actuellement.

[#4] En principe c'est très facile : on veut calculer Mt, pour M une transformation orthogonale directe, avec t variant de 0 à 1 : on calcule une matrice P de vecteurs-propres de sorte que D:=P·M·P−1 soit diagonale, et on calcule P−1·Dt·P pour différentes valeurs de t. Le problème est que M peut avoir la valeur-propre −1, auquel cas (−1)t a un problème de détermination (si on ne fait pas attention, on va se retrouver avec une matrice complexe et pas une matrice orthogonale réelle comme on le veut) : il faut donc trouver une base orthogonale de l'espace propre de −1 (et commencer par en trouver une base réelle, parce que les approximations numériques peuvent faire que le calcul initial donne des résultats complexes), puis fabriquer une matrice diagonale par blocs 2×2 de rotation d'angle 2π·t, bref, c'est lourdingue d'avoir quelque chose d'un peu robuste numériquement.

↑Entry #1988 [older|newer] / ↑Entrée #1988 [précédente|suivante]

Recent entries / Entrées récentesIndex of all entries / Index de toutes les entrées