Extension de corps (math)

Description

Voici un petite programme qui permet de gerer des corps de facon generique.
On peut obtenir des corps classiques comme les reels, les rationnels, ou
encore les corps finis Z/pZ (avec p premier). A partir de cela on peut
constuire des polynomes sur un corps, et puis faire des extensions de corps
a partir d'un polynome irreductible... on construit d'autres corps, comme
les complexes et des corps finis a 4,16,256,3,9,27... elements !!

Un petit detour dans le monde merveilleux des mathematiques :
Soit K un corps, et P un polynome irreductible de degre n sur K.
K[X] est l'anneau des polynomes a coefficients dans K. On note
K[X]/P la classe residuelle modulo P des polynomes de K[x],
autrement dit on considere seulement les restes des divisions
euclidiennes par P. (Autrement mathematiquement-pompeusement dit : on
quotiente l'ensemble K[X] par la relation d'equivalence A~B<=>P|A-B, et
on prend comme representant des classes d'equivalences le polynome de
degre strictement inferieur a n)

Noton L=K[X]/P cette ensemble. L est muni naturellement de l'addition,
soustraction, multiplication, regles d'associativite et de distributivite,
... et surtout de l'inverse (et donc de la division pour tout element non-nul)
La relation de bezout entre un polynome non-nul et P donne : XU+PV=PGCD(X,P)=1
car P est irreductible, dont premier avec tout polynome de degre strictement
inferieur a n. Ainsi "modulo P" on a XU=1, U est donc l'inverse de X dans L.
L est donc muni d'une structure de corps. Et L est un espace vectoriel sur K
de dimension n.

Dans le cas des corps finis, ceci montre que si K=Z/pZ, alors L est un corps
a p^n elements... reste a demontrer qu'il existe bien un polynome irreductible
de degre n... c'est un autre probleme !

La genericite du code pour la strucutre de corps ('FIELD') permet aisement de
construire c'est sur-corps, ce programme met bien en oeuvre l'utilisation
des extensions de corps.

C=R[X]/X^2+1 est le corps des complexes
Q[racine de deux] ) Q[X]/X^2-2
F16 = F2[X]/X^4+X+1 est le corps (a isomorphisme pres il est unique) a 16 elements

Source / Exemple :


---------------
corps des reels
---------------
   x   = +3.14159
   y   = +2.00000
   x+y = +5.14159
   x-y = +1.14159
   x*y = +6.28319
   x/y = +1.57080

-------------------
corps des complexes
-------------------
   x   = +0.000+1.000.i
   y   = +0.000+1.414.i
   x+y = +0.000+2.414.i
   x-y = +0.000-0.414.i
   x*y = -1.414+0.000.i
   x/y = +0.707+0.000.i

--------------------
corps des rationnels
--------------------
   x   = +1/3
   y   = -9/5
   x+y = -22/15
   x-y = +32/15
   x*y = -3/5
   x/y = -5/27

----------

corps Z/7Z
----------
   x   = 3
   y   = 6
   x+y = 2
   x-y = 4
   x*y = 4
   x/y = 4

---------------------
polynomes (complexes)
---------------------
   A   = (-1.000+0.000.i) + (+1.000+0.000.i).X^4
   B   = (+0.000+1.000.i) + (+1.000+0.000.i).X
   A+B = (-1.000+1.000.i) + (+1.000+0.000.i).X + (+1.000+0.000.i).X^4
   A*B = (+0.000-1.000.i) + (-1.000+0.000.i).X + (+0.000+1.000.i).X^4 + (+1.000+0.000.i).X^5
   A/B = (+0.000+1.000.i) + (-1.000+0.000.i).X + (+0.000-1.000.i).X^2 + (+1.000+0.000.i).X^3
   A%B = +0.000+0.000.i
-------------------------
bezout (Z/5Z) : A.U+B.V=G
-------------------------
   A = (4) + (1).X + (4).X^2 + (1).X^3
   B = (1).X + (1).X^2 + (1).X^3 + (1).X^4
   U = (4) + (2).X
   V = (3)
   G = (1) + (1).X^2
---------------------------------
extension de corps : C=R[X]/X^2+1
---------------------------------
   A       = (+1.00000)
   B       = (+1.00000).j
   A+B     = (+1.00000) + (+1.00000).j
   1/(A+B) = (+0.50000) + (-0.50000).j
------------------------------------------
extension de corps : Q[sqrt(2)]=Q[X]/X^2-2
------------------------------------------
   A       = (+5/3)
   B       = (+1/1).sqrt(2)
   A+B     = (+5/3) + (+1/1).sqrt(2)
   1/(A+B) = (+15/7) + (-9/7).sqrt(2)
---------------------------------------
extension de corps : F16=(Z/2Z)/X^4+X+1
---------------------------------------
   A^ 1 = (1).a
   A^ 2 = (1).a^2
   A^ 3 = (1).a^3
   A^ 4 = (1) + (1).a
   A^ 5 = (1).a + (1).a^2
   A^ 6 = (1).a^2 + (1).a^3
   A^ 7 = (1) + (1).a + (1).a^3
   A^ 8 = (1) + (1).a^2
   A^ 9 = (1).a + (1).a^3
   A^10 = (1) + (1).a + (1).a^2
   A^11 = (1).a + (1).a^2 + (1).a^3
   A^12 = (1) + (1).a + (1).a^2 + (1).a^3
   A^13 = (1) + (1).a^2 + (1).a^3
   A^14 = (1) + (1).a^3
   A^15 = (1)
   A^16 = (1).a
   B^ 1 = (1) + (1).a + (1).a^2
   B^ 2 = (1).a + (1).a^2
   B^ 3 = (1)
   B^ 4 = (1) + (1).a + (1).a^2

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.