Systèmes de calcul et SageMath#
Les systèmes de calcul (formel)#
Composants d’un Système de Calcul Formel (Computer Algebra System)#
Arithmétique: entiers longs, corps finis, …
Polynômes, fractions rationnelles, matrices, …
Sommations, intégration, dérivation, limites symbolique
Solveurs (linéaire, polynômiaux, équations différentielles, …)
Lien calcul numérique
Bases de données (nombres premiers, groupes classiques, …)
Langage de programmation et structures de données Multiparadigme: impératif / objet / fonctionnel Pourquoi programmer?
Gestion de mémoire
Interface avec d’autres systèmes
Interface utilisateur
Quelques systèmes de calcul#
Systèmes généralistes:
Systèmes spécialisés:
Magma
GAP (groupes)
Linbox (algèbre linéaire exacte)
Pari, NTL, … (théorie des nombres)
R (statistiques)
Macsima (calcul symbolique, libre)
Matlab (calcul numérique)
Scilab (calcul numérique)
Python scientifique (calcul numérique)
Quelques Caractéristiques communes#
Représentation arborescentes des objets, notion d’opérandes#
var('a,b,c,d,e,f,g')
F = a + b * c + d * e * sin(f)^g
F.operands()
Gestion automatique de la mémoire#
Que se passe-t’il lorsque l’on fait:
G = F
F = 0
G = 1
(comptage de références ou glaneur de cellule)
Structures de données#
Listes, ensembles et tables d’association:
liste = [sin(1+x), 3, sin(1+x)]; liste
t = (sin(1+x), 3, sin(1+x)); t
liste[1] = 4;
liste
t[1] = 4;
t
ensemble = { sin(1+x), 3, sin(1+x) }; ensemble
tableAssociative = { sin(1+x) : 1, 3 : 2 }
tableAssociative[sin(1+x)]
Langage de programmation#
Exécution conditionnelle, boucles, fonctions, …
Les origines de SageMath#
Années 50:#
Début de l’utilisation de l’ordinateur comme outil pour la recherche en mathématique:
Exploration informatique (analogue du télescope des astronomes)
Démonstration du théorème des quatre couleurs, …
Années 80-90:#
Besoin de mise en commun des développements
Besoin de langages de programmation de plus haut niveau
Apparition de systèmes spécialisés libres (GAP, …)
Apparition de systèmes généralistes commerciaux (Maple, …)
Utilisation pour l’enseignement
Années 2000:#
Besoin d’un système généraliste libre
Besoin d’un système basé sur un langage de programmation généraliste (écosystème, outils de développements, paradigmes de programmation modernes, …)
Besoin d’un système réutilisant et combinant les composants spécialisés libres (ex. Python scientifique)
2005: William Stein lance le projet
SageMath
2024:
SageMath
est développé par des centaines d’enseignants, chercheurs, ingénieurs dans le monde entier