

→ I Introduction
→ I Introduction
→
I Introduction
→ I-1 Interprétation des matrices
→
I Introduction
→ I-1 Interprétation des matrices
→
I Introduction
→ I-2 Changements de base
→
I Introduction
→ I-2 Changements de base
→
I Introduction
→ I-3 Cas de rang 2
→
I Introduction
→ I-3 Cas de rang 2
→ II Forme normale d'Hermite
→ II Forme normale d'Hermite
→
II Forme normale d'Hermite
→ II-1 Définitions
représente un élément de l'anneau,
représente
un élément soumis à une condition : laquelle ?) :
peuvent être nulles, positives ou négatives.
, une condition sur les
par
rapport au pivot de la même ligne, les
sont des pivots (positifs ou nuls)
→
II Forme normale d'Hermite
→ II-1 Définitions
→
II Forme normale d'Hermite
→ II-2 Propriétés de la forme normale d'Hermite
→
II Forme normale d'Hermite
→ II-2 Propriétés de la forme normale d'Hermite
→
II Forme normale d'Hermite
→ II-3 Hermite et Hermitegp > hnf1(A) = H = mathnf(A,1) ; [A * H[2], H[2]];
gp > ww (n) = matrix(n,n,i,j, if(i+j == n + 1,1)) ; gp > ww(3) %1 = [0 0 1] [0 1 0] [1 0 0]
gp > {hnf2(A) = r = matsize(A) ; W1 = ww(r[1]) ; W2 = ww(r[2]) ; B = W2 * A~ * W1 ; H = mathnf(B,1) ; U = H[2] ; H = B * U ; [W1 * H~* W2, W1 * U~* W1]}
gp > hnf3(A) = H = hnf1(A~) ; [H[1]~ , H[2]~] ;
gp > hnf4(A) = H = hnf2(A~) ; [H[1]~ , H[2]~] ;
gp > {A = [-2, -2, -1, -3, -3, -3; -2, -3, -3, -2, 1, 0; -2, 0, -1, -2, 1, -2; -3, -1, -1, -3, 0, -3; -1, 0, 1, -3, -2, -1]} ;
gp > hnf1(A)[1] %3 = [0 2 1 0 1 1] [0 0 2 1 1 1] [0 0 0 1 0 0] [0 0 0 0 1 0] [0 0 0 0 0 1]
gp > hnf2(A)[1] %4 = [1 0 0 4 3 2] [0 1 0 4 2 -2] [0 0 1 1 1 1] [0 0 0 7 0 -5] [0 0 0 0 4 4]
gp > hnf3(A)[1] %5 = [16 26 0 0 0 0] [15 25 1 0 0 0] [10 15 0 2 0 0] [5 9 0 0 1 0] [12 18 0 1 0 1]
gp > hnf4(A)[1] %6 = [1 0 0 0 0 0] [0 1 0 0 0 0] [0 0 1 0 0 0] [0 0 0 1 0 0] [2 3 1 3 4 0]
hnf1(A) = H = mathnf(A,1) ; [A * H[2], H[2]];
ww (n) = matrix(n,n,i,j, if(i+j == n + 1,1)) ;
ww(3)
{hnf2(A) = r = matsize(A) ; W1 = ww(r[1]) ; W2 = ww(r[2]) ;
B = W2 * A~ * W1 ; H = mathnf(B,1) ; U = H[2] ; H = B * U ;
[W1 * H~* W2, W1 * U~* W1]}
hnf3(A) = H = hnf1(A~) ; [H[1]~ , H[2]~] ;
hnf4(A) = H = hnf2(A~) ; [H[1]~ , H[2]~] ;
{A = [-2, -2, -1, -3, -3, -3;
-2, -3, -3, -2, 1, 0;
-2, 0, -1, -2, 1, -2;
-3, -1, -1, -3, 0, -3;
-1, 0, 1, -3, -2, -1]} ;
hnf1(A)[1]
hnf2(A)[1]
hnf3(A)[1]
hnf4(A)[1]
→
II Forme normale d'Hermite
→ II-3 Hermite et Hermite
→
II Forme normale d'Hermite
→ II-4 Application de la forme d'Hermite
→
II Forme normale d'Hermite
→ II-4 Application de la forme d'Hermite
→ III Forme normale de Smith
→ III Forme normale de Smith
→
III Forme normale de Smith
→ III-1 Définitions
→
III Forme normale de Smith
→ III-1 Définitions
→
III Forme normale de Smith
→ III-2 Forme normale de Smith d'une matrice
→
III Forme normale de Smith
→ III-2 Forme normale de Smith d'une matrice
→
III Forme normale de Smith
→ III-3 Comment calculer la forme de Smith
→
III Forme normale de Smith
→ III-3 Comment calculer la forme de Smith
→
III Forme normale de Smith
→ III-4 Résolution de quelques problèmes
→
III Forme normale de Smith
→ III-4 Résolution de quelques problèmes
→ IV Groupes abéliens de type fini
→ IV Groupes abéliens de type fini
→
IV Groupes abéliens de type fini
→ IV-1 Définitions
→
IV Groupes abéliens de type fini
→ IV-1 Définitions
→
IV Groupes abéliens de type fini
→ IV-2 Module des relations
→
IV Groupes abéliens de type fini
→ IV-2 Module des relations
→ V Des problèmesV-3 Un système modulo des entiers divers
V-4 Un système linéaire : condition de compatibilité
V-5 Le groupe multiplicatif dans les rationnels
V-9 Groupe abélien défini par générateurs et relations (1)
→ V Des problèmes
→
V Des problèmes
→ V-1 Les boeufs d'Archimèdeb = m + 5/6 * n n = m + 9/20*t t = m + 13/42*b B = 7/12(n + N) N = 9/20(t + T) T = 11/30(m + M) M = 13/42(b + B)qui conduit à la solution, z étant un paramètre entier quelconque,
{ A =
[-6, 5, 6, 0, 0, 0, 0, 0;
0, -20, 20, 9, 0, 0, 0, 0;
13, 0, 42, -42, 0, 0, 0, 0;
0, 7, 0, 0, -12, 7, 0, 0;
0, 0, 0, 9, 0, -20, 0, 9;
0, 0, 11, 0, 0, 0, 11, -30;
13, 0, 0, 0, 13, 0, -42, 0]
}
%1 =
[-6, 5, 6, 0, 0, 0, 0, 0;
0, -20, 20, 9, 0, 0, 0, 0;
13, 0, 42, -42, 0, 0, 0, 0;
0, 7, 0, 0, -12, 7, 0, 0;
0, 0, 0, 9, 0, -20, 0, 9;
0, 0, 11, 0, 0, 0, 11, -30;
13, 0, 0, 0, 13, 0, -42, 0]
gp> H = mathnf(A, 1)[1]
%2 =
[45, 39, 6, 32, 10, 0, 3;
0, 1, 0, 0, 0, 0, 0;
0, 0, 7, 4, 0, 0, 1;
0, 0, 0, 1, 0, 0, 0;
0, 0, 0, 0, 1, 0, 0;
0, 0, 0, 0, 0, 1, 0;
0, 0, 0, 0, 0, 0, 1]
gp> U = mathnf(A, 1)[2]
%3 =
[10366482 -5152434 377822331012 -39871691734469
-231909102725990 314125208121690 2649594446226 328544517685]
[7460514 -3708081 271909871649 -28694721544752
-166899542932178 226068546006716 1906850989602 236445784965]
[4149387 -2062359 151230771311 -15959423780508
-92826150282503 125734753116095 1060551954891 131506363548]
[7358060 -3657160 268175778529 -28300661698320
-164607539221500 222963984201380 1880664521580 233198714260]
[7206360 -3581760 262646839434 -27717191275459
-161213850708508 218367169768860 1841891148174 228390891960]
[4893246 -2432079 178341853095 -18820463498892
-109467058282407 148275173597044 1250676692982 155081458395]
[5439213 -2703441 198240457519 -20920368550692
-121680914158297 164819069347075 1390221731600 172384769652]
[3515820 -1747460 128139450571 -13522590521440
-78652590294960 106536401569829 898617018380 111426748840]
gp> U[,1]
%4 = [10366482, 7460514, 4149387, 7358060, 7206360,
4893246, 5439213, 3515820]~
b = 10366482z, n = 7460514z, m = 4149387z, t = 7358060z, B = 7206360z, N = 4893246z, M = 5439213z, T = 3515820z.
{ A =
[-6, 5, 6, 0, 0, 0, 0, 0;
0, -20, 20, 9, 0, 0, 0, 0;
13, 0, 42, -42, 0, 0, 0, 0;
0, 7, 0, 0, -12, 7, 0, 0;
0, 0, 0, 9, 0, -20, 0, 9;
0, 0, 11, 0, 0, 0, 11, -30;
13, 0, 0, 0, 13, 0, -42, 0]
}
H = mathnf(A, 1)[1]
U = mathnf(A, 1)[2]
U[,1]
→
V Des problèmes
→ V-1 Les boeufs d'Archimède
→
V Des problèmes
→ V-2 Identité de Bézoutgp> mathnf(Mat([12, 43, 189, 19, 289]), 1) %1 = [Mat(1), [-289, 1032, 4536, 456, -24; 0, 1, 0, 0, 0; 0, 0, 1, 0, 0; 0, 0, 0, 1, 0; 12, -43, -189, -19, 1]]
gp> U = mathnf(A, 1)[2] %2 = [-289, 1032, 4536, 456, -24; 0, 1, 0, 0, 0; 0, 0, 1, 0, 0; 0, 0, 0, 1, 0; 12, -43, -189, -19, 1]
gp> A*U[2] %3 = [0, 0, 0, 0, 1]
gp> mathnf(A, 1) %4 = [[12; 43; 189; 19; 289], Mat(1)]
gp> Y = [y1, y2, y3, y4, 220]~ ;
gp> U*Y %6 = [-289*y1 + 1032*y2 + 4536*y3 + 456*y4 - 5280] [y2] [y3] [y4] [12*y1 + -43*y2 -189*y3 - 19*y4 + 220)]
A = Mat([12, 43, 189, 19, 289]) HU = mathnf(A, 1) H1 = HU[1] ; U = HU[2] H = A*U Z = 220*H1[1,1] Y = [y1,y2,y3,y4,Z]~ U*Y
→
V Des problèmes
→ V-2 Identité de Bézout
→
V Des problèmes
→ V-3 Un système modulo des entiers divers
gp> { vandm(a,m)= M = matrix(#a,#a,i,j,a[i]^(j-1));
M = concat(M,matdiagonal(m)); } ;
gp> A1 = vandm([53, 19, 2, 47],[85, 68, 561, 64]) ;
gp> VM = mathnf(M, 1)
%2 = [[17, 0, 1, 0; 0, 68, 52, 17; 0, 0, 1, 0; 0, 0, 0, 1],
[-179520, -2116395503, -89442813409, -4183688174927,
-71808, 0, 111400576, 40293825;
0, 1, 0, 0, 0, 0, 0, 0;
0, 0, 1, 0, 0, 0, 0, 0;
0, 0, 0, 1, 0, 0, 0, 0;
2112, 24898770, 1052268360, 49219859130, 845, 0, -1310595, -474045;
2640, 31123463, 1315335486, 61524826001, 1056, 1, -1638243, -592556;
320, 3772541, 159434605, 7457554679, 128, 0, -198575, -71825;
2805, 33068679, 1397543925, 65370126111, 1122, 0, -1740634, -629591]]
gp> H = VM[1]
%3 = [17, 0, 1, 0
0, 68, 52, 17;
0, 0, 1, 0;
0, 0, 0, 1]
gp> VM[2]
%4 = [-179520, -2116395503, -89442813409, -4183688174927,
-71808, 0, 111400576, 40293825;
0, 1, 0, 0, 0, 0, 0, 0;
0, 0, 1, 0, 0, 0, 0, 0;
0, 0, 0, 1, 0, 0, 0, 0;
2112, 24898770, 1052268360, 49219859130, 845, 0, -1310595, -474045;
2640, 31123463, 1315335486, 61524826001, 1056, 1, -1638243, -592556;
320, 3772541, 159434605, 7457554679, 128, 0, -198575, -71825;
2805, 33068679, 1397543925, 65370126111, 1122, 0, -1740634, -629591]
gp> H^(-1)*[20, 37, 496, 61]~ %5 = [-28, -394, 496, 61]~
gp> Y0 = concat([0, 0, 0, 0], Y~)~ %6 = [0, 0, 0, 0, -28, -394, 496, 61]~
gp> S0 = vecextract(V*Y0,"1..4") %7 = [57714619645, 0, 0, 0]~
gp> K0 = S0-[43, 52, -67, 7]~ %8 = [57714619602, -52, 67, -7]~
gp> mathnf(concat(K,K0)) == mathnf(K) %9 = 1
gp> matsnf(A) %10 = [68, 17, 1, 1]
gp> matsnf(A, 1) %11 = [[-52, 1, 0, -17; -1, 0, 1, 0; 1, 0, 0, 0; 0, 0, 0, 1], [8930, -7238, -29469, -18887424, 0, -6293129, 6072323, 12689988; -5125, 4149, 12001, 11510400, 0, 3835709, -3724697, -7733550; 340, -273, -759, -768768, 0, -256187, 248943, 516516; -5, 4, 11, 11328, 0, 3775, -3669, -7611; 612, -486, -1320, -1390272, 0, -463304, 450417, 934089; 0, -7, 0, 240, 1, 80, -85, -161; 0, 0, 15, -2048, 0, -684, 732, 1376; 0, 0, 0, 3, 0, 1, -1, -2], [0, 0, 0, 0, 68, 0, 0, 0; 0, 0, 0, 0, 0, 17, 0, 0; 0, 0, 0, 0, 0, 0, 1, 0; 0, 0, 0, 0, 0, 0, 0, 1]]
gp> U = matsnf(A, 1)[1] %12 = [-52, 1, 0, -17; -1, 0, 1, 0; 1, 0, 0, 0; 0, 0, 0, 1]
gp> B=[b1,b2,b3,b4]~;
gp> B1 = U*B %14 = [b3, 52*b3 + (17*b4 + b1), b2 + b3, b4]~
gp> U = matsnf(A, 1)[2] %15 =[8930, -7238, -29469, -18887424, 0, -6293129, 6072323, 12689988; -5125, 4149, 12001, 11510400, 0, 3835709, -3724697, -7733550; 340, -273, -759, -768768, 0, -256187, 248943, 516516; -5, 4, 11, 11328, 0, 3775, -3669, -7611; 612, -486, -1320, -1390272, 0, -463304, 450417, 934089; 0, -7, 0, 240, 1, 80, -85, -161; 0, 0, 15, -2048, 0, -684, 732, 1376; 0, 0, 0, 3, 0, 1, -1, -2]
gp> U = matsnf(A, 1)[3] %16 = [0, 0, 0, 0, 68, 0, 0, 0; 0, 0, 0, 0, 0, 17, 0, 0; 0, 0, 0, 0, 0, 0, 1, 0; 0, 0, 0, 0, 0, 0, 0, 1]
{ vandm(a,m) = M = matrix(#a,#a,i,j,a[i]^(j-1));
M = concat(M,matdiagonal(m)); M }
A1 = vandm([53, 19, 2, 47],[85, 68, 561, 64]) ;
VM = mathnf(A1, 1)
H = VM[1]
V = VM[2]
K = vecextract(V,"1..4","1..4")
B = [20, 37, 496, 61]
Y = H^(-1)*B~
Y1 = concat([y1,y2,y3,y4], Y~)~
Y1 = vecextract(V*Y1,"1..4")
Y0 = concat([0, 0, 0, 0], Y~)~
S0 = vecextract(V*Y0,"1..4")
K0 = S0-[43, 52, -67, 7]~
mathnf(concat(K,K0)) == mathnf(K)
UVS = matsnf(A1, 1) ;
U = UVS[1]
V = UVS[2]
S = UVS[3]
B = [b1,b2,b3,b4]~
B1 = U*B
→
V Des problèmes
→ V-3 Un système modulo des entiers divers
→
V Des problèmes
→ V-4 Un système linéaire : condition de compatibilité
gp> {A =
[4, -17, -22, -9;
0, -30, 45, -18;
20, -75, 95, -39;
7, -25, 33, -14]
} ;
gp> U = matsnf(A, 1)[1]; S = matsnf(A, 1)[3]
%2 = [29040, 0, 0, 0
0, 1, 0, 0;
0, 0, 1, 0;
0, 0, 0, 1]
gp> B=[b1,b2,b3,b4]; U*B
%2 = [133*b2 + (265*b3 + (1760*b4 - 62*b1)),
15*b2 + (12*b3 - 7*b1), b3, b4]~
gp> B = Mat([-62, 133, 265, 1760, 29040]) %3 = [-62, 133, 265, 1760, 29040]
gp> mathnf(Mat(B)) %4 = [1]
gp> mathnf(Mat(B), 1) %5 = [Mat(1), [14520, -809837, 106496610, 707298240, -401874; 0, 2, -265, -1760, 1; 0, 0, 1, 0, 0; 0, 0, 0, 1, 0; 31, -1729, 227370, 1510080, -858]]
gp> mathnf(Mat(B), 1)[2] %6 = [14520, -809837, 106496610, 707298240, -401874; 0, 2, -265, -1760, 1; 0, 0, 1, 0, 0; 0, 0, 0, 1, 0; 31, -1729, 227370, 1510080, -858]
gp> B*mathnf(Mat(B), 1)[2] %7 = [0, 0, 0, 0, 1]
gp> C = vecextract(mathnf(Mat(B), 1)[2],"1..3","1..4") %8 = [14520, -809837, 106496610, 707298240; 0, 2, -265, -1760; 0, 0, 1, 0]
gp> [z1,z2,z3]*C %9 = [14520*z1, -809837*z1 + 2*z2, 106496610*z1 + (-265*z2 + z3), 707298240*z1 - 1760*z2]
{A = [4, -17, -22, -9;
0, -30, 45, -18;
20, -75, 95, -39;
7, -25, 33, -14]
} ;
U = matsnf(A, 1)[1]; S = matsnf(A, 1)[3]
B=[b1,b2,b3,b4]; U*B
B = Mat([-62, 133, 265, 1760, 29040])
mathnf(Mat(B))
mathnf(Mat(B), 1)
mathnf(Mat(B), 1)[2]
B*mathnf(Mat(B), 1)[2]
C = vecextract(mathnf(Mat(B), 1)[2],"1..3","1..4")
[z1,z2,z3]*C
→
V Des problèmes
→ V-4 Un système linéaire : condition de compatibilité
→
V Des problèmes
→ V-5 Le groupe multiplicatif dans les rationnels
→
V Des problèmes
→ V-5 Le groupe multiplicatif dans les rationnels
→
V Des problèmes
→ V-6 Carreleur cherche aide
gp> A = [\A] ; gp> H = mathnf(A) ; W=[0,1;1,0] ; V = W * mathnf(W*A)*W ; gp> H \%3 = [\H] gp> V \%4 = [\V]
gp> { carreleur(A) = n=#A ; L=List([]) ;
for(k = 1, n!, v = numtoperm(3,k);
w = matrix(n, n, i, j, if(i == v[j], 1));
H = mathnf(w*A) ; B = w^(-1)*H*w ;
V=vector(n, i, B[i, i]) ;
listput( L, V) ;
);
Vec(L)}
gp> A = [5, 2, 1; -4, 2, 4; 0, 3, -6]
%1 = [5, 2, 1;
-4, 2,4;
0, 3, -6]
gp> carreleur(A)
%3 = [[1, 12, 15], [3, 2, 30], [15, 2, 6], [5, 12, 3],
[15, 4, 3], [1, 6, 30]]
A = [\A] ;
H = mathnf(A) ; W=[0,1;1,0] ; V = W * mathnf(W*A)*W ;
H
V
{
carreleur(A) = n=#A ; L=List([]) ;
for(k = 1, n!, v = numtoperm(3,k);
w = matrix(n, n, i, j, if(i == v[j], 1));
H = mathnf(w*A) ; B = w^(-1)*H*w ;
V=vector(n, i, B[i, i]) ;
);
Vec(L)
}
A = [5, 2, 1; -4, 2, 4; 0, 3, -6]
carreleur(A)
→
V Des problèmes
→ V-6 Carreleur cherche aide
→
V Des problèmes
→ V-7 Base
gp> {A = mattranspose([-2, -2, -2, -3, -1;
-2, -3, 0, -1, 0 ;
-1, -3, -1, -1, 1;
-3, -2, -2, -3, -3 ;
-3, 1, 1, 0, -2 ;
-3, 0, -2, -3, -1])
} ;
gp> mathnf(A, 1)
%2 = [2, 1, 0, 1, 1;
0, 2, 1, 1, 1;
0, 0, 1, 0, 0;
0, 0, 0, 1, 0;
0, 0, 0, 0, 1]
gp> mathnf(A, 1)[2]
%3 = [-13, -2, 10, -1, 3, -1;
8, 2, -6, 2, -3, 1;
-5, -2, 3, -2, 2, -1;
5, 1, -4, 0, -1, 0;
-7, -2, 5, -1, 2, -1;
7, 1, -5, 1, -2, 1]
gp> matsnf(A) %4 =[4, 1, 1, 1, 1]
gp> U = matsnf(A, 1)[1]
%5 = [-2, 1, -1, -3, -3;
0, 0, 1, 0, 0;
0, 0, 0, 1, 0;
0, 0, 0, 0, 1;
1, 0, 0, 0, 0]
gp> matsnf(A, 1)[2]
%6 = [-13, -4, 12, 28, 24, 23;
8, 2, -6, -19, -15, -14;
-5, -2, 3, 12, 9, 8;
5, 1, -5, -11, -10, -9;
-7, -2, 6, 16, 13, 12;
7, 3, -6, -15, -12, -12]
gp> matsnf(A, 1)[3]
%7 = [0, 4, 0, 0, 0, 0;
0, 0, 1, 0, 0, 0;
0, 0, 0, 1, 0, 0;
0, 0, 0, 0, 1, 0;
0, 0, 0, 0, 0, 1]
gp> matsnf(A, 1)[1]^(-1)
%8 = [0, 0, 0, 0, 1;
1, 1, 3, 3, 2;
0, 1, 0, 0, 0;
0, 0, 1, 0, 0;
0, 0, 0, 1, 0]
gp> A*matsnf(A, 1)[2]
%9 = [0, 0, 0, 0, 0, 1;
0, 4, 1, 3, 3, 2;
0, 0, 1, 0, 0, 0;
0, 0, 0, 1, 0, 0;
0, 0, 0, 0, 1, 0]
{A = mattranspose([-2, -2, -2, -3, -1;
-2, -3, 0, -1, 0 ;
-1, -3, -1, -1, 1;
-3, -2, -2, -3, -3 ;
-3, 1, 1, 0, -2 ;
-3, 0, -2, -3, -1])
}
mathnf(A, 1)
mathnf(A, 1)[2]
matsnf(A)
U = matsnf(A, 1)[1]
matsnf(A, 1)[2]
matsnf(A, 1)[3]
matsnf(A, 1)[1]^(-1)
A*matsnf(A, 1)[2]
→
V Des problèmes
→ V-7 Base
→
V Des problèmes
→ V-8 Groupe abélien
gp> {A= = [10, 10, -9, -8;
-16, -6, 22, 20;
6, -1, -4, -6;
8, 12, -5, -4;
12, 8, -13, -12]};
gp> V = mathnf(A, 1)[1]
%2 = [0, 2, 1;
6, 4, 4;
15, 0, 13;
0, 4, 1;
0, 0, 1]
gp> mathnf(A, 1)[2]
%3 = [-4, 3, 1, -1;
2, -1, 0, 1;
4, 4, 0, 7;
-7, -2, 1, -8]
gp> matsnf(A)
%4 = [0, 0, 6, 1, 1]
gp> matsnf(A, 1)[1]
%5 = [-2, 0, 0, 1, 1;
-22, -5, 2, 16, 0;
-15, -5, 0, 11, 0;
0, 0, 1, 0, 0;
11, 3, -1, -8, 0]
gp> matsnf(A, 1)[2]
%6 = [4, 5, 1, -5;
-2, 4, 1, 6;
-4, 2, 1, 9;
7, 3, 0, -12]
gp> U1 = matsnf(A, 1)[1]^(-1)
%7 = [0, 7, 8, 11, 25;
0, 1, 0, 0, 2;
0, 0, 0, 1, 0;
0, 10, 11, 15, 35;
1, 4, 5, 7, 15]
gp> mathnf(A) == mathnf(concat (A, U1[,4]))
%8 = 1
gp> mathnf(A) == mathnf(concat (A, U1[,5]))
%9 = 1
{A= = [10, 10, -9, -8;
-16, -6, 22, 20;
6, -1, -4, -6;
8, 12, -5, -4;
12, 8, -13, -12]}
V = mathnf(A, 1)[1]
mathnf(A, 1)[2]
matsnf(A)
matsnf(A, 1)[1]
matsnf(A, 1)[2]
U = matsnf(A, 1)[1]
U1 = U^(-1):
mathnf(A) == mathnf(concat (A, U1[,4]))
mathnf(A) == mathnf(concat (A, U1[,5]))
→
V Des problèmes
→ V-8 Groupe abélien
→
V Des problèmes
→ V-9 Groupe abélien défini par générateurs et relations (1)
gp> { A = [8, 2, 0;
9, -20, 27;
0, 22, -24]
} ;
gp> matsnf(A)
time = 0 ms.
%2 = [240, 2, 1]
gp> matsnf(A, 1)[3]
%3 = [240 0 0]
[0 2 0]
[0 0 1]
{ A = [8, 2, 0;
9, -20, 27;
0, 22, -24] };
matsnf(A)
matsnf(A, 1)[3]
→
V Des problèmes
→ V-9 Groupe abélien défini par générateurs et relations (1)
→
V Des problèmes
→ V-10 Groupe abélien défini par générateurs et relations (2)
gp> { A =
[3, 25, 46;
1, 8, 20;
1, 10, 11]} ;
gp> U = matsnf(A, 1)[1]
%2 = [1, -12, -10;
0, 1, 0;
0, 0, 1]
gp> V = matsnf(A, 1)[2]
%3 = [112, 61, 52;
-9, -5, -4;
-2, -1, -1]
gp> D = matsnf(A, 1)[3]
%4 = [19, 0, 0;
0, 1, 0;
0, 0, 1]
gp> U^(-1)
%5 = [1, 12, 10;
0, 1, 0;
0, 0, 1]
{ A = [3, 25, 46;
1, 8, 20;
1, 10, 11]
} ;
U = matsnf(A, 1)[1]
V = matsnf(A, 1)[2]
D = matsnf(A, 1)[3]
U^(-1)
→
V Des problèmes
→ V-10 Groupe abélien défini par générateurs et relations (2)
→
V Des problèmes
→ V-11 Groupe abélien défini par générateurs et relations (3)
gp> {A =
[3, -4;
2, -1;
-2, 4];
}
gp> matsnf(A)
%2 = [0, 1, 1]
→
V Des problèmes
→ V-11 Groupe abélien défini par générateurs et relations (3)