Inscription / Connexion Nouveau Sujet

1 2 3 +


Niveau maths spé
Partager :

Code de Reed Salomon

Posté par
infophile
12-05-09 à 11:15

Bonjour,

Je cherche à programmer sous Maple le codage/décodage de Reed Salomon en me basant sur ce rapport : (page 4)

Imaginons que comme lui je veuille travailler sur le corps \mathbb{F}_{2^8}.

Dans le codage il fait le produit de deux polynômes, mais ça va être fait modulo quoi ? De même la racine primitive qu'il prend dans son explication faut bien la trouver préalablement ? Et comment ?

Tout en bas dans l'annexe il donne l'implémentation de \mathbb{F}_{2^k}.

En fait j'aimerais juste que quelqu'un me donne les étapes chronologiques pour programmer tout ça, parce que je ne sais pas par où commencer.

Merci

Ayoub ?

Posté par
apaugam
re : Code de Reed Salomon 13-05-09 à 04:16

Pour travailler commodément dans un corps fini il faut trouver un polynôme P irréductible sur \mathbb F_{2} tel que dans \mathbb F_{2}[X]/P la classe de X engendre le groupe multiplicatif du corps (on calcule mod P sur des polynômes à coeff ds \mathbb F_{2} de degré inférieur à celui de P)

pour comprendre la difficulté il suffit de regarder le corps à 16 éléments dans lequel on souhaite que la classe de X soit d'ordre 15.
on va donc regarder les racines 15 eme primitives de l'unité sur \mathbb F_{2}, c'est-à-dire les facteurs de \Phi_{15}

    Les diff\'erentes constructions de \mathbb F_{16}

Pour construire \mathbb F_{16}, \'ecrivons la d\'ecomposition
X^{16}-X= X\Phi_{15}\Phi_{5}\Phi_{3}\Phi_{1} =X\Phi_{15}(X^4+X^3+X^2+X+1)(X^2+X+1)(X-1). Le degr\'e de \Phi_{15} est \varphi(15)= \varphi(3)\varphi(5)=8 et on va voir que  \Phi_{15} a deux facteurs irr\'eductibles P de degr\'e 4 dont les racines seront d'ordre 15 dans le quotient.

Pour calculer \Phi_{15}, on divise X^{15}-1 par (X^4+X^3+X^2+X+1)(X^2+X+1)(X-1). On trouve X^8+X^7+X^5+X^4+X^3+X+1 (en n'oubliant pas que -1=1 dans \mathbb F_{2}).

Dans \mathbb F_{2}[X] on obtient, avec une certaine difficult\'e, la factorisation :
X^8+X^7+X^5+X^4+X^3+X+1=(X^4+X+1)(X^4+X^3+1).
On voit déjà bien sur ce  petit exemple les difficultés pratiques pour factoriser le polynôme \Phi_{15}. Il est en pratique plus rapide d'\'etablir la liste des polynômes irr\'eductibles degré 4 sur \mathbb F_{2}, en éliminant ceux qui ont une racine et ceux qui sont divisibles par le seul polynôme irréductible de degré 2 : X^2+X+1, puis de tester la division de \Phi_{15} par ces polynômes.

On obtient ainsi deux polynômes irréductibles qui conviennent, X^4+X+1 et X^4+X^3+1 et un polynôme irréductible qui ne convient pas : X^4+X^3+X^2+X+1. Pour justifier de l'irréductibilité de ces trois polynômes dans \mathbb F_{2}[X], il faut \'eliminer l'éventualité de l'existence de facteurs de degr\'e 1 et 3, en v\'erifiant que $0$ et $1$ ne sont pas racines. Mais il faut aussi contrôler qu'il n'y a pas de facteurs de degr\'e 2, en divisant par l'unique polynôme irréductible de degré 2 dans \mathbb F_{2}[X] : X^2+X+1.

On a ainsi le choix entre trois constructions de \mathbb F_{16} :
\mathbb F_{2}[X]/(X^4+X+1),~~\mathbb F_{2}[X]/(X^4+X^3+1)
et
\mathbb F_{2}[X]/(X^4+X^3+X^2+X+1)

Le polynôme X^4+X^3+X^2+X+1 ne convient pas puisque la classe de X est d'ordre 5 dans le groupe multiplicatif (\mathbb F_{2}[X]/(X^4+X^3+X^2+X+1))^* (on calcule modulo X^4+X^3+X^2+X+1 facteur de X^5-1).

Posté par
apaugam
re : Code de Reed Salomon 13-05-09 à 04:37

pour apprendre à calculer dans les corps finis tu peux utiliser un des livres
théorie de galois de j.p.Escofier il y a un chapitre sur les corps finis avec des calculs concrets en exo corrigés
ou mon livre où il y a un chapitre consacré aux corps finis (qui a pour but de savoir les utiliser pour faire des codes) avec plein d'exemples traités en détails avec des calculs concrets

tu peux les emprunter en bibliothèque universitaire

Posté par
infophile
re : Code de Reed Salomon 13-05-09 à 11:00

Bonjour

Merci pour ces explications très claires.

En fait j'aimerais programmer sous Maple un code correcteur simple, je n'ai plus énormément de temps pour me pencher sur les codes BCH et j'avais l'impression que Reed Salomon était un cas particulier plus simple. Vous avez mieux à me proposer ?

Ma question est : par où commencer ?

Admettons oui que je veuille envoyer un message de 4 lettres, on se place dans F_16 et on effectue les calculs modulo P (un des deux déterminés).

D'ailleurs pour les déterminer on ne pourrait pas appliquer Berlekamp à phi_15 ? L'algo est déjà dans Maple je crois.

Posté par
apaugam
re : Code de Reed Salomon 13-05-09 à 11:53

Il y a aussi un fichier sur les codes correcteurs qui peut te servir
un extrait de la page 6 donne une autre biblio : le cours d'algèbre de Demazure que l'on trouve également en bibliothèque

Citation :
Les codes BCH (Bose-Chaudhuri-Hocquenghem) sont des codes cycliques
particuliers. La famille des codes BCH contient les codes de Reed-Solomon qui
servent pour la lecture des CD (voir [Dem], p. 238).


Si j'ai insisté sur la construction du corps à 16 élément c'est juste pour bien comprendre la construction d'un corps finis et dans les livres que je te cite avant les exercices permettent de comprendre les calculs ds ces corps et donc de savoir les programmer sans erreur
dans celui d'Escofier il y a un exo sur le logarithme discret (qui permet de calculer ds un corps finis) et un exo sur le code minitel tres simple
dans le mien il y a le détail de la construction des corps par des "racines primitives" de l'unité grâce aux polynômes "primitifs" un paragraphe sur les outils de calcul qui peut t'être utile pour les codes reed Salomon avec de nombreux exemples et contre exemples et des questions réponses pour comprendre comment tout cela fonctionne et éviter les erreurs

Posté par
apaugam
re : Code de Reed Salomon 13-05-09 à 11:55

la racine primitive qu'il prend dans son explication faut bien la trouver préalablement ? Et comment ?

Posté par
apaugam
re : Code de Reed Salomon 13-05-09 à 12:01

erreur de frappe j'ai posté au lieu de donner la réponse

la racine primitive n'existe pas a priori
en caracteristique 2 on n'a pas les nombres complexes
et l'idée de prendre une cloture algebrique de \mathbb F_2 n'est pas une bonne idee car c'est beaucoup trop gros pour calculer
on la fabrique en construisant un corps plus gros qui contient cette racine primitive
et c'est cette démarche qu'il est très important d'avoir compris et qui est concretement difficile si l'on veut des corps de gros cardinal, des racines primitives d'ordre élevé

Posté par
infophile
re : Code de Reed Salomon 13-05-09 à 12:05

Le code minitel ne m'intéresse pas trop j'ai déjà écrit un programme Maple mettant en oeuvre les codes de Hamming.

J'ai déjà eu toutes ces références entre les mains (je retournerai les prendre à la BU début juin), mais à force de voir plusieurs approches je ne sais plus par où commencer pour programmer tout ça.

Merci

Posté par
infophile
re : Code de Reed Salomon 13-05-09 à 12:07

J'ai compris comment on construisait un corps de rupture, en quotientant c'est la classe de X qui est racine.

Posté par
apaugam
re : Code de Reed Salomon 13-05-09 à 15:20

pour commencer il faut concevoir les choses à la main le corps fini petit de préférence et fabriquer un code correcteur
ensuite il faudra comprendre comment ce code permet si l'on rentre un message codé de détecter et de corriger les erreurs
ensuite la programmation viendra facilement
un élément du corps est un polynome
on reduit tous les calculs modulo le polynome P par lequel on quotiente

Posté par
infophile
re : Code de Reed Salomon 02-06-09 à 19:01

Bonjour Annette (je peux me permettre ?)

J'en suis à la page 174 de votre livre (construction des corps finis comme corps de décomposition).

Le corps Fp[X]/(P) est isomorphe au sous-corps Fp(x) de K.

Il me semble que cela vient du fait que par définition un corps de rupture k de P sur Fp est tel qu'il existe x tel que P(x)=0 et k = Fp(x).

J'ai montré que Fp[X]/(P) est un corps de rupture* de P sur Fp, et comme on sait que tous les corps de rupture d'un même polynôme P sont isomorphes alors Fp[X]/(P) ~ Fp(x).

Deux questions :

1) * ici j'ai seulement montré que P(x)=0 avec x la classe de X dans Fp[X]/(P), alors qu'apparemment dans la définition il faut aussi montrer que Fp[X]/(P)=Fp(x) pour que ça soit un corps de rupture. Mézalor il y aurait même égalité et pas seulement isomorphisme ?

2) Comment montre-t-on que deux corps de rupture d'un même polynôme sont isomorphes ?

Merci

Posté par
1 Schumi 1
re : Code de Reed Salomon 02-06-09 à 20:32

Salut

1) Quand tu as un isomorphisme entre deux structures, c'est qu'algébriquement, on peut pas les distinguer. Donc on met un égal par abus de notation (d'où l'expression "égal à isomorphisme près". Faut vraiment faire prépa pour entendre ce genre de truc ^^) mais techniquement, c'est un isomorphisme, pas un vrai "égal".

2) Un corps de rupture d'un polynôme irréductible (sinon c'est faux) P sur un corps k, c'est je prends k et je lui rajoutes une racine de P.
Pour l'isomorphisme, c'est simple: tu prends l'application qui fixe tous les éléments du corps et qui envoie la première racine sur la deuxième.

Posté par
infophile
re : Code de Reed Salomon 02-06-09 à 21:10

Salut Ayoub

Bon je vais essayer de faire le point pour moi même

On veut montrer que : "Le corps K=Fp[X]/(P) est isomorphe au sous-corps Fp(x) de K."

Le corps Fp s'injecte dans K, et x dans K est tel que P(x) = 0.

Fp(x) est par définition le plus petit corps contenant Fp et x, donc Fp(x) est bien un sous-corps de K.

Par définition un corps de rupture de P sur Fp est une extension K' de Fp sur lequel il existe x' dans K' tel que P(x')=0 et K'=Fp(x'). (ici ça serait donc plutôt K' ~ Fp(x') ?)

Donc ici K'=Fp(x) et x'=x conviennent bien, donc Fp(x) est un corps de rupture de P sur Fp.

J'ai montré que x' = cl(X) annulait P dans K, mais pour affirmer que K est un corps de rupture de P sur Fp il reste à montrer que K ~ Fp(x) pour montrer que c'est un corps de rupture. Mais c'est exactement ce que l'on cherche non ?

J'en viens à me demander si le K'~Fp(x') ne serait pas de trop dans la définition d'un corps de rupture ?

Personnellement j'aurais pris comme définition : un corps de rupture de P sur Fp est une extension de Fp sur laquelle P admet une racine.

De cette façon K=Fp[X]/(P) et Fp(x) seraient tout deux des corps de rupture de P sur Fp. Et si on montre que deux corps de rupture de P sont isomorphes alors on a K ~ Fp(x) (résultat qui devient une conséquence de ce qui précède et non une définition).

Merci de me dire si je me plante

Posté par
1 Schumi 1
re : Code de Reed Salomon 02-06-09 à 22:20

Je comprends tout ce que tu dis, mais je vois pas où tu veux en venir...

"un corps de rupture de P sur Fp est une extension de Fp sur laquelle P admet une racine." >> Nope, il faut une hypothèse de minimalité, sinon c'est trop général.

Je vois pas ce que tu ne comprends pas quand il faut démontrer que Fp[X]/(P) et Fp(x) sont isomorphes... Reviens à la définition, si t'es pas entièrement convaincu que ça peut pas être faux ce truc-là.

Tu prends comme définition:

"Par définition un corps de rupture de P sur Fp est une extension K' de Fp sur lequel il existe x' dans K' tel que P(x')=0 et K'=Fp(x')."

Ben cool, pour Fp[X]/(P), c'est clairement engendré par la classe de l'indéterminée X et pour l'autre c'est engendré par la racine x. Donc ben voilà, tu l'as ton isomorphisme...

Posté par
infophile
re : Code de Reed Salomon 02-06-09 à 22:34

Oui dans la définition d'origine c'est P(x)=0 et x engendre K'.

Donc là ok Fp[X]/(P) et Fp(x) sont des corps de rupture de P, et comme engendrés par x tous les deux ils sont isomorphes, on a ce que voulait.

Maintenant dans la définition annette ajoute : "plus précisément K' = Fp(x)".

Ce = c'est un ~ ?

Posté par
1 Schumi 1
re : Code de Reed Salomon 02-06-09 à 23:18

"Maintenant dans la définition annette ajoute : "plus précisément K' = Fp(x)"" >> Laquelle de définition, celle-là: "Par définition un corps de rupture de P sur Fp est une extension K' de Fp sur lequel il existe x' dans K' tel que P(x')=0 et K'=Fp(x')." ?

Si oui, alors ici, oui, c'est un vrai égal vu qu'on a le choix de la racine. Mais c'est pas très éclairant et le comprendre comme un ~ ne change pas grand chose. Le problème, c'est que la racine qu'on ajoute, c'est un objet assez mystérieux et à part dans des cas "concrets" où ton corps c'est Q,R ou C on l'exhibe pas à proprement parler (parler de V(2) dans F3 c'est moyen...), on lui donne simplement un non: x. Et c'est d'autant plus frustant qu'on est tout bonnement incapable de le distinguer de ses congénères (les autres racine de son polynôme minimal). Donc, effectivement, dans ce cas précis, c'est un égal mais vu qu'on sait vraiment rien sur x et qu'on le choisit à permutation près des racines de P, autant le comprendre comme un isomorphisme, on y perd pas grand chose...

Posté par
apaugam
re : Code de Reed Salomon 03-06-09 à 04:36

Bonne fête Kevin
j'arrive au petit matin (en fait je suis momentanement à Pékin) pour completer les explications tres claires donnés par tous et les faire coller avec le texte de mon livre page 374
tous les corps finis à p^n élément sont isomorphes mais selon la maniere dont on les construit ils ne sont pas tous aussi pratiques pour calculer concretement

le pire (pour calculer avec) etant de dire c'est le corps de decomposition de X^q-X car cela devient un objet assez abstrait construit a priori comme empilement Z/pZ, K_1, ...K_i..   de corps de rupture genre K_{i+1}=K_i|X]/Q
au pire, a priori, n corps de rupture emboités

deja beaucoup mieux (toujours pour calculer avec)c'est de l'obtenir avec un seul quotient Z/pZ[X]/P avec P irreductible : ce sera alors un corps de rupture de ce polynome P

encore mieux(toujours pour calculer avec)c'est de l'obtenir avec un seul quotient Z/pZ[X]/P avec P irreductible et tel que la classe de X engendre le groupe multiplicatif de Z/pZ[X]/P (dans ce cas on dit que le polynôme P est primitif)

Dans ce paragraphe je me place dans un des corps K à q elements. si x dans K est generateur de K^* (x objet abstrait dont l'existence nous est démontrée avt)
et si P est son poly mini
P est primitif et
Z/pZ[X]/P est un corps de rupture de P (quelque part dans la nature et pas dans un corps connu) isomorphe au sous corps de K : Z/pZ(x)contenu dans le corps K (abstrait pour le moment) considéré au départ.
mais comme x engendre K^* en fait l'inclusion de Z/pZ(x) dans K est une égalité (pas un isomorphime) et donc K est isomorphe à Z/pZ[X]/P

mais dans K=Z/pZ(x) je peux calculer tres facilement et cela peut se demontrer ou se voir plus facilement enventuellement  a l'aide de l'isomorphisme

espace vectoriel sur Z/pZ de base 1,x,x^2,...x^d si d est le degre de P
liste de tous les elements 0,1,x,x^2,...x^{q-1}
elements que l'on peut tous ecrire dans la base en utilisant le fait que P(x)=0

Posté par
apaugam
re : Code de Reed Salomon 03-06-09 à 04:43

faute de frappe c'est page 174
j'espere que tout mon baratin t'eclairera
sur la difference entre isomorphisme et egalite
et sur les corps qui ne sont pas dans un endroit "connu"
remarque que C est construit comme cela de maniere purement abstraite corps de rupture sur R de X^2+1
pour bien comprendre les nuances regarde le corps à 9 elements page 179
cela suffit

Posté par
infophile
re : Code de Reed Salomon 03-06-09 à 12:59

Bonjour

Je vais de nouveau résumer, dites moi si je me trompe :

Si on trouve un facteur irréductible P de X^q-X tel que Fp[X]/(P) soit un corps de décomposition de tous les facteurs irréductibles de X^q-X, on aura alors construit un corps K à q éléments comme corps de décomposition de X^q-X.

On sait avant toute chose que K* est cyclique, soit x son générateur. On va prendre pour P le polynôme minimal de x (comment sait-on qu'un tel polynôme existe d'ailleurs ?).

D'après Lagrange on a x^(q-1)-1 = 0 donc le polynôme minimal divise X^(q-1)-1 c'est donc bien un facteur irréductible de X^q-X. Reste à voir si en quotientant par P on obtient effectivement un corps de décomposition de X^q-X.

Fp[X]/(P) et Fp(x) sont deux corps de rupture de P, donc ils sont isomorphes.

Fp(x) est bien un sous-corps de K car K contient une copie de Fp et x.

Or x engendre K* et il est dans Fp(x) donc Fp(x)=K.

On a finalement K qui est isomorphe à Fp[X]/(P). Et comme on sait que les éléments de K sont les q racines de X^q-X, ça fait bien de Fp[X]/(P) est corps de décomposition de X^q-X.

Donc pour construire un corps fini à q=p^n éléments il suffirait de déterminer le polynome minimal du générateur de K* et de quotienter.

Mais j'ai l'impression qu'on prend les choses à l'envers non ? On exhibe dès le début de la démo un générateur de K que l'on n'a pas encore construit...

Je ne vois pas aussi pourquoi le polynôme minimal de x est primitif i.e : "et tel que la classe de X engendre le groupe multiplicatif de Z/pZ[X]/P"

Merci pour ces éclaircissement et ma fête

Posté par
infophile
re : Code de Reed Salomon 03-06-09 à 14:39

Je réponds à ma question : "comment sait-on qu'un tel polynôme existe d'ailleurs ?"

Peut-être parce que K=Fp(x) qui vu comme Fp-ev est de dimension finie disons n (et n < p^n-1=q-1)

La famille (1,x,x²,...,x^n) comporte n+1 éléments donc est liée.

Il existe alors une relation non triviale \Bigsum_{k=0}^{n}a_kx^k=0 et en divisant par a_k on a notre polynôme minimal.

Posté par
1 Schumi 1
re : Code de Reed Salomon 03-06-09 à 17:13

Ce que tu dis me semble correct.

"Mais j'ai l'impression qu'on prend les choses à l'envers non ? On exhibe dès le début de la démo un générateur de K que l'on n'a pas encore construit... ">> Tout dépens après de ce que tu veux...

Si tu veux faire du calcul effectif dans F_(p^n), t'as pas vraiment le choix: il faut que tu trouves un polynôme de degré n irréductible, tu quotientes et c'est fini. (Tout ceci se programmant très très bien en Maple).
Ce qui est sympa c'est qu'on peut programmer de façon très proche de la théorie. On imagine qu'on dipose d'un polynôme P irréductible de degré n sur F_p et on souhaite construire ainsi un corps de cardinal p^n.

On fait comme ce qu'on a fait pour construire de le corps de rupture de P. On note X l'élément qu'on rajoute (c'était la classe de X dans la démo sur le corps de rupture) et on définit les éléments de notre corps k à p^n élément comme des polynômes à coefficients dans F_p de X.
Reste à définir les lois maintenant:

- Bon, la loi "+", pose pas trop de difficultés, on somme comme on somme deux polynômes.
- Par contre, pour * c'est un peu plus subtil: eh oui, vu qu'on a un corps qui est de dimension n en tant qu'ev sur F_p, il serait très maladroit de multiplier deux éléments comme on multiplie deux polynômes. L'idée c'est de réduire à chaque fois, vu que ce qui nous intéresse, c'est le reste modulo P de notre polynôme.
Donc en gros, on définit somme(a_k X^k) * somme(b_k*X^k) = reste de( somme(a_k*X^k)*somme(b_j*X^j)) dans la division euclidienne par P.

Posté par
apaugam
re : Code de Reed Salomon 04-06-09 à 01:56


Citation :
Mais j'ai l'impression qu'on prend les choses à l'envers non ? On exhibe dès le début de la démo un générateur de K que l'on n'a pas encore construit...

tu as tout à fait raison
on prends les choses à l'envers car l'existence du générateur de K* est théorique et pas du tout effective
mais on n'a pas trop le choix
ce x qui existe de maniere theorique, grace à une demonstration tout de même, permet de prouver l'existence d'un polynome primitif qui lui aussi est "theorique"
tout le probleme est là
dans la pratique les algorithmes de recherches de ce genre de polynomes sont un peu probabilistes
on cherche parmi les polynomes de degre n d'abord ceux qui sont irreductibles puis parmi ceux là ceux tels que la classe de X ds le quotient engendre le groupe multiplicatif

il y a peut etre des amelioration de cette idée generale mais le probleme est bien là on ne sait pas trop bien faire
en un sens heureusement cela offre des sujets de recherche

Posté par
apaugam
re : Code de Reed Salomon 04-06-09 à 02:01

Citation :
Je ne vois pas aussi pourquoi le polynôme minimal de x est primitif i.e : "et tel que la classe de X engendre le groupe multiplicatif de Z/pZ[X]/P"


le quotient Z/pZ[X]/P par le polynome minimal (donc irreductible) de x est isomorphe à Z/pZ(x)=K

comme x engendre K*, par isomorphisme, la classe de X engendre Z/pZ[X]/P

Posté par
apaugam
re : Code de Reed Salomon 04-06-09 à 02:13


Citation :
- Bon, la loi "+", pose pas trop de difficultés, on somme comme on somme deux polynômes.
- Par contre, pour * c'est un peu plus subtil: eh oui, vu qu'on a un corps qui est de dimension n en tant qu'ev sur F_p, il serait très maladroit de multiplier deux éléments comme on multiplie deux polynômes. L'idée c'est de réduire à chaque fois, vu que ce qui nous intéresse, c'est le reste modulo P de notre polynôme.
Donc en gros, on définit somme(a_k X^k) * somme(b_k*X^k) = reste de( somme(a_k*X^k)*somme(b_j*X^j)) dans la division euclidienne par P.


c'est pour cela qu'on a intérêt à se fatiguer au départ pour avoir P primitif
car ensuite on etablit une fois pour toute, par division euclidienne, une table de correspondance entre puissances de x et ecriture des elements dans la base (c'est le logarithme discret)
pour faire des produits on cherche dans la table l'expression des 2 elements à multiplier sous forme de puissances de x
on multiplie les puissances de x
x^i.x ^j=x^{i+j}
puis on lit dans la table la valeur de x^{i+j} exprimée dans la base
une fois la table de log etablie on n'a plus besoin de faire de reduction mod P par division euclidienne à chaque multiplication

De plus, pour les codes BCH le choix d'un polynome primitif est indispensable

Posté par
infophile
re : Code de Reed Salomon 04-06-09 à 15:39

Merci encore pour vos précisions !

Par contre je doute de ma démo pour l'existence du polynôme minimal..

Parce que j'ai dis n < p^n-1 = q-1 donc (1,x,x²,...,x^n) est une famille de n+1 éléments donc liée.

Là quand je donnais l'inégalité ci-dessus j'avais à l'esprit que x^(q-1) = 1, mais il se peut très bien que x soit d'ordre d < n non ? auquel cas la famille ci-dessus ne comporte pas n+1 éléments.

Qu'est-ce que vous en pensez ?

Posté par
1 Schumi 1
re : Code de Reed Salomon 04-06-09 à 16:00

Là quand je donnais l'inégalité ci-dessus j'avais à l'esprit que x^(q-1) = 1, mais il se peut très bien que x soit d'ordre d < n non ? auquel cas la famille ci-dessus ne comporte pas n+1 éléments. >> Certes mais l'idéal des polynômes qui s'annule en x est principal. Donc tout ce que t'as à faire, c'est trouver un polynôme non nul qui annule x et X^(q-1)-1 étant dedans, problème résolu.

Tu peux le faire comme ça sinon:
Soit x0 dans l'extension K de k. On veut montrer qu'il existe un polynôme minimal pour x0. On considère l'endomorphisme du k-ev K f défini par f(x)=x*x0.
f admet un polynôme minimal. Il est relativement triviale que c'est le polynôme minimale pour x0.

Posté par
infophile
re : Code de Reed Salomon 04-06-09 à 16:25

Ah oui tout simplement

Bon prochaine étape : les polynômes cyclotomiques.

annette > Est-ce que tous les résultats sur ces polynômes dans le Demazure sont utiles à la construction des corps finis ? (ex : irréductibilité sur Q). Si non, vous pouvez m'indiquer lesquels laisser de côté ?

Merci à vous deux !

Posté par
infophile
re : Code de Reed Salomon 05-06-09 à 16:44

Il y a un passage que je ne comprends pas ici :

Dans la dernière démonstration il est dit :

Citation :
D'autre part, on a \{\zeta^n=1\\n|q^s-1 \Right \zeta^{p^r}=\zeta. Donc, le sous-corps de L formé des racines de X^{p^r}-X de cardinal p^r, est L tout entier (car ζ est un élément primitif de L), d'où p^s=#L ≤ p^r,d'où r≤s - cqfd.


Bon déjà dans le système je présume que c'est r et non pas s.

Ensuite je comprends que l'ensemble des racines est L tout entier car zeta est primitif, ici le sens de primitif a prendre c'est "engendre L" ? si oui alors pourquoi ? Je sais juste que zeta est racine de P, donc à fortiori de phi_n, et donc c'est une racine primitive nième de l'unité (démontré avant).

Et du coup si ce sous-corps de cardinal p^r formé des racines est L tout entier qui lui est de cardinal p^s on a directement r = s non ? Pourquoi ils écrivent l'inégalité p^s <= p^r ?

Merci

Posté par
1 Schumi 1
re : Code de Reed Salomon 05-06-09 à 18:52

Bon déjà dans le système je présume que c'est r et non pas s. >> Tu présumes bien.

ici le sens de primitif a prendre c'est "engendre L" ? >> Au sens corpusculaire, oui.

si oui alors pourquoi ? >> Parce que son polynôme minimal c'est P qui est degré s. Donc la famille (1,zeta,...,zeta^(s-1)) est libre dans le k-ev qu'est L. Par suite, le cardinal de l'ev de ce truc c'est au moins p^s et donc exactement p^s soit donc L.

Pourquoi ils écrivent l'inégalité p^s <= p^r ? >> C'est de la frime, effectivement on peut conclure directement. Mais c'est juste pour dire qu'ils ont montré les deux côtés de l'inégalité.

Posté par
infophile
re : Code de Reed Salomon 05-06-09 à 19:00

Ca marche

Posté par
infophile
re : Code de Reed Salomon 05-06-09 à 19:06

Ouais donc il y a une partie de la démo qui sert à pas grand chose ?

Après avoir dit que L contient zeta racine (primitive) nième de l'unité (le primitive au sens racine nième ne sert même pas là si?)

On a zeta^n = 1 et n|p^r-1 donc zeta^(p^r) = zeta

et de là on déduit que l'ensemble des racines de X^(p^r)-X est L tout entier d'où p^r = p^s => r=s.

C'est bon ?

Posté par
1 Schumi 1
re : Code de Reed Salomon 05-06-09 à 19:20

On utilise seulement que c'est une racine n-ème, pas qu'elle soit primitive en effet.

Oui, c'est bon pour moi.

Posté par
infophile
re : Code de Reed Salomon 05-06-09 à 19:28

Ok !

un autre truc :

ensuite ils disent si r = 1 phi_n possède des racines dans K, cela signifie que K contient des racines primitives nième de l'unité. Pour qu'il en soit ainsi il faut et il suffit que n|q-1 (tout ça ok)

et il rajoute : on retrouve le fait que K* est cyclique.

Pourquoi ?

Posté par
infophile
re : Code de Reed Salomon 06-06-09 à 15:05

Exo : montrer que si p^r-1|p^n-1 alors r|n.

Voilà ce que j'ai fait :

On écrit n = qr+s avec s < r. On a bien sûr p^r = 1[p^r-1], on élève à la puissance q : p^(qr)=1[p^r-1] et on multiplie par p^s :

p^(qr+s)=p^s[p^r-1] d'où p^n=p^s[p^r-1]

Mais d'après les hypothèses p^n-1=0[p^r-1] donc p^s=1[p^r-1] soit encore p^s-1=0[p^r-1]

donc p^r-1|p^s-1 mais comme s < r cela implique s = 0. d'où n = qr soit r|n.

C'est juste ?

Posté par
1 Schumi 1
re : Code de Reed Salomon 06-06-09 à 15:24

Yep.

Posté par
infophile
re : Code de Reed Salomon 06-06-09 à 15:30

T'as une idée pour mon post d'avant ?

Ah aussi saurais-tu pourquoi a --> a^(p^r) (où r|n) est un automorphisme du corps K ?

Merci

Posté par
infophile
re : Code de Reed Salomon 06-06-09 à 15:39

J'ai oublié de préciser k c'est l'ensemble des a € K tel que a^(p^r) = a.

Ah bah p'tet simplement parce que a^(p^r) = 0 => a = 0 par intégrité donc c'est injectif d'où bijectif car K fini.

et le morphisme par Frobenius ?

Sinon j'ai montré déjà que x -> x^p est un automorphisme de K, je peux m'en servir ici ?

Posté par
infophile
re : Code de Reed Salomon 06-06-09 à 15:40

oui parce que le but c'est de montrer que k est un sous-corps de K.

Et dans mon bouquin ils signalent juste cet automorphisme, j'aimerais savoir d'où ça sort.

Posté par
1 Schumi 1
re : Code de Reed Salomon 06-06-09 à 16:10

Ah bah p'tet simplement parce que a^(p^r) = 0 => a = 0 par intégrité donc c'est injectif d'où bijectif car K fini. >> Oula... le mot important du théorème c'est "application linéaire"... Parce que là, tu viens de prouver que x->x² est injectif de R dans R...

Sinon j'ai montré déjà que x -> x^p est un automorphisme de K, je peux m'en servir ici ? >> Oui, c'est comme ça qu'on procède d'ailleurs. Tu remarques seulement que x->x^(p^r) c'est le frobenius composé r fois avec lui-même.

Posté par
infophile
re : Code de Reed Salomon 06-06-09 à 16:16

Roh nan l'erreur horrible que j'viens de faire j'ai honte xD

En quoi ça montre que k est un sous-corps de K ?

k c'est donc les points fixes de cet automorphisme..

Posté par
1 Schumi 1
re : Code de Reed Salomon 06-06-09 à 16:40

k c'est donc les points fixes de cet automorphisme.. >> Les points fixes d'un automorphisme de corps, c'est un sous-corps...

Posté par
infophile
re : Code de Reed Salomon 06-06-09 à 16:53

Pourquoi ?

Posté par
1 Schumi 1
re : Code de Reed Salomon 06-06-09 à 17:42

Ben suffit de le vérifier à la main.

Posté par
infophile
re : Code de Reed Salomon 06-06-09 à 18:00

Ah..

Citation :

ensuite ils disent si r = 1 phi_n possède des racines dans K, cela signifie que K contient des racines primitives nième de l'unité. Pour qu'il en soit ainsi il faut et il suffit que n|q-1 (tout ça ok)

et il rajoute : on retrouve le fait que K* est cyclique


T'as compris ça ?

Juste après aussi un truc que j'ai du mal à saisir :

Citation :
A l'opposé pour avoir un seul facteur dans la décomposition de phi_n sur K il suffit que r = deg \phi_n=\varphi(n) d'où le corrolaire :

phi_n irréductible sur le corps K à q éléments <=> q engendre (Z/nZ)*


Je comprends pas le lien, je sais qu'il y a \varphi(n) générateurs de (Z/nZ)* mais après..

Thanks

Posté par
1 Schumi 1
re : Code de Reed Salomon 06-06-09 à 18:32

Je comprends pas le lien, je sais qu'il y a phi(n) générateurs de (Z/nZ)* mais après.. >> C'est pas qu'il y a phi(n) générateurs dans (Z/nZ)*, c'est simplement que (Z/nZ)* possède phi(n) élément...
On a donc les équivalences suivantes:

phi_n irréductible sur le corps K à q éléments <==> la décomposition en produits de facteurs irréductible de phi_n n'a qu'un seul facteur (lui même) <==> tous les facteurs de la décomposition sont de degré phi(n) <==> q est d'ordre phi(n) dans (Z/nZ)* <==> q engendre (Z/nZ)*

Par contre le premier, j'avoue, je comprends pas son trip...

Posté par
infophile
re : Code de Reed Salomon 06-06-09 à 18:48

Juste détailler cette équivalence : "tous les facteurs de la décomposition sont de degré phi(n) <==> q est d'ordre phi(n) dans (Z/nZ)* "

Le sens <= c'est le théorème lui-même.

Pour l'autre =>, par contraposée, si q n'est pas d'ordre phi(n), on note r <phi(n) son ordre, alors par le théorème on aurait une décomposition en produit de polynôme de degré r et pas en phi(n).

Un dernier truc que t'as tenté de m'expliquer et que j'ai pas pigé, c'est comment tu montres que deux corps de rupture sont isomorphes ?

Merci vieux

Posté par
1 Schumi 1
re : Code de Reed Salomon 06-06-09 à 19:47

"Juste détailler cette équivalence : "tous les facteurs de la décomposition sont de degré phi(n) <==> q est d'ordre phi(n) dans (Z/nZ)* "" >> Oui, c'est ça.


Soit P un polynôme irréductible sur un corps k de degré d. Notons k1 et k2 deux corps de rupture de ce polynôme.
On a qu'il existe (a,b)€k1*k2 tel que k1=k(a) et k2=k(b) avec de plus P(a)=0 (dans k1) et P(b)=0 (dans k2)
Posons f l'application de k1 dans k2 tel que f(sum(i=0..n)l_ia^i)=sum_(i=0..n)l_ib^i où l_0,..,l_n sont dans k. Le plus dur, c'est de vérifier que f est effectivement une application (un élément de k1 s'écrit de plusieurs manières comme combinaison linéaire des puissances de a, faut vérifier que l'image qu'on lui donne par f ne dépend pas de l'écriture). Le fait que ça soit après un automorphisme de corps, c'est relativement triviale. (f est en particulier une application linéaire, donc là tu peux regarder le noyau )

Posté par
infophile
re : Code de Reed Salomon 09-06-09 à 12:05

Merci vieux !

Un corolaire dans le livre d'Annette page 179 qui n'est pas démontré :

"Soit p un nombre premier et P € Fp[X] un polynôme de degré n, irréductible sur Fp. Alors l'élément x = cl(X) dans le corps K=Fp[X]/(P) est un générateur de K* ssi P est un facteur irréductible sur Fp de \phi_{p^n-1}"

Comment le démontre-t-on ?

Posté par
infophile
re : Code de Reed Salomon 09-06-09 à 12:09

Ah si c'est démontré dans la proposition d'avant j'ai rien dit ^^

Posté par
infophile
re : Code de Reed Salomon 09-06-09 à 13:49

Hum bah y'a quand même un truc que je pige pas dans la démo :

Proposition : "les facteurs irréductibles de \phi_{p^n-1} sont les polynômes primitifs de degré n dans Fp[X]"

Démo : on sait qu'il existe des polynômes primitifs de degré n parmi les facteurs irréductibles de X^(p^n)-X, ce sont les polynômes minimaux des générateurs de K*. On va chercher où se situent les polynômes primitifs dans la décomposition X^q-X = X.\Bigprod_{d|q-1}\phi_d. Ce polynôme est scindé dans K. L'élément x est générateur de K* ssi x est d'ordre q-1 i.e ssi x est racine de \phi_{q-1}. Et réciproquement tout facteur irréductible P de  \phi_{q-1} a des racines d'ordre q-1 dans K*.

Je ne vois pas comment justifier le passage en gras.

1 2 3 +




Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1675 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !