Kpsilon : conception et mise en œuvre des fondations d'un système de calcul formel en C++

Robert de Massy, Thomas (2024). « Kpsilon : conception et mise en œuvre des fondations d'un système de calcul formel en C++ » Mémoire. Montréal (Québec, Canada), Université du Québec à Montréal, Maîtrise en informatique.

Fichier(s) associé(s) à ce document :
[img]
Prévisualisation
PDF
Télécharger (10MB)

Résumé

En mathématiques et en informatique, il existe deux principales méthodes de calcul, soit le calcul numérique et le calcul symbolique. Le calcul numérique repose sur l’utilisation d’algorithmes, issus de l’analyse numérique, permettant la résolution de problèmes mathématiques — par exemple, calcul d’intégrales et résolution d’équations différentielles. Or, pour de nombreux problèmes, les résultats produits, même lorsque précis, ne sont en fait que des approximations. Le calcul symbolique, quant à lui, permet de retourner des résultats exacts par manipulations symboliques d’expressions mathématiques — si celles-ci peuvent être résolues analytiquement. Ces manipulations symboliques peuvent être, entre autres, sous forme de simplification, de réduction de fraction, de changement de forme, de factorisation, de différentiation et d’intégration indéfinie. Les logiciels utilisant le calcul symbolique sont appelés des systèmes de calcul formel (computer algebra systems). Dans ce mémoire, nous nous intéressons plus spécifiquement à la conception et à la mise en œuvre des fondations d’un tel système. Pour ce faire, nous avons conçu et mis en œuvre un langage d’expressions arithmétiques et son interpréteur — à l’aide du compilateur de compilateur ANTLR 4. Ce langage supporte l’arithmétique à précision arbitraire, c.-à-d., à des précisions limitées uniquement par la mémoire disponible. Différents types multiprécision sont disponibles, et ce, au moyen de bibliothèques à licence libre de droits ou LGPL, tant des bibliothèques multiprécision en base 2 (GMP, GNU MPFR) qu’en base 10 (Boost.Multiprecision, Mpdecimal). Pour la gestion des allocations mémoire, nous avons utilisé le ramasse-miettes Boehm-Demers-Weiser, qui se charge, en arrière-plan, de libérer la mémoire allouée aux instances d’objets qui ne sont plus utilisés. Un environnement de développement a aussi été mis en place pour vérifier la qualité du code C++. Pour valider notre travail, nous avons intégré à Kpsilon différentes fonctionnalités permettant de vérifier les résultats — entre autres, quant à la précision des résultats—et d’évaluer les performances ainsi que la consommation mémoire, notamment pour assurer que le ramasse-miettes fonctionne correctement et satisfait un certain nombre d’exigences que nous avions fixées et que nous décrivons. _____________________________________________________________________________ MOTS-CLÉS DE L’AUTEUR : système de calcul formel, calcul symbolique, arithmétique à précision arbitraire, langage de programmation, interpréteur, compilateur de compilateur, ramasse-miettes, garbage collector, C++.

Type: Mémoire accepté
Informations complémentaires: Fichier numérique reçu et enrichi en format PDF/A.
Directeur de thèse: Tremblay, Guy
Mots-clés ou Sujets: Systèmes de calcul formel / Calcul symbolique / Langages de programmation / Logiciels multiplateformes / C++ (Langage de programmation)
Unité d'appartenance: Faculté des sciences > Département d'informatique
Déposé par: Service des bibliothèques
Date de dépôt: 20 janv. 2025 14:08
Dernière modification: 20 janv. 2025 14:08
Adresse URL : http://archipel.uqam.ca/id/eprint/18441

Statistiques

Voir les statistiques sur cinq ans...