Calcul mathématique avec Sage Clément PERNET Grenoble Université Stage Liesse, 3 mai 2013
Plan 1 Présentation générale 2
Définition Sage est un logiciel libre de calcul mathématique Objectif Alternative viable, libre et de qualité à Maple, Magma, Matlab et Mathematica : Quelle confiance avoir en un résultat calculé par un code non public? Puissance et pérennité du modèle de développement contributif. Coût des licences propriétaires
& Langage Python Pour l utilisateur : Python + Maths n exige pas d apprendre un nouveau langage largement adopté pour le calcul scientifique Pour le développement : Pyhton + Cython souplesse et efficacité du développement compilation Python C des parties critiques Inter-connection de bibliothèques
Apparence Ligne de commande Interface graphique Web
Apparence Ligne de commande toutes les fonctionnalités saisie des commandes lignes à lignes ou import d un fichier de code : load "monfichier.sage" Notebook Intégré dans un navigateur mise en forme L A T E X intégration des graphiques 2D, 3D, applets interractifs partage/publication de feuilles de travail
Sage, c est... 1 Une distribution des meilleures bibliothèques et logiciels mathématiques spécialisés (plus de 80 paquetages) Arithmétique Algèbre commutative Algèbre linéaire Cryptographie Factorisation Théorie des groupes Combinatoire Théorie des graphes Théorie des nombres Calcul numérique Calcul symbolique Statistiques Interface graphique Tracé de graphiques Couche réseau Base de donnée Langage de programmation GMP, MPFR, Givaro, MPFI PolyBoRi, SINGULAR (libsingular) LinBox, M4RI, IML, fplll GnuTLS, PyCrypto FlintQS, ECM GAP Symmetrica, sage-combinat NetworkX PARI, NTL, Flint, mwrank, eclib GSL, Numpy, Scipy, ATLAS Maxima, Sympy, Pynac R Sage Notebook, jsmath, Moin wiki, IPython Matplotlib, Tachyon, libgd, JMol Twisted ZODB, SQLite, SQLAlchemy, Python pickle Python, Cython (compiled)
Sage, c est... 2 Une bibliothèque à part entière Plus d 1M de lignes de code principalement Python et Cython initialement focalisé autour de la théorie des nombres désormais couvre tout les spectre du calcul mathématique (certaines implantations ne se trouvent nulle part ailleurs). 3 Une interface avec la plupart des logiciels (libre ou non) de calcul mathématique : Magma,Maple,Mathematica, Matlab, Gap, Pari/GP,...
Développement du logiciel Un modèle de développement inspiré des publications scientifiques : Plus de 150 contributeurs, environs 30 par release Chaque nouveau morceau de code est 1 proposé par son auteur 2 lu, testé et validé par un référé 3 éventuellement intégré dans la release suivante Tests de régression automatiques et documentation (doctests Python ) Confiance dans un calcul mathématique fourni par un logiciel Standards de qualité élévés Inspection du source libre et facilitée Algorithmes probabilistes uniquement utilisés à la demande (mode proof=false)
Comment utiliser Sage Sur son ordinateur : en terminal ou en notebook installé à partir de binaires ou compilé à partir du source : http://sagemath.org Installation sur un serveur une machine l exécute connexion distante par le navigateur web autant de session que d utilisateurs Ressources en ligne : serveurs publics Notebook standard : http://sagenb.org 1 seule cellule : http://aleph.sagemath.org
Sage est un logiciel libre de calcul mathématique s appuyant sur le langage de programmation Python. Ses auteurs, une communauté internationale de centaines d enseignants et de chercheurs, se sont donné pour mission de fournir une alternative viable aux logiciels Magma, Maple, Mathematica et Matlab. Sage fait appel pour cela à de multiples logiciels libres existants, comme GAP, Maxima, PARI et diverses bibliothèques scientifiques pour Python, auxquels il ajoute des milliers de nouvelles fonctions. Il est disponible gratuitement et fonctionne sur la plupart des systèmes d exploitation usuels. Pour les lycéens, Sage est une formidable calculatrice scientifique et graphique. En premier cycle universitaire, Sage assiste efficacement l étudiant dans ses calculs en analyse, en algèbre linéaire, etc. Pour la suite du parcours universitaire et le monde de la recherche, Sage implante les algorithmes les plus récents dans diverses branches des mathématiques. De ce fait, de nombreuses universités enseignent Sage dès le premier cycle pour les travaux pratiques et les projets. Ce livre est le premier ouvrage généraliste sur Sage, toutes langues confondues. Coécrit par des enseignants et chercheurs intervenant à tous les niveaux (IUT, classes préparatoires, licence, master, doctorat), il met l accent sur les mathématiques sous-jacentes à une bonne compréhension du logiciel. En cela, il correspond plus à un cours de mathématiques effectives illustré par des exemples avec Sage qu à un mode d emploi ou un manuel de référence. La première partie est accessible aux élèves de licence. Le contenu des parties suivantes s inspire du programme de l épreuve de modélisation de l agrégation de mathématiques. Ce livre est diffusé sous licence libre Creative Commons. Il peut être téléchargé gratuitement ou imprimé à la demande à prix coûtant depuis c b a http://sagebook.gforge.inria.fr/ Ressources bibliographiques Sur le site http://sagemath.org/help.html Documentation, tutoriaux, support de cours, etc Forum de discussion (utilisateurs, développeurs,...) Le livre Calcul Mathématique avec Sage A. Casamayou N. Cohen G. Connan T. Dumont L. Fousse F. Maltey Calcul mathématique avec Sage M. Meulien M. Mezzarobba C. Pernet N. M. Thiéry P. Zimmermann Calcul mathématique avec SAGE http://sagebook.gforge.inria.fr/ license libre CC by SA (bientôt) imprimable à la demande (amazon) en exclusivité pour vous ici une version 1.1β
Plan 1 Présentation générale 2
En mode terminal pour commencer : pernet@ensipc20:~$ sage ---------------------------------------------------------------------- Sage Version 5.8, Release Date: 2013-03-15 Type "notebook()" for the browser-based notebook interface. Type "help()" for help. ---------------------------------------------------------------------- sage: 2+1/3 7/3 Sage connaît les rationnels (contrairement à python) pernet@ensipc20:~$ python Python 2.7.3 (default, Aug 1 2012, 05:14:39) [GCC 4.6.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> 2+1/3 2
sage: n=1234567890987654321 sage: factor(n) 3^2 * 7 * 19 * 928163 * 1111211111 sage: n.factor() 3^2 * 7 * 19 * 928163 * 1111211111
Liste des méthodes applicables sur un objet : <TAB> sage: n.<tab> Display all 101 possibilities? (y or n) n.n n.kronecker n.abs n.lcm n.additive_order n.leading_coefficient n.base_extend n.list n.base_ring n.log n.binary n.mod n.binomial n.multifactorial n.bits n.multiplicative_order n.cartesian_product n.n n.category n.nbits n.ceil n.ndigits n.conjugate n.next_prime... sage: n.fact<tab> n.factor n.factorial
Documentation et inspection de code Calqué sur les docstring Python : Documentation et exemple d utilisation sage: n.is_prime? Intégralité du code (incluant documentation et examples) sage: n.is_prime??
Le notebook C est l interface graphique : Intégrée dans un navigateur Web Feuilles de calcul Mise en forme post-script Intégration des graphiques Animations sage: notebook() The notebook files are stored in: sage_notebook.sagenb ************************************************** * * * Open your web browser to http://localhost:8080 * * * ************************************************** Executing twistd --pidfile="sage_notebook.sagenb/sagenb.pid" - 2013-04-30 11:12:11+0200 [-] Log opened. 2013-04-30 11:12:11+0200 [-] twistd 12.3.0 (/home/pernet/logici 2013-04-30 11:12:11+0200 [-] reactor class: twisted.internet.ep 2013-04-30 11:12:11+0200 [-] QuietSite starting on 8080...
Le notebook
La suite : démonstration interractive Lancez sage et le notebook sage: notebook() ouvrez la feuille PremiersPas.sws (sur ensiwiki.imag.fr)