Foro de elhacker.net

Programación => Ejercicios => Mensaje iniciado por: Itzhack en 25 Septiembre 2014, 19:21 pm



Título: Ayuda: Multiplicación de matrices - Python
Publicado por: Itzhack en 25 Septiembre 2014, 19:21 pm
Hola todo el mundo! Estoy tratando de programar una multiplicación de dos matrices, que antes debe validar si las dos matrices son validas (matrices completas) y validar si las dos matrices se pueden multiplicar(requisito que el número de columnas de la Matriz 1 sea igual al numero de filas de la matriz 2), por el momento llegué a esto, pero obtengo el error abajo descrito:
-------------------------------------------------------------------------------------------------------------
A = [[1, 2], [3, 4]]           # matriz 2x2
B = [[1, 2, 3], [4, 5, 6]]   # matriz 2x3

def produitMatriciel (A,B):
    fila_A = len(A)
    columna_A = len(A[0])
    fila_B = len(B)
    columna_B = len (B[0])

    if columna_A != fila_B:
        print ('None')
        return

    C = []
    for i in range(len(A)):
        C.append([0]*(len(B[0])))

    for i in range(len(A)):
        for j in range(len(B)):
            for k in range(len(B[0])):
                C [ i ] [j] += A[ i ][k]*B[k][j]

    print (C)
------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------
<ipython-input-1-484d674c941c> in productoMatricial(A, B)
     18         for j in range(len(B)):
     19             for k in range(len(B[0])):
---> 20                 C[ i ] [ j ] += A[ i ][k]*B[k][j]
     21
     22     print (C)

IndexError: list index out of range


Título: Re: Ayuda: Multiplicación de matrices - Python
Publicado por: Minusfour_cierralo_o_baneamefull en 4 Noviembre 2014, 01:29 am
Casi lo tenias, revisa esta parte:

Código
  1. for i in range(len(A)):
  2.        for j in range(len(B)):
  3.            for k in range(len(B[0])):
  4.                C [ i ] [j] += A[ i ][k]*B[k][j]

PD: He quitado la solución por si alguien lo quiere resolver por si mismo