Sage : le couteau suisse des maths pour Linux

Magazine
Marque
Linux Pratique
Numéro
75
Mois de parution
janvier 2013
Spécialité(s)


Résumé
Vous souvenez-vous des laboratoires de mathématiques avec Maple ou Mathematica, au lycée, à la fac ou en école d'ingénieur ? Calcul, manipulation de matrices, dessin de fonctions... Sage est un logiciel qui vous propose une expérience et des fonctionnalités similaires à ses concurrents, mais dans le monde de l'open source. Découverte de la version 5.

Body

http://www.cbp.ens-lyon.fr/emmanuel.quemener/dokuwiki/doku.php?id=sagemath4debian


 1. Introduction

Sorti pour la première fois en 2005, Sage est un ensemble d'outils mathématiques articulés autour d'un environnement en Python. L'idée du projet est d'incorporer les bibliothèques mathématiques existantes quand cela est possible au sein d'une interface unifiée, ce qui en fait un ensemble modulaire. Son ambition est de proposer une alternative aux solutions propriétaires comme Maple, Magma ou Mathematica. Il est disponible sous Mac, Linux et en machine virtuelle sous Windows.

2. Installation

Étant une collection de nombreux outils mathématiques différents, la compilation de Sage est apparemment épineuse au point qu'il n'y ait d'après le site du projet qu'un paquet binaire pour la distribution Ubuntu, disponible via un PPA. En console, en root, on tape :

apt-add-repository -y ppa:aims/sagemath

apt-get update

apt-get install sagemath-upstream-binary

Sous Debian, plutôt que de tenter l'utilisation du PPA ci-dessus, on peut se tourner vers la compilation des sources. Attention néanmoins : cette étape peut prendre plusieurs heures en fonction de votre processeur et du nombre de cœurs que vous dédiez à la tâche (testé sur une nuit sur un Core 2 Duo avec deux cœurs utilisés).

Pour commencer, on installe les outils nécessaires à la compilation et à l'utilisation de toutes les fonctionnalités de Sage. Dans une console, en root :

apt-get install -y build-essential m4 gfortran readline-common libreadline-dev texlive xpdf evince tk-dev tcl-dev

On se place dans le répertoire voulu pour télécharger les sources :

cd /dossier/de/téléchargement

wget http://www-ftp.lip6.fr/pub/math/sagemath/src/sage-5.3.tar

On se déplace ensuite dans le dossier où l'on souhaite installer Sage et on décompresse l'archive :

cd /dossier/installation

tar xvf /root/sage-5.3.tar

Passons à la compilation :

ln -sf sage-5.3 sage

cd sage

export SAGE_MATPLOTLIB_GUI='yes'

export MAKE="make -j2"

export SAGE_CHECK="yes"

make

Les utilisateurs d'Arch Linux sont assez bien lotis pour installer Sage sur leur système : un paquet compilé à partir des sources de la version 5.3 existe dans le dépôt Community. Dans une console, il suffit de taper la commande magique :

sudo pacman -S sage-mathematics

et de laisser travailler Pacman, qui installera les dépendances nécessaires. Prévoyez 2 Go d'espace libre pour l'installation. Un paquet est également disponible sous Mandriva.

3. Les interfaces

3.1 Le shell

C'est l'usage le plus simple de Sage. Il suffit de taper la commande sage pour lancer le programme en console (Fig. 1). Le programme ouvre un navigateur Internet pour le rendu des graphiques.

sage-console

Fig 1 : Sage peut s'utiliser simplement en ligne de commandes... En tout cas, tant qu'il n'y a rien à représenter graphiquement...

3.2 Le navigateur

Une option plus confortable. Sur Ubuntu, il suffit de taper « Sage » dans la barre de recherche globale, puis de cliquer sur le bouton du binaire. Autre solution : dans une console, lancez sage, puis tapez la commande notebook() et validez. Le navigateur Internet s'ouvre alors (Fig. 2). Cliquez sur New Worksheet pour démarrer dans un nouveau fichier.

sage-navigateur

Fig 2 : L'interface principale de Sage s'affiche dans votre navigateur Internet préféré. La représentation des fonctions et diagrammes repose sur Java.

3.3 Cantor

Cette application du projet KDE Edu peut servir d'interface à de nombreux programmes mathématiques, dont Sage. Il suffit de l'installer et d'ajouter un binaire spécifique. Sous Ubuntu, en root :

apt-get install cantor cantor-backend-sage

Le résultat est une interface proche de celle du navigateur (Fig. 3), mais mieux intégrée à un environnement de bureau, avec plus de menus et des volets ré-arrangeables. Pour valider une ligne dans le fichier, on appuie sur [Shift]+[Entrée].

sage-cantor

Fig 3 : Cantor sert d'interface à de nombreux logiciels scientifiques, dont Sage, à l'aide des bibliothèques spécifiques à KDE.

Les modules

Sage inclut près d'une centaine de paquets mathématiques au rôle spécifique. Parmi les plus connus, on citera Maxima et Singular pour l'algèbre, PARI/GP pour la théorie des nombres, ATLAS pour l'algèbre linéaire, GAP pour l'algorithmique algébrique, ou encore R pour l'analyse statistique.

Pour afficher les listes des paquets standards ou optionnels installés ou non, on tapera respectivement en console (et non dans Sage en console) :

sage --standard

ou

sage --optional

Si l'on a besoin d'un module non encore installé sur le système, on tape dans une nouvelle console :

sage -i paquet

4. Fonctions de base

4.1 Calcul

Un calcul classique s'écrit de manière normale, comme sur les autres logiciels du genre ou sur les calculatrices scolaires, puis on appuie sur la touche [Entrée] :

2+2

4

À noter que comme dans la plupart des logiciels de mathématiques (et scientifiques de manière plus large), la virgule est symbolisée par un point :

4.2/9.76

0.430327868852459

Pour calculer les 100 premières décimales de Pi, une petite formule s'impose :

N(pi, digits=100)

4.2 Fonctions et équations

Pour effectuer des opérations sur les fonctions, on définit d'abord une variable symbolique :

x = var('x')

Puis on entre la fonction et l'opération voulues, par exemple intégrer la fonction racine de x :

integrate(sqrt(x),x)

2/3*x^(3/2)

Pour résoudre une équation simple, on utilise la fonction solve. Dans Sage, le symbole de l'égalité est représenté par == :

solve(x^2+x==1,x)

nous donne les solutions :

[x == -1/2*sqrt(5) - 1/2, x == 1/2*sqrt(5) - 1/2]

À noter que les retours du logiciel peuvent comporter des espaces entre les différents composants d'une expression ; vous pouvez faire de même dans vos expressions pour faciliter la lecture de votre feuille de calcul.

4.3 Matrices

La création de matrices et les opérations sur celles-ci sont aisées à réaliser. Le signe = est utilisé pour assigner une lettre à une expression. Pour définir une matrice, on écrira par exemple :

A = matrix([[1,2,3],[3,2,1],[1,1,1]])

Pour un vecteur, on utilise la même syntaxe :

w = vector([1,1,-4])

Il suffit alors d'utiliser les noms donnés à chaque élément pour réaliser une opération :

w*A

(0, 0, 0)

sage: A*w

(-9, 1, -2)

4.4 Dessin 2D

Dans l'interface navigateur, Sage peut tracer des lignes, des cercles, des polygones, mais aussi tout type de fonctions. Par exemple :

circle((0,0), 1)

produit un cercle de rayon 1, centré sur l'origine.

On peut par exemple changer la couleur du trait :

rgbcolor=(1,1,0)

donne du jaune.

Pour dessiner une figure pleine, on ajoutera l'option et la valeur fill=True.

Une fonction de base se modélise ainsi :

x = var('x')

plot(x^2, (x,-1,1))

On demande ainsi le rendu de la fonction carrée de x, pour x allant de -1 à 1.

sage-2D

Fig 4 : Exemple de rendu graphique d'une fonction dans Sage.

4.5 Dessin 3D

La commande plot a sa contrepartie en relief, plot3d. Voyons un exemple de tracé.

On définit deux variables, x et y :

x = var('x')

y = var('y')

Puis, on crée une fonction :

def f(x,y): return sin(x-y)*y*cos(x)

Enfin, on trace notre fonction en relief :

plot3d(f(x,y),(x,-3,3),(y,-3,3))

sage-3D

Fig 5 : On peut faire pivoter une figure en relief en maintenant appuyé le bouton gauche de la souris.

Il est possible d'agir sur les figures tracées directement avec la souris (glisser-déposer avec le bouton gauche). Le clic droit donne accès à quantité d'options : couleur, axe de vue, zoom, rotation... En bas à droite de la modélisation, Get Image permet de réaliser une capture de la figure pour l'utiliser ailleurs.

Partage des feuilles

Quand vous êtes dans l'interface navigateur, vous pouvez enregistrer votre feuille de travail en cliquant sur Save. Pour partager vos travaux, l'onglet Publish vous y aide. Il vous propose une URL que vous pouvez communiquer à vos collaborateurs. Par défaut, les feuilles de travail sont stockées en local.

sage-partage

Les feuilles de travail sous Sage, une fois enregistrées, peuvent être partagées en ligne. Un exemple ici avec l'université de Leiden.

4.6 Obtenir de l'aide

Pour obtenir des informations sur une fonction dans Sage, on tape le nom de la fonction suivi d'un point d'interrogation :

tan?

Cette commande vous affiche le nom de la fonction (ici tangente), les fichiers rattachés à cette fonction, ou encore des exemples d'utilisation.

Le logiciel gère aussi l'auto-complétion. Écrivez les premières lettres de votre fonction, puis tapez la touche [Tab], qui vous affichera une liste des commandes possibles.

Pour plus de détails, en haut du notebook, l'onglet Help amène une page avec des liens vers des documents d'aide.

Conclusion

Nous n'avons fait que gratter la surface de Sage. En tant qu'alternative aux Maple et autre Mathematica, Sage remplit certainement son pari, avec un fonctionnement similaire à ces solutions. En termes de performances, le projet n'a rien à leur envier, selon ses concepteurs (voir Pour aller plus loin). On regrettera cependant que l'installation de la suite logicielle peut s'avérer difficile pour les distributions non dotées d'un paquet binaire dans leurs dépôts.

Pour aller plus loin

http://www.sagemath.org/ 

Le site du projet Sage. On y trouve des supports de présentation de Sage, les sources et les indications d'installation selon la plateforme, ou encore des cartes de référence rapide pour divers usages.

http://www.cbp.ens-lyon.fr/emmanuel.quemener/dokuwiki/doku.php?id=sagemath4debian

Quelques précisions supplémentaires pour l'installation de Sage à partir des sources sur Debian Squeeze.

http://www.sagemath.org/doc/tutorial/index.html

Un tutoriel pas-à-pas pour Sage. Divers usages avancés y sont décrits.

http://www.sagemath.org/links-components.html

Le détail des paquets contenus dans Sage, avec un lien de référence pour chacun.

http://edu.kde.org/cantor/

Le site de l'application Cantor, pour en savoir plus sur les autres logiciels mathématiques supportés et des fonctionnalités avancées.

http://www.sagemath.org/tour-benchmarks.html

Des tests de performance sur la version 4 de Sage.




Article rédigé par

Par le(s) même(s) auteur(s)

I3, le « tiling window manager » pour tous

Magazine
Marque
Linux Pratique
Numéro
74
Mois de parution
novembre 2012
Spécialité(s)
Résumé

Et si vous utilisiez un gestionnaire de fenêtres minimaliste, comme les power users ? Mais vous vous dites qu'il faut apprendre un langage de programmation pour le configurer, que cela prend un temps fou... Qu'à cela ne tienne, i3 est un gestionnaire avec des fichiers de configuration en langage naturel et aux raccourcis clavier intuitifs. Présentation de la version 4.2.

Le dessin assisté par ordinateur sous Linux avec LibreCAD et FreeCAD

Magazine
Marque
Linux Pratique
Numéro
74
Mois de parution
novembre 2012
Spécialité(s)
Résumé
En architecture ou en mécanique, les logiciels de dessin assisté par ordinateur en 2D et en 3D sont indispensables. À côté des poids lourds du secteur comme CATIA, AutoCAD ou SolidWorks, il existe des alternatives pour Linux. Petit tour d'horizon de quelques fonctionnalités de LibreCAD pour la 2D et de FreeCAD pour la 3D.

Quod Libet, la gestion musicale à votre image

Magazine
Marque
Linux Pratique
Numéro
73
Mois de parution
septembre 2012
Spécialité(s)
Résumé
Votre collection de musique dépasse allègrement les dix mille titres, et vous êtes confronté à un dilemme : quel gestionnaire musical choisir ? Vous composez avec les défauts des uns et des autres... Quod Libet vous laisse gérer votre musique à votre manière, sans sacrifier la rapidité.

Les derniers articles Premiums

Les derniers articles Premium

Cryptographie : débuter par la pratique grâce à picoCTF

Magazine
Marque
Contenu Premium
Spécialité(s)
Résumé

L’apprentissage de la cryptographie n’est pas toujours évident lorsqu’on souhaite le faire par la pratique. Lorsque l’on débute, il existe cependant des challenges accessibles qui permettent de découvrir ce monde passionnant sans avoir de connaissances mathématiques approfondies en la matière. C’est le cas de picoCTF, qui propose une série d’épreuves en cryptographie avec une difficulté progressive et à destination des débutants !

Game & Watch : utilisons judicieusement la mémoire

Magazine
Marque
Contenu Premium
Spécialité(s)
Résumé

Au terme de l'article précédent [1] concernant la transformation de la console Nintendo Game & Watch en plateforme de développement, nous nous sommes heurtés à un problème : les 128 Ko de flash intégrés au microcontrôleur STM32 sont une ressource précieuse, car en quantité réduite. Mais heureusement pour nous, le STM32H7B0 dispose d'une mémoire vive de taille conséquente (~ 1,2 Mo) et se trouve être connecté à une flash externe QSPI offrant autant d'espace. Pour pouvoir développer des codes plus étoffés, nous devons apprendre à utiliser ces deux ressources.

Raspberry Pi Pico : PIO, DMA et mémoire flash

Magazine
Marque
Contenu Premium
Spécialité(s)
Résumé

Le microcontrôleur RP2040 équipant la Pico est une petite merveille et malgré l'absence de connectivité wifi ou Bluetooth, l'étendue des fonctionnalités intégrées reste très impressionnante. Nous avons abordé le sujet du sous-système PIO dans un précédent article [1], mais celui-ci n'était qu'une découverte de la fonctionnalité. Il est temps à présent de pousser plus loin nos expérimentations en mêlant plusieurs ressources à notre disposition : PIO, DMA et accès à la flash QSPI.

Abonnez-vous maintenant

et profitez de tous les contenus en illimité

Je découvre les offres

Déjà abonné ? Connectez-vous