Bonjour,
Je sollicite une aide car je n'ai vraiment pas trouvé de réponse après de longues recherches au fait que deux programmes sur Python ayant pour objectif la transposition d'une matrice donnent des résultats différents : l'un fonctionne parfaitement (le premier) et renvoie bien la matrice transposée à celle qui en entrée de la fonction ; l'autre programme renvoie une matrice qui n'est pas la transposée de celle en entrée de la fonction. Voici les deux programmes : (les Fichiers programmes sont en pièces jointes).
Premier programme (celui qui fonctionne parfaitement et renvoie bien la matrice transposée) :
-------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 def transpose(B): #Entree : une matrice ; Sortie: la matrice transposée de celle en entrée. a=range(len(B)) #liste de 0 au ((nombre de lignes de la matrice B)-1) b=range(len(B[0])) #liste de 0 au ((nombre de colonnes de la matrice B) -1) Z=[[0 for i in a] for j in b] #génération d'une matrice nulle de dimensions de la transposée de B print(Z) # impression de la matrice Z de la ligne précédente pour vérification for i in a: for j in b: Z[j][i]= B[i][j] # détermination des coefficents de la matrice transposée de B return(Z)
Second programme (celui qui ne renvoie pas la matrice transposée, j'ignore pourquoi):
----------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 def transposecarre(B): #Entree : une matrice ; Sortie: la matrice transposée de celle en entrée. a=range(len(B)) #liste de 0 au ((nombre de lignes de la matrice B)-1) b=range(len(B[0])) #liste de 0 au ((nombre de colonnes de la matrice B) -1) Z=[[0]*len(B)]*len(B[0]) #génération d'une matrice nulle de dimensions de la transposée de B print(Z) # impression de la matrice Z de la ligne précédente pour vérification for i in a: for j in b: Z[j][i]= B[i][j] # détermination des coefficents de la matrice transposée de B return(Z)
Remarque : la matrice nulle Z générée est la même dans les deux programmes , la suite des deux programmes est identique. Alors, pourquoi le second programme ne renvoie pas la matrice transposée de celle en entrée ? (ce qui est bien le cas du premier programme).
Je vous remercie d'avance pour vos explications.
Bonne journée.
Partager