# 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: RationalField()
    Rational Field
    sage: QQ
    Rational Field
    sage: 1/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: 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: c = GF(3)(1)   # c est l'élément 1 du corps fini à 3 éléments
    sage: c in QQ
    False

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

    sage: 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: i  # i^2 = -1
    I
    sage: 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: 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

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\). L’appel `CC(i)` renvoie la racine carrée complexe de \(-1\).

    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