Como fazer multiplicação de matrizes na prática
A multiplicação de matrizes é uma das operações mais cobradas em listas de exercícios de álgebra linear, e a maioria dos alunos trava porque simplesmente não memoriza o padrão correto de preenchimento. O problema real não é o conceito em si, mas a falta de um método consistente para calcular cada elemento sem se perder no meio do processo. Quando você está resolvendo um exercicio multiplicação de matrizes sob pressão de prazo, qualquer confusão entre linhas e colunas gera erros em cascata que são difíceis de rastrear depois. O procedimento funciona assim. Se você tem uma matriz A de ordem m por n e uma matriz B de ordem n por p, o resultado C será uma matriz de ordem m por p. Cada entrada c_ij é calculada multiplicando-se o elemento da linha i de A pelo elemento correspondente da coluna j de B, somando todos esses produtos. A condição necessária é que o número de colunas de A seja exatamente igual ao número de linhas de B. Sem isso, a multiplicação simplesmente não existe.
Exercicio multiplicação de matrizes passo a passo
Vou mostrar com um exemplo concreto. Suponha A sendo uma matriz 2 por 3 e B uma matriz 3 por 2. A = | 1 2 3 |
| 4 5 6 | B = | 7 8 |
| 9 10 | |11 12 |
Para calcular c_11, pegamos a primeira linha de A e a primeira coluna de B: (1×7) + (2×9) + (3×11) = 7 + 18 + 33 = 58. Para c_12, usamos a primeira linha de A e a segunda coluna de B: (1×8) + (2×10) + (3×12) = 8 + 20 + 36 = 64. Para c_21, a segunda linha de A com a primeira coluna de B: (4×7) + (5×9) + (6×11) = 28 + 45 + 66 = 139. E finalmente c_22: (4×8) + (5×10) + (6×12) = 32 + 50 + 72 = 154. O resultado é C = | 58 64 |, uma matriz 2 por 2.
👉 Clique no botão abaixo para saber mais sobre o assunto!
|139 154 | Isso parece trivial em números pequenos, mas a complexidade cresce rapidamente. Uma matriz 50 por 50 multiplicada por outra 50 por 50 exige 125.000 multiplicações e adições individuais. Fazer isso manualmente leva horas e o erro de cálculo em qualquer posição invalida toda a linha ou coluna resultante.
Uma coisa que ninguém ensina nos livros didáticos é que a ordem importa. A multiplicação de matrizes não é comutativa. Em geral, A × B é diferente de B × A. Na verdade, nem sempre é possível nem sequer calcular B × A, porque as dimensões podem não combinar. Já vi estudantes tentarem multiplicar na ordem errada e ficarem presos achando que o exercício estava mal formulado, quando na realidade eles é que estavam invertendo os fatores. Também é importante notar que o fato de A × B ser igual a B × A em casos específicos não significa que a propriedade comutativa vale para matrizes. Existem casos isolados onde isso acontece, como quando uma das matrizes é a identidade ou quando elas compartilham os mesmos autovetores, mas tratar essas exceções como regra é um erro comum.
Outro ponto que causa confusão recorrente é a associatividade. Diferentemente da comutatividade, a multiplicação de matrizes é associativa, ou seja, (A × B) × C é sempre igual a A × (B × C), desde que as dimensões sejam compatíveis em todas as etapas. Isso permite calcular produtos de três ou mais matrizes na ordem que for mais conveniente numericamente, o que pode reduzir significativamente o custo computacional em aplicações reais. No meu caso, tive um problema específico envolvendo a multiplicação de matrizes esparsas em uma análise estrutural. As matrizes tinham dimensões 2000 por 2000, mas cerca de 95% dos elementos eram zero. Um cálculo direto teria exigido 8 bilhões de operações, o que tornava o processamento inviável no equipamento disponível. A solução foi implementar um format COO (coordinate list) que armazena apenas os elementos não nulos, reduzindo o tempo de execução de aproximadamente 47 minutos para cerca de 3 minutos e 20 segundos no mesmo hardware. A diferença é drástica quando a esparsidade é alta.
Se você está começando agora, recomendo praticar primeiro com matrizes 2 por 2 e 3 por 3 até o processo se tornar automático. Depois, avance para matrizes maiores usando verificadores online ou ferramentas como o Octave, que permite comparar o resultado manual com o computacional. O importante é desenvolver o hábito de checar as dimensões antes de qualquer conta, anotar explicitamente os índices de linha e coluna em cada passo, e revisar cada linha do resultado conferindo pelo menos um elemento por operação. A multiplicação de matrizes também não é eficiente para dados muito grandes quando implementada de forma ingênua. O algoritmo padrão tem complexidade O(n³), o que significa que dobrar o tamanho da matriz aumenta o tempo de execução em oito vezes. Para matrizes grandes, existem técnicas de otimização como o algoritmo de Strassen, que reduz a complexidade para aproximadamente O(n^2,81), ou o uso de bibliotecas BLAS nivel 3 que exploram cache e processamento paralelo. Essas abordagens são padrão em pacotes como NumPy, MATLAB e SciPy, e fazem diferença real em aplicações de aprendizado de máquina e simulação física.
Há ainda uma limitação prática que muitos ignoram. Matrizes com condition number elevado, ou seja, matrizes mal condicionadas, produzem resultados numericamente instáveis quando multiplicadas. Erros de arredondamento de ponto flutuante se amplificam rapidamente, e o resultado pode perder dezenas de dígitos significativos dependendo da magnitude da condição. Em problemas de engenharia onde a precisão importa, o ideal é verificar o condition number antes de prosseguir com operações que envolvem inversão ou multiplicação em cadeia.