Ir para conteúdo
Fórum Script Brasil
  • 0

[Ajuda] Como multiplicar matrizes


dfop02

Pergunta

Eu fiz algumas tentativas e cheguei a isso:

def prodMatrix(matrizA, matrizB):
    """Multiplica duas matrizes."""
    sizeL = len(matrizA)
    sizeC = len(matrizA[0])
    matrizR = []
    # Multiplica
    for i in range(sizeL):
        for j in range(sizeC):
            val = 0
            for k in matrizB:
                    val += matrizA[i][k]*matrizB[k][j]
            matrizR[i][j] = val
    return matrizR

mas não da certo, da esse erro:

    val = val + matrizA[i][j]*matrizB[k][n]
TypeError: list indices must be integers, not list

Basicamente minha ideia era criar uma terceira lista C onde vou jogar o resultado das multiplicações e somas necessarias

Eu olhei alguns sites sobre e foi o mais próximo que consegui resolver =/

 

alguém pode me ajudar?

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Eu tentei mas ainda não consegui, mas mudei bastante de como estava, olhem:

def prodMatrix(matrizA, matrizB):
    """Multiplica duas matrizes."""
    matrizR = []
    if colunasA != linhasB:
        print("não tem solucao")
    else:
        for k in range(linhasA):
            matrizR.append([0]*colunasB)
            for i in range(colunasB):
                matrizR[k][i] = 0

        for i in range(linhasA):
            for j in range(colunasA):
                for k in range(colunasB):
                    print(matrizR[i][j])
                    matrizR[i][k] += matrizA[i][j] * matrizB[i][k]
    return matrizR

Ainda não da certo =/

Link para o comentário
Compartilhar em outros sites

  • 0

Só tinha um probleminha nessa linha "for k in matrizB:", pois aqui você não quer que k assuma como valor linhas inteiras da matrizB... O correto seria "for k in range(sizeLB):" ou "for k in range(sizeCA):".

Corrigi isso, e aproveitei pra fazer a função também poder multiplicar matrizes não quadradas:

def prodMatrix(matrizA, matrizB):
    """Multiplica duas matrizes."""
    sizeLA = len(matrizA)
    sizeCA = len(matrizA[0]) # deve ser igual a sizeLB para ser possível multiplicar as matrizes
    sizeCB = len(matrizB[0])
    matrizR = []
    # Multiplica
    for i in range(sizeLA):
        matrizR.append([])
        for j in range(sizeCB):
            val = 0
            for k in range(sizeCA):
                    val += matrizA[i][k]*matrizB[k][j]
            matrizR[i].append(val)
    return matrizR

 

A lógica é essa, mas não testei a função.

 

Edit: Testei e encontrei mais erros, era necessário criar as linhas na matriz a cada iteração, e adicionar os valores em cada linha da matrizR, corrigi isso e agora funciona corretamente.

Editado por isrnick
Link para o comentário
Compartilhar em outros sites

  • 0

Estou tentando criar um código em que faça a multiplicação de matrizes, fazendo o usuário escrever a configuração dela, mas não to conseguindo fazer a multiplicação entre elas, segue  o código 

#multiplicação de matrizes

#parte em que o usuario digitara a configuração da matriz

 

print("MLTIPLICAÇÃO DE MATRIZES")

print("Primeira matriz: ")

qtdl = int(input("Digite quantas linhas: "))

qtdc = int(input("Digite quantas colunas: "))

 

print("Segunda matriz:")

qtdl2 = int(input("Digite quantas linhas: "))

qtdc2 = int(input("Digite quantas colunas: "))

#verificação se há multplicação entre as matrizes

while qtdc != qtdl2:

  print("Não existe multiplicação de matrizes em que, número de colunas da primeira é diferente do número de linhas da segunda")

  qtdl2 = int(input("Digite quantas linhas da segunda matriz: "))

#parte em que o usuario digitará os valores da matriz, sendo que ele fara linha por linha

print("Digite os valores da primera Matriz")

mat=[]

for l in range(qtdl):

  linha = []

  for c in range(qtdc):

    linha.append(int(input()))

  mat.append(linha)

print("A primeira matriz é:")  

for linha in mat:

  print(linha)  

 

print("Digite os valores da segunda Matriz")

mat2=[]

for l in range(qtdl2):

  linha2 = []

  for c in range(qtdc2):

    linha2.append(int(input()))

  mat2.append(linha2)

print("A segunda matriz é:")  

for linha2 in mat2:

  print(linha2) 

print("A multiplicação sera:")     

#parte em que será feita a multiplicação das matrizes 

prod = [] 

for l in range(qtdl):

  ac = 0

for c in range(qtdc):

  ac = ac+ (linha[l]*linha2[c]) 

  prod.append(ac)

  print(prod)   

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...