def matrice_identite(n):
    """n : un entier
    renvoie la matrice identite de taille n"""
    mat = permutation.matrice_nulle(n)
    for i in range(n):
        mat[i][i] = 1
    return mat
def matrice_transvection(i, a, j, taille):
    """Prend en parametre une transvection (i, a, j) correspondant a l'operation
    Li <- Li + aLj avec i != j et renvoie la matrice correspondant a cette
    transvection c'est a dire Id + a E(i,j) de la taille specifiee"""
    mat = permutation.matrice_nulle(taille)
    for lig in range(taille):
        mat[lig][lig] = 1
    mat[i][j] = a
    return mat
def matrice_transvection(i,a,j,taille):
    """Prend en parametre une transvection (i, a, j) correspondant a l'operation
    Li <- Li + aLj avec i != j et renvoie la matrice correspondant a cette
    transvection c'est a dire Id + a E(i,j) de la taille specifiee"""
    mat = permutation.matrice_nulle(taille)
    for lig in range(taille):
        mat[lig][lig] = 1
    mat[i][j] = a
    return mat
def produit(m1, m2):
    #m1 une matrice
    #m2 une matrice
    #R : M1*M2
    mat = permutation.matrice_nulle(len(m1))
    for ligne in range(len(mat)):
        for colonne in range(len(mat[0])):
            somme = 0
            for i in range(len(m1[0])):
                somme += m1[ligne][i] * m2[i][colonne]
            mat[ligne][colonne] = somme
    return mat
def produit(m1,m2):
    #m1 une matrice
    #m2 une matrice
    #R : M1*M2
    mat = permutation.matrice_nulle(len(m1))
    for ligne in range(len(mat)) :
        for colonne in range(len(mat[0])) :
            somme = 0 
            for i in range(len(m1[0])) :
                somme += m1[ligne][i] * m2[i][colonne] 
            mat[ligne][colonne] = somme
    return mat