Calcul mathématique avec Sage

publicité
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)
Téléchargement