Sie sind auf Seite 1von 93

Tutoriel Sage

Version 5.10

The Sage Group

20 June 2013

Table des matières

1 Introduction

3

1.1 Installation

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

4

1.2 Les différentes manières d’utiliser Sage

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

4

1.3 Objectifs à long terme de Sage .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

5

2 Visite guidée

7

2.1 Affectation, égalité et arithmétique

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

7

2.2 Obtenir de l’aide

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

9

2.3 Fonctions, indentation et itération

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

10

2.4 Algèbre de base et calcul infinitésimal .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

14

2.5 Graphiques

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

19

2.6 Problèmes fréquents concernant les fonctions .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

21

2.7 Anneaux de base

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

24

2.8 Polynômes

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

25

2.9 Algèbre linéaire

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

29

2.10 Groupes finis, groupes abéliens

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

32

2.11 Théorie des nombres

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

34

2.12 Quelques mathématiques plus avancées

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

36

3 La ligne de commande interactive

 

45

3.1 Votre session Sage

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

45

3.2 Journal des entrées-sorties

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

47

3.3 Coller du texte ignore les invites .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

48

3.4 Mesure du temps d’exécution d’une commande .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

48

3.5 Erreurs et exceptions .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

50

3.6 Recherche en arrière et complétion de ligne de commande

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

51

3.7 Aide en ligne

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

52

3.8 Enregistrer et charger des objets individuellement .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

53

3.9 Enregister et recharger des sessions entières .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

55

3.10 L’interface notebook

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

56

4 Interfaces

59

4.1 GP/PARI

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

59

4.2 GAP

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

60

4.3 Singular .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

61

4.4 Maxima .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

62

5 Programmation

 

65

5.1 Charger et attacher des fichiers Sage .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

65

5.2 Écrire des programmes compilés .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

66

5.3 Scripts Python/Sage autonomes

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

67

5.4 Types de données .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

67

5.5 Listes, n-uplets et séquences

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

69

5.6 Dictionnaires

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

71

5.7

Ensembles

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

71

5.8

Itérateurs

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

72

5.9 Boucles, fonctions, structures de contrôle et comparaisons

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

73

5.10 Profilage (profiling)

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

75

6 Utiliser SageTeX

 

77

7 Postface

79

7.1 Pourquoi Python ?

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

79

7.2 Comment puis-je contribuer ?

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

81

7.3 Comment citer Sage ?

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

81

8 Annexe

 

83

8.1

Priorité des opérateurs arithmétiques binaires

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

83

9 Bibliographie

 

85

10 Index et tables

87

Bibliographie

89

Tutoriel Sage, Version 5.10

Sage est un logiciel mathématique libre destiné à la recherche et à l’enseignement en algèbre, géométrie, arithmétique, théorie des nombres, cryptographie, calcul scientifique et dans d’autres domaines apparentés. Le modèle de dévelop- pement de Sage comme ses caractéristiques techniques se distinguent par un souci extrême d’ouverture, de partage, de coopération et de collaboration : notre but est de construire la voiture, non de réinventer la roue. L’objectif général de Sage est de créer une alternative libre viable à Maple, Mathematica, Magma et MATLAB.

Ce tutoriel est la meilleure façon de se familiariser avec Sage en quelques heures. Il est disponible en versions HTML et PDF, ainsi que depuis le notebook Sage (cliquez sur Help, puis sur Tutorial pour parcourir le tutoriel de façon interactive depuis Sage).

Tutoriel Sage, Version 5.10

CHAPITRE 1

Introduction

Explorer ce tutoriel en entier devrait vous prendre au maximum trois à quatre heures. Vous pouvez le lire en version HTML ou PDF, ou encore l’explorer interactivement à l’intérieur de Sage en cliquant sur Help puis sur Tutorial depuis le notebook (il est possible que vous tombiez sur la version en anglais).

Sage est écrit en grande partie en Python, mais aucune connaissance de Python n’est nécessaire pour lire ce tutoriel. Par la suite, vous souhaiterez sans doute apprendre Python, et il existe pour cela de nombreuses ressources libres d’excellente qualité, dont [PyT] et [Dive]. Mais si ce que vous voulez est découvrir rapidement Sage, ce tutoriel est le bon endroit où commencer. Voici quelques exemples :

sage: 2 + 2 4 sage: factor(-2007) -1 * 3^2 * 223 sage: A =
sage:
2
+
2
4
sage:
factor(-2007)
-1
*
3^2
*
223
sage:
A
=
matrix(4,4,
range(16));
A
[
0
1
2
3]
[
4
5
6
7]
[
8
9
10
11]
[12
13
14
15]
sage:
factor(A.charpoly())
x^2
*
(x^2
-
30 * x
-
80)
sage:
m
=
matrix(ZZ,2,
range(4))
sage:
m[0,0]
=
m[0,0]
-
3
sage:
m
[-3
1]
[
2
3]
sage:
E
=
EllipticCurve([1,2,3,4,5]);
sage:
E
Elliptic
Curve
defined
by
y^2
+
x * y
+
3 * y
=
x^3
+
2 * x^2
+
4 * x
+
5
over
Rational
Field
sage:
E.anlist(10)
[0,
1,
1,
0,
-1,
-3,
0,
-1,
-3,
-3,
-3]
sage:
E.rank()
1
sage:
k
=
1/(sqrt(3) * I
+
3/4
+
sqrt(73) * 5/9);
k

Tutoriel Sage, Version 5.10

1/(I * sqrt(3) + 5/9 * sqrt(73) + 3/4) sage: N(k) 0.165495678130644 - 0.0521492082074256 *
1/(I * sqrt(3)
+
5/9 *
sqrt(73)
+
3/4)
sage:
N(k)
0.165495678130644
-
0.0521492082074256 * I
sage:
N(k,30)
#
30
"bits"
0.16549568
-
0.052149208 * I
sage:
latex(k)
\frac{1}{i
\,
\sqrt{3}
+
\frac{5}{9}
\,
\sqrt{73}
+
\frac{3}{4}}

1.1 Installation

Si Sage n’est pas installé sur votre ordinateur, vous pouvez essayer quelques commandes en ligne à l’adresse http ://www.sagenb.org.

Des instructions pour installer Sage sur votre ordinateur sont disponibles dans le guide d’installation (Installation Guide), dans la section documentation de la page web principale de Sage [SA]. Nous nous limiterons ici à quelques remarques.

1. La version téléchargeable de Sage vient avec ses dépendances. Autrement dit, bien que Sage utilise Python, IPy- thon, PARI, GAP, Singular, Maxima, NTL, GMP, etc., vous n’avez pas besoin de les installer séparément, ils sont fournis dans la distribution Sage. En revanche, pour utiliser certaines des fonctionnalités de Sage, par exemple Macaulay ou KASH, il vous faudra d’abord installer le paquet optionnel correspondant, ou du moins avoir le logiciel correspondant installé sur votre ordinateur. Macaulay et KASH sont disponibles pour SAGE sous forme de modules optionnels (pour une liste de tous les paquets optionnels disponibles, tapez sage -optional ou visitez la page Download (Téléchargement) du site web de Sage).

2. La version binaire pré-compilée de Sage (disponible sur le site web) est souvent plus facile et plus rapide à installer que la distribution en code source. Pour l’installer, décompressez l’archive et lancez simplement le programme sage.

3. Si vous souhaitez utiliser SageTeX (qui permet d’insérer automatiquement dans un document LaTeX les résultats de calculs effectués avec Sage), vous devrez faire en sorte que votre distribution LaTeX le trouve (et, plus précisément, en trouve la version correspondant à la version de Sage que vous utilisez). Pour ce faire, consultez la section “Make SageTeX known to TeX” dans le guide d’installation (Sage installation guide, ce lien devrait pointer vers une copie locale). L’installation est facile : il suffit de copier un fichier dans un répertoire que TeX examine, ou de régler une variable d’environnement. La documentation de SageTeX se trouve dans le répertoire $SAGE_ROOT/local/share/texmf/tex/generic/sagetex où “$SAGE_ROOT” est le répertoire où vous avez installé Sage, par exemple /opt/sage-4.3.4.

1.2 Les différentes manières d’utiliser Sage

Il y a plusieurs façons d’utiliser Sage.

Interface graphique (« notebook ») : voir la section sur le Notebook du manuel de référence, et L’interface note- book ci-dessous ;

Ligne de commande : voir La ligne de commande interactive ;

Programmes : en écrivant des programmes interprétés ou compilés en Sage (voir Charger et attacher des fichiers Sage et Écrire des programmes compilés) ;

Scripts : en écrivant des programmes Python indépendants qui font appel à la bibliothèque Sage (voir Scripts Python/Sage autonomes).

Tutoriel Sage, Version 5.10

1.3 Objectifs à long terme de Sage

Étre utile : le public visé par Sage comprend les étudiants (du lycée au doctorat), les enseignants et les chercheurs

en mathématiques. Le but est de fournir un logiciel qui permette d’explorer toutes sortes de constructions mathéma-

tiques et de faire des expériences avec, en algèbre, en géométrie, en arithmétique et théorie des nombres, en analyse, en calcul numérique, etc. Sage facilite l’expérimentation interactive avec des objets mathématiques.

Être efficace : c’est-à-dire rapide. Sage fait appel à des logiciels matures et soigneusement optimisés comme GMP, PARI, GAP et NTL, ce qui le rend très rapide pour certaines opérations.

Être libre/open-source : le code source doit être disponible librement et lisible, de sorte que les utilisateurs puissent comprendre ce que fait le système et l’étendre facilement. Tout comme les mathématiciens acquièrent une com- préhension plus profonde d’un théorème en lisant sa preuve soigneusement, ou simplement en la parcourant, les personnes qui font des calculs devraient être en mesure de comprendre comment ceux-ci fonctionnent en lisant un code source documenté. Si vous publiez un article dans lequel vous utilisez Sage pour faire des calculs, vous avez

la garantie que vos lecteurs auront accès librement à Sage et à son code source, et vous pouvez même archiver et

redistribuer vous-même la version de Sage que vous utilisez.

Être facile à compiler : le code source de Sage devrait être facile à compiler pour les utilisateurs de Linux, d’OS

X et de Windows. Cela rend le système plus flexible pour les utilisateurs qui souhaiteraient le modifier.

Favoriser la coopération : fournir des interfaces robustes à la plupart des autres systèmes de calcul formel, notam- ment PARI, GAP, Singular, Maxima, KASH, Magma, Maple et Mathematica. Sage cherche à unifier et étendre les logiciels existants.

Être bien documenté : tutoriel, guide du programmeur, manuel de référence, guides pratiques, avec de nombreux exemples et une discussion des concepts mathématiques sous-jacents.

Être extensible : permettre de définir de nouveaux types de données ou des types dérivés de types existants, et d’utiliser du code écrit dans différents langages.

Être convivial : il doit être facile de comprendre quelles fonctionnalités sont disponibles pour travailler avec un objet donné, et de consulter la documentation et le code source. Également, arriver à un bon niveau d’assistance utilisateur.

Tutoriel Sage, Version 5.10

CHAPITRE 2

Visite guidée

Cette partie présente une sélection des possibilités actuellement offertes par Sage. Pour plus d’exemples, on se repor- tera à Sage Constructions (« Construction d’objets en Sage »), dont le but est de répondre à la question récurrente du

type « Comment faire pour construire

On consultera aussi le Sage Reference Manual (« Manuel de référence pour Sage »), qui contient des milliers

d’exemples supplémentaires. Notez également que vous pouvez explorer interactivement ce tutoriel — ou sa version

en anglais — en cliquant sur Help à partir du notebook de Sage.

(Si vous lisez ce tutoriel à partir du notebook de Sage, appuyez sur maj-enter pour évaluer le contenu d’une cellule. Vous pouvez même éditer le contenu avant d’appuyer sur maj-entrée. Sur certains Macs, il vous faudra peut-être appuyer sur maj-return plutôt que maj-entrée).

? ».

2.1 Affectation, égalité et arithmétique

A quelques exceptions mineures près, Sage utilise le langage de programmation Python, si bien que la plupart des

ouvrages d’introduction à Python vous aideront à apprendre Sage.

Sage utilise = pour les affectations. Il utilise ==, <=, >=, < et > pour les comparaisons.

sage:

a

=

5

sage:

a

5

sage:

2

==

2

True

sage:

2

==

3

False