Crie a função multiplica_matriz(mat1, mat2) que deve retornar o produto de duas matrizes bidimensionais genéricas, sem alterar as matrizes originais. A função deve imprimir uma mensagem de erro e retornar um vetor vazio ([]) caso não for possível realizar o produto das duas matrizes.
Passo 1
Beleza, vamos resolver esse exercício juntos! A gente precisa criar uma função chamada
multiplica_matriz(mat1, mat2)
que vai multiplicar duas matrizes bidimensionais. Isso faz parte do conteúdo de álgebra linear e programação, especificamente trabalhando com listas em Python. Para fazer essa multiplicação, vamos precisar verificar se o número de colunas da primeira matriz é igual ao número de linhas da segunda matriz. Se não for, não dá pra multiplicar e a gente precisa tratar esse caso.Passo 2
Primeiro, vamos relembrar como funciona a multiplicação de matrizes. Para multiplicar duas matrizes, a quantidade de colunas da primeira matriz (
mat1
) tem que ser igual à quantidade de linhas da segunda matriz (mat2
). Se mat1
for uma matriz de tamanho m x n
e mat2
for de tamanho n x p
, o resultado será uma matriz de tamanho m x p
. Cada elemento da matriz resultante é calculado como a soma dos produtos dos elementos correspondentes das linhas de mat1
e das colunas de mat2
.Passo 3
Agora, na nossa função, vamos começar verificando se é possível multiplicar as duas matrizes. Precisamos saber o número de linhas e colunas de cada uma. Em Python, podemos usar
len(mat1)
para obter o número de linhas de mat1
e len(mat1[0])
para as colunas. Fazemos a mesma coisa para mat2
. Se o número de colunas de mat1
não for igual ao número de linhas de mat2
, vamos imprimir uma mensagem de erro e retornar uma lista vazia []
.Passo 4
Se as matrizes puderem ser multiplicadas, vamos criar uma matriz resultado preenchida com zeros. O tamanho dessa matriz será o número de linhas de
mat1
por o número de colunas de mat2
. Para preencher essa matriz, vamos usar dois loops: um para percorrer as linhas de mat1
e outro para percorrer as colunas de mat2
. Dentro desses loops, vamos calcular cada elemento multiplicando e somando os elementos correspondentes.Passo 5
Por fim, depois de preencher toda a matriz resultado, vamos retorná-la. Assim, garantimos que as matrizes originais não são alteradas e que o produto é corretamente calculado.
Resposta
def multiplica_matriz(mat1, mat2):
# Verifica se as matrizes podem ser multiplicadas
linhas_mat1 = len(mat1)
colunas_mat1 = len(mat1[0]) if mat1 else 0
linhas_mat2 = len(mat2)
colunas_mat2 = len(mat2[0]) if mat2 else 0
if colunas_mat1 != linhas_mat2:
print("Erro: Não é possível multiplicar as matrizes devido às dimensões incompatíveis.")
return []
# Inicializa a matriz resultado com zeros
resultado = [[0 for _ in range(colunas_mat2)] for _ in range(linhas_mat1)]
# Realiza a multiplicação
for i in range(linhas_mat1):
for j in range(colunas_mat2):
for k in range(colunas_mat1):
resultado[i][j] += mat1[i][k] * mat2[k][j]
return resultado
Exercícios relacionados
Crie a função mat_transposta(matriz). A função deve receber uma matriz genérica bidimensional, de qualquer tamanho (não necessariamente quadrada) e retornar a matriz transposta, sem alterar a matriz original.
Leia um vetor de 16 posições e troque as 8 primeiras posições pelas 8 últimas posições. Imprima o vetor original e o vetor trocado.
Crie um algoritmo que leia um número N e verifique se ele é primo. O seu programa deve fazer o MíNIMO de interações possíveis.
Crie um algoritmo de caixa eletrônico que lê a quantidade de dinheiro a ser sacado e imprime a menor quantidade de notas a ser dada ao usuário. A sua máquina de saque eletrônico é carregada com 1.000 (mil) notas de 100, 50, 20, 10, 5 e 1 cada. Imprimir também a quantidade de cada nota a ser dada ao usuário. Lembre-se que você tem uma quantidade finita de cada tipo de nota. O final da leitura é marcado pelo valor 0 que não deve ser calculado.
Exemplo: 98 = uma nota de 50, duas notas de 20, uma nota de 5, e três notas de 1.
Perceba que a cada saque há uma quantidade menor de cada tipo de notas.
Outra situação é quando não é possível sacar o dinheiro com a quantidade de notas existentes. Neste caso, o programa deve cancelar a operação e informar o usuário que não é possível realizar o saque.
Exemplo: 98 = uma nota de 50, duas notas de 20, uma nota de 5, e três notas de 1.
Perceba que a cada saque há uma quantidade menor de cada tipo de notas.
Outra situação é quando não é possível sacar o dinheiro com a quantidade de notas existentes. Neste caso, o programa deve cancelar a operação e informar o usuário que não é possível realizar o saque.