Anneaux de base - Tutoriel Sage

Skip to content
Back to top
View this page
Edit this page

# Anneaux de base

Nous illustrons la prise en main de quelques anneaux de base avec Sage. Par exemple, `RationalField()` ou `QQ` désigneront dans ce qui suit au corps des nombres rationnels :

Sage

    sage: RationalField()
    Rational Field
    sage: QQ
    Rational Field
    sage: 1/2 in QQ
    True

Python

    >>> from sage.all import *
    >>> RationalField()
    Rational Field
    >>> QQ
    Rational Field
    >>> Integer(1)/Integer(2) in QQ
    True

Le nombre décimal `1.2` est considéré comme un élément de `QQ`, puisqu’il existe une application de coercition entre les réels et les rationnels :

Sage

    sage: 1.2 in QQ
    True

[Python]

    >>> from sage.all import *
    >>> RealNumber('1.2') in QQ
    True

Néanmoins, il n’y a pas d’application de coercition entre le corps fini à 3 éléments et les rationnels :

Sage

    sage: c = GF(3)(1)   # c est l'élément 1 du corps fini à 3 éléments
    sage: c in QQ
    False

Python

    >>> from sage.all import *
    >>> c = GF(Integer(3))(Integer(1))   # c est l'élément 1 du corps fini à 3 éléments
    >>> c in QQ
    False

De même, bien entendu, la constante symbolique \(\pi\) n’appartient pas aux rationnels :

Sage

    sage: pi in QQ
    False

[Python]

    >>> from sage.all import *
    >>> pi in QQ
    False

Le symbole `I` représente la racine carrée de \(-1\); `i` est synonyme de `I`. Bien entendu, `I` n’appartient pas aux rationnels :

Sage

    sage: i  # i^2 = -1
    I
    sage: i in QQ
    False

Python

    >>> from sage.all import *
    >>> i  # i^2 = -1
    I
    >>> i in QQ
    False

À ce propos, d’autres anneaux sont prédéfinis en Sage : l’anneau des entiers relatifs `ZZ`, celui des nombres réels `RR` et celui des nombres complexes `CC`. Les anneaux de polynômes sont décrits dans Polynômes.

Passons maintenant à quelques éléments d’arithmétique.

Sage

    sage: a, b = 4/3, 2/3
    sage: a + b
    2
    sage: 2*b == a
    True
    sage: parent(2/3)
    Rational Field
    sage: parent(4/2)
    Rational Field
    sage: 2/3 + 0.1       # coercition automatique avant addition
    0.766666666666667
    sage: 0.1 + 2/3       # les règles de coercition sont symétriques en Sage
    0.766666666666667

[Python]

    >>> from sage.all import *
    >>> a, b = Integer(4)/Integer(3), Integer(2)/Integer(3)
    >>> a + b
    2
    >>> Integer(2)*b == a
    True
    >>> parent(Integer(2)/Integer(3))
    Rational Field
    >>> parent(Integer(4)/Integer(2))
    Rational Field
    >>> Integer(2)/Integer(3) + RealNumber('0.1')       # coercition automatique avant addition
    0.766666666666667
    >>> RealNumber('0.1') + Integer(2)/Integer(3)       # les règles de coercition sont symétriques en Sage
    0.766666666666667

Il y a une subtilité dans la définition des nombres complexes. Comme mentionné ci-dessus, le symbole `i` représente une racine carrée de \(-1\), mais il s’agit d’une racine carrée formelle de \(-1\), comme élément d’un corps de nombres quadratique. L’appel `CC(i)` renvoie la racine carrée de \(-1\) comme nombre complexe en virgule flottante.

Sage

    sage: i = CC(i)       # nombre complexe en virgule flottante
    sage: z = a + b*i
    sage: z
    1.33333333333333 + 0.666666666666667*I
    sage: z.imag()        # partie imaginaire
    0.666666666666667
    sage: z.real() == a   # coercition automatique avant comparaison
    True
    sage: QQ(11.1)
    111/10

Python

    >>> from sage.all import *
    >>> i = CC(i)       # nombre complexe en virgule flottante
    >>> z = a + b*i
    >>> z
    1.33333333333333 + 0.666666666666667*I
    >>> z.imag()        # partie imaginaire
    0.666666666666667
    >>> z.real() == a   # coercition automatique avant comparaison
    True
    >>> QQ(RealNumber('11.1'))
    111/10