Présentation générale Premiers pas Calcul mathématique avec Sage Clément P ERNET Grenoble Université Stage Liesse, 3 mai 2013 Présentation générale Plan 1 Présentation générale 2 Premiers pas Premiers pas Présentation générale Premiers pas 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 Présentation générale Premiers pas & 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 Présentation générale Premiers pas Apparence Ligne de commande Interface graphique Web Présentation générale Premiers pas 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 LATEX intégration des graphiques 2D, 3D, applets interractifs partage/publication de feuilles de travail Présentation générale Premiers pas 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) Présentation générale Premiers pas 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,... Présentation générale Premiers pas 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 2 3 proposé par son auteur lu, testé et validé par un référé é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) Présentation générale Premiers pas 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 Présentation générale Premiers pas Ressources bibliographiques Sur le site http://sagemath.org/help.html Documentation, tutoriaux, support de cours, etc Forum de discussion (utilisateurs, développeurs,...) 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 http://sagebook.gforge.inria.fr/ Calcul mathématique avec Sage 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. A. Casamayou N. Cohen G. Connan T. Dumont L. Fousse F. Maltey M. Meulien M. Mezzarobba C. Pernet N. M. Thiéry P. Zimmermann Le livre Calcul Mathématique avec Sage Calcul mathématique avec SAGE http://sagebook.gforge.inria.fr/ license libre CC by SA (bientôt) imprimable à la demande (amazon) cba en exclusivité pour vous ici une version 1.1β Présentation générale Plan 1 Présentation générale 2 Premiers pas Premiers pas Présentation générale Premiers pas Premiers pas 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 Présentation générale Premiers pas sage: sage: 3^2 * sage: 3^2 * n=1234567890987654321 factor(n) 7 * 19 * 928163 * 1111211111 n.factor() 7 * 19 * 928163 * 1111211111 Premiers pas Présentation générale Premiers pas Liste des méthodes applicables sur un objet : <TAB> sage: n.<TAB> Display all 101 possibilities? n.N n.abs n.additive_order n.base_extend n.base_ring n.binary n.binomial n.bits n.cartesian_product n.category n.ceil n.conjugate ... sage: n.fact<TAB> n.factor n.factorial (y or n) n.kronecker n.lcm n.leading_coefficient n.list n.log n.mod n.multifactorial n.multiplicative_order n.n n.nbits n.ndigits n.next_prime Présentation générale Premiers pas 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?? Présentation générale Premiers pas 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 ... Présentation générale Le notebook Premiers pas Présentation générale Premiers pas La suite : démonstration interractive Lancez sage et le notebook sage: notebook() ouvrez la feuille PremiersPas.sws (sur ensiwiki.imag.fr)