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.