Introduction au Calcul formel

Algorithmes et complexité

Frédéric Chyzak et Éric Schost

Présentation

Le calcul formel --- computer algebra en anglais --- vise à formaliser et à donner une nature algorithmique au calcul sur des représentations informatiques finies d'objets mathématiques. Calculer, c'est en fait construire une telle représentation, en respectant une mécanique fixée à l'avance et uniforme sur toute une classe d'objets.

L'objectif principal de cette introduction au calcul formel sera d'en montrer les algorithmes de base, avec, à chaque fois, des exemples d'applications. Les algorithmes étudiés permettrons par exemple de répondre à des questions telles :

Par les techniques utilisées (souvent, de l'algèbre) et les objectifs visés (algorithmiser des questions mathématiques), le cours s'adresse à un public d'informaticiens mathématiquement réceptifs. Les compléments mathématiques nécessaires, limités, seront faits lorsque le besoin s'en fera sentir.

Déroulement du cours

Dans les neuf premiers blocs, les algorithme étudiés en cours seront implantés en TD puis exploités pour la résolution de problèmes. Le cours se prolongera par des projets plus ambitieux sur quatre blocs, qui pourront demander l'implantation et l'utilisation de plusieurs algorithmes. Le système de calcul formel utilisé sera Magma.

Contenu du cours

Le cours abordera les sujets et algorithmes suivants, traitant tantôt de structures de données de bas niveau, tantôt de représentations d'objets mathématiques de haut niveau. (L'ordre qui suit n'est pas significatif.)
  1. entiers, polynômes, séries, algorithme d'Euclide, résultants ;

    Les opérations élémentaires, somme, produit et division d'entiers et de polynômes, sont au centre de la plupart des algorithmes de calcul formel. On présentera quelques solutions classiques pour la multiplication rapide, culminant dans les algorithmes de type FFT (Fast Fourier Transform). On verra ensuite un premier algorithme d'élimination, l'algorithme d'Euclide, qui s'applique aussi bien aux entiers qu'aux polynômes. Ses applications sont nombreuses, on verra notamment les approximants de Padé et les calculs de résultants.

  2. algèbre linéaire (produit de matrices, algorithme de Gauss et optimisations) ;

    Les questions relatives aux opérations matricielles sont extrêmement variées. D'une part, on montrera comment la multiplication, l'inversion, le calcul du polynôme caractéristique, sont de complexité équivalente, lorsqu'on traite des matrices à coefficients dans un corps. On introduira la notion d'exposant de l'algèbre linéaire, qui vient mesurer cette complexité. On évoquera ensuite l'algorithmique de l'algèbre linéaire creuse, qui permet de traiter des matrices de taille très conséquente, à plusieurs centaines de milliers d'entrées. Enfin, on traitera des questions relatives aux matrices ayant d'autres types de coefficients, notamment des entrées entières, des séries formelles, voire des nombres flottants.

  3. bases de Gröbner et algorithme de Buchberger, résolution de systèmes polynomiaux ;

    Les bases de Gröbner fournissent une extension de l'algorithme d'Euclide pour le cas de polynômes en plusieurs variables. L'algorithme de Buchberger pour le calcul de bases de Gröbner fournit une procédure d'élimination pour le cas de plusieurs variables. Cette approche algorithmique importante a de nombreuses applications en géométrie (notamment en géométrie algébrique), par exemple à la démonstration semi-automatique de théorèmes de géométrie et à la recherche d'équations implicites de courbes algébriques paramétrées. Une autre application très importante est l'utilisation des bases de Gröbner pour la résolution de systèmes de polynômes en plusieurs variables. La contrepartie de la large applicabilité de cette théorie est sa complexité élevée, doublement exponentielle, au moins dans le cas le pire.

  4. algorithme de réduction de réseaux (LLL) ;

    Étant donnés des vecteurs V1, ..., Vm dans l'espace Zn, on appelle réseau engendré par V1, ..., Vm l'ensemble de leurs combinaisons linéaires à coefficients entiers. Le problème de trouver le plus court vecteur dans un réseau est NP-dur, il est donc peu vraisemblable que l'on dispose prochainement d'un algorithme efficace pour le traiter. Si l'on relâche la contrainte d'optimalité, il devient possible de trouver un vecteur "assez" court en temps polynomial, en utilisant l'algorithme LLL (pour "Lenstra, Lenstra, Lovasz"). Ses applications sont extrêmement nombreuses et vont de la théorie des nombres aux problèmes de sac à dos, en passant par la factorisation des polynômes.

  5. intégration symbolique (des fractions rationnelles à l'algorithme de Risch) ;

    À la main, le calcul d'une intégrale définie passe souvent par la recherche d'une primitive. Il en est de même en calcul formel, on l'on recherche de plus une forme explicite. Le cas de base, l'intégration des fractions rationnelles, sera traité en détail, puis l'algorithme de Risch sera abordé dans ses grandes lignes.

  6. équations différentielles linéaires (solutions polynomiales, rationnelles, exponentielles, calculs sur leurs solutions).

    Le calcul formel s'intéresse aussi à la résolution en formules explicites d'équations différentielles ou à l'inverse, à la manipulation de solutions données implicitement comme solutions d'équations différentielles. On s'intéressera dans ce cours tout particulièrement au cas des équations différentielles linéaires. On verra tout d'abord comment en rechercher les solutions polynomiales, rationnelles et exponentielles, puis des méthodes de manipulation permettant le calcul d'intégrales définies paramétrées.

Bibliographie

À propos du système de calcul formel Magma. Ouvrages généraux sur le calcul formel. Les deux premiers sont des livres de cours. Le troisième est un cours en ligne qui nous plaît bien, quoiqu'il aille plus loin que ce que nous aurons le temps d'aborder. Le dernier est une collection de textes d'exposition sur plusieurs sujets du calcul formel. Le livre qui suit est dans l'ensemble technique, mais son chapitre 16 complète bien les ouvrages précédents sur le sujet de l'algèbre linéaire. Ouvrages sur les bases de Gröbner. Les deux premiers sont généraux. Le dernier débute par une première partie ("Tutorials") qui est une collection de chapitres d'expositions sur des extensions non commutatives des bases de Gröbner (utile éventuellement pour certains projets). Ouvrage sur l'intégration symbolique. Enfin, ouvrage d'algèbre. Les parties I et II contiennent des rappels d'algèbre qui pourront être utiles.

Exemples de projets envisagés

Chaque sujet aborde une extension d'un des points du cours. Dans chaque cas, il s'agira d'étudier un texte présentant un algorithme et de l'implanter. Des exemples d'applications demandant des calculs "difficiles" seront proposés pour valider les programmes.
Frédéric Chyzak (email/web)
Éric Schost (email/web)
Last modified: Mon Sep 29 13:49:44 CEST 2003