This document is one of More SageMath Tutorials. You may edit it on github. \(\def\NN{\mathbb{N}}\) \(\def\ZZ{\mathbb{Z}}\) \(\def\QQ{\mathbb{Q}}\) \(\def\RR{\mathbb{R}}\) \(\def\CC{\mathbb{C}}\)
Systèmes de calculs 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:
- Mathematica
- Maple
- MuPAD (était pas trop cher)
- Axiom (libre)
- Sage (libre)
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¶
sage: var('a,b,c,d,e,f,g')
sage: F = a + b * c + d * e * sin(f)^g
sage: F.operands()
[sin(f)^g*d*e, b*c, a]
Gestion automatique de la mémoire¶
Que se passe-t’il lorsque l’on fait:
sage: F = 0
(comptage de références ou glaneur de cellule)
Structures de données¶
Listes, ensembles et tables d’association:
sage: liste = [sin(1+x), 3, sin(1+x)]; liste
sage: ensemble = { sin(1+x), 3, sin(1+x) }; ensemble
sage: tableAssociative = { sin(1+x) : 1, 3 : 2 }
sage: tableAssociative[3]
2
sage: tableAssociative[sin(1+x)]
1
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
- 2017:
SageMath
est développé par 300 enseignants, chercheurs, ingénieurs dans le monde entier