Bonjour tous le monde,
J'ai une procédure dans SageMath qui s'appelle FI et je voudrais la modifier de façon à ce qu'elle m'affiche les différentes matrices
qui sont stocker au cours du processus dans les variables P et Q et lorsque je fais appel à l'autre procédure forme_smith que ces matrices m'apparaissent sous forme de liste ...
Je ne vois pas comment m'y prendre merci de m'aider
Cdt
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 def FI(D,P,Q) : # prend 3 matrices # renvoie sa forme de Smith D et les matrices de passage P,Q n= D. nrows (); p= D. ncols (); if D == 0 : #Ce test equivaut a tester si D est nulle ou vide ! return (D,P,Q); else : (D,P,Q)= coef_non_nul_en_tete (D,P,Q); (D,P,Q)= pgcd_en_tete (D,P,Q); (D,Q)= annule_premiere_ligne (D,Q); (D,P)= annule_premiere_colonne (D,P); a= D[0 ,0]; P1= matrix (n -1,n -1 ,1); Q1= matrix (p -1,p -1 ,1); D1= D. submatrix (1 ,1,n -1,p -1); (D1 ,P1 ,Q1)= FI(D1 ,P1 ,Q1); (D,P2 ,Q2)= sur_matrices (D1 ,P1 ,Q1 ,a); P= P2*P; Q= Q*Q2; return (D,P,Q)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 def forme_smith (M) : # prend une matrice M # renvoie D sous forme de Smith et P,Q qui comptabilisent # les operations lignes - colonnes effectuees pendant le processus n= M. nrows (); p= M. ncols (); D= copy (M); P= matrix (n,n ,1); Q= matrix (p,p ,1); (D,P,Q)= FI(D,P,Q); return (D,P,Q)
Partager