Produit de deux matrices sous python

Résolu/Fermé
energetix Messages postés 10 Date d'inscription dimanche 25 janvier 2009 Statut Membre Dernière intervention 9 juin 2010 - 6 nov. 2009 à 21:02
energetix Messages postés 10 Date d'inscription dimanche 25 janvier 2009 Statut Membre Dernière intervention 9 juin 2010 - 9 nov. 2009 à 17:28
Bonjour,
j'ai un soucis pour trouver le code pour calculer le produit de deux matrices voilà mon code :



def multiply(m1, m2):
m = []
if len(m1[0]) != len(m2):
return False
for i in range(len(m1)):
ligne = []
for j in range(len(m2[0])):
for k in range(len(m1[0])):
element = m1[i][j] * m2[i][j]
element = element + m1[i][k] * m2[k][i]
ligne.append(element)
m.append(ligne)
return m

je lance ce programme avec les listes suivantes :
m1 = [[0,0,0],[2,1,1],[2,1,1]]
m2 = [[3,2,1],[3,3,0],[0,1,2]]

et il me retourne : [[0, 0, 0], [7, 4, 1], [2, 3, 4]] a part la premiere ligne le reste est mauvais mais ou est l'erreur ??? please help !!!

3 réponses

loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 148
8 nov. 2009 à 10:02
Ah, c'est quand même 'plusse' lisible ;-)
def multiply(m1, m2):
  m = []
  if len(m1[0]) != len(m2):
    print "erreur"
    return False
  for i in range(len(m1)):
    ligne = []
    for j in range(len(m2[0])):
      element = 0
      for k in range(len(m1[0])):
        element = element + m1[i][k] * m2[k][j]
      ligne.append(element)
    m.append(ligne)
  return m
Seulement deux ch'tites erreurs, mais évidemment cela suffit à rendre un programme inefficace voire dangereux !
Bonne continuation.
25
energetix Messages postés 10 Date d'inscription dimanche 25 janvier 2009 Statut Membre Dernière intervention 9 juin 2010 36
9 nov. 2009 à 17:28
ok grand merci a toi ;-) !!
1