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
>>> 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: 1.2 in QQ
True
>>> 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: c = GF(3)(1) # c est l'élément 1 du corps fini à 3 éléments
sage: c in QQ
False
>>> 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: pi in QQ
False
>>> 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: i # i^2 = -1
I
sage: i in QQ
False
>>> 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: 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
>>> 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: 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
>>> 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