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

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)
et

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)