KM07_ex3.mw

EXERCICE 3

> restart:

>

Question a)

> imageL:=proc(u)
local i,s,l;

s:=NULL;

for i from 1 to 5 do

s:=s,evalf(u(i));

od;

l:=[s];

end:

Cette procédure renvoie la liste des cinq valeurs [u(1),u(2),u(3),u(4),u(5)] d'une permutation u

>

> Question b)

> r:=array(0..5);R:=array(0..5);s:=array(1..5);S:=array(1..5); On alloue l'espace destiné aux 4 tableaux s,S,r,R

r := array(0 .. 5, [])

R := array(0 .. 5, [])

s := array(1 .. 5, [])

S := array(1 .. 5, [])

> Question c)

On crée les permutations r1 et s1

> r[1]:=x->piecewise(x=1,2,x=2,3,x=3,4,x=4,5,x=5,1);

r[1] := proc (x) options operator, arrow; piecewise(x = 1, 2, x = 2, 3, x = 3, 4, x = 4, 5, x = 5, 1) end proc

> s[1]:=x->piecewise(x=1,1,x=2,5,x=3,4,x=4,3,x=5,2);

s[1] := proc (x) options operator, arrow; piecewise(x = 1, 1, x = 2, 5, x = 3, 4, x = 4, 3, x = 5, 2) end proc

> Question d)

> On crée les permutations rk, obtenue par compositions successives de r1 avec elle-même

>

> for k from 2 to 5 do r[k]:=(r[1])@(r[k-1]) od;

r[2] := `@@`(r[1], 2)

r[3] := `@@`(r[1], 3)

r[4] := `@@`(r[1], 4)

r[5] := `@@`(r[1], 5)

> r[0]:=r[5]: On affecte r5 à r0

>

>

> Question e)

On défnit les permutations sk composition de s1 avec r(k-1)

> for k from 2 to 5 do s[k]:=s[1]@r[k-1] od;

s[2] := `@`(s[1], r[1])

s[3] := `@`(s[1], `@@`(r[1], 2))

s[4] := `@`(s[1], `@@`(r[1], 3))

s[5] := `@`(s[1], `@@`(r[1], 4))

> Question f)

On defiunit les listes images Rk et  Sk associées aux permutations rk et sk respectivement

> for i from 1 to 5 do
R[i-1]:=imageL(r[i-1]);S[i]:=imageL(s[i]);

od;

R[0] := [1., 2., 3., 4., 5.]

S[1] := [1., 5., 4., 3., 2.]

R[1] := [2., 3., 4., 5., 1.]

S[2] := [5., 4., 3., 2., 1.]

R[2] := [3., 4., 5., 1., 2.]

S[3] := [4., 3., 2., 1., 5.]

R[3] := [4., 5., 1., 2., 3.]

S[4] := [3., 2., 1., 5., 4.]

R[4] := [5., 1., 2., 3., 4.]

S[5] := [2., 1., 5., 4., 3.]

>

On défnit la liste des éléments de G: [r0,r1,..,r4,s1,..,s5]

> G:=[seq(r[k],k=0..4),seq(s[k],k=1..5)];

G := [`@@`(r[1], 5), r[1], `@@`(r[1], 2), `@@`(r[1], 3), `@@`(r[1], 4), s[1], `@`(s[1], r[1]), `@`(s[1], `@@`(r[1], 2)), `@`(s[1], `@@`(r[1], 3)), `@`(s[1], `@@`(r[1], 4))]

> Question g)

> Nom:=proc(u)
local i,sol,N;

sol:=XX;N:=imageL(u);

for i from 1 to 5 do

if evalb(R[i-1]=N) then sol:=evaln(r[i-1]); fi;

if evalb(S[i]=N) then sol:=evaln(s[i]); fi;

od;

sol;

end:

Cette procédure renvoie le nom (r0,r,1...,s1,..s4 ou s5) de la permutation donnée en argument

>

> Question h)

>

> GC:=array(1..10,1..10); On alloue l'espace pour le tableau GC qui contiendra la table de composition de G

GC := array(1 .. 10, 1 .. 10, [])

> for i from 1 to 10 do
for j from 1 to 10 do

  GC[i,j]:=G[i]@G[j];

od;od;

> eval(GC);

>

matrix([[`@@`(r[1], 10), `@@`(r[1], 6), `@@`(r[1], 7), `@@`(r[1], 8), `@@`(r[1], 9), `@`(`@@`(r[1], 5), s[1]), `@`(`@@`(r[1], 5), s[1], r[1]), `@`(`@@`(r[1], 5), s[1], `@@`(r[1], 2)), `@`(`@@`(r[1], 5...

> Tab:=map(Nom,GC); Tab contient le nom de chaque élément de la table de composition

Tab := matrix([[r[0], r[1], r[2], r[3], r[4], s[1], s[2], s[3], s[4], s[5]], [r[1], r[2], r[3], r[4], r[0], s[5], s[1], s[2], s[3], s[4]], [r[2], r[3], r[4], r[0], r[1], s[4], s[5], s[1], s[2], s[3]],...

> Tous les élèments de la table sont dans G, donc G est stable par composition

la colonne r0 laisse invariant les éléments parcourus, c'est donc un élément neutre à droite
la ligne r0 laisse invariant les éléments parcourus, c'est donc un élément neutre à droite

Conclusion
: r0 est l'élément neutre de G (en fait r0 est l'identité)
toute ligne contient l'élément neutre r0, donc tout élément de G admet un symétrique à droite (voir colonne correspondante)

toute ligne contient l'élément neutre r0, donc tout élément de G admet un symétrique à gauche (voir ligne correspondante)

Conclusion
G est stable par passage au symétrique

G est donc un sous-groupe du groupe des permutations

>

Vérifions la commutativité, c'est à dire si la table de composition est symétrique par rapport à sa diagonale

> rep:=true: #Commutativité?
for i from 1 to 10 do

for j from i to 10 do

 if evalb(Tab[i,j]<>Tab[j,i]) then rep:=false,i,j; fi;

od: od: rep;

false, 9, 10

G n'est pas abélien, en effet l'element (10,9) est distinct de (9,10)

>

> Question i)

>

> cette procédure toute les composées de u avec les éléments de G jusqu'à trouver l'élément neutre r0

> inverse:=proc(u)
local i,F;

i:=1:F:=G[i]@u;

while evalb(evaln(r[0])<>Nom(F)) do i:=i+1;F:=G[i]@u; od;

Nom(G[i]);

end:

>

> inverse(r[1]);

r[4]

>

> Question j)

pour résoudre ux=v il suffit de prendre x=symetrique(u)ov

> resoudre:=proc(u,v)
local sol;

sol:=inverse(u)@v;

Nom(sol);

end:

> resoudre(r[1],s[2]);

s[3]

>