Produto Matricial (Na Matemática + Algoritmo em C#)

Thalita Sylvia Marques

você vai aprender

Como multiplicar matrizes na matemática

Como colocar esse algoritmo em forma de código

Exemplo em C#

pré-requisitos

Compreender matrizes

Lógica de Programação

Curiosidade

sobre a multiplicação

A principal característica da multiplicação de matrizes é: o produto matricial não é comutativo. Ou seja, no caso desta multiplicação a ordem dos fatores altera SIM o resultado. Logo, se temos uma matriz A e outra B, o produto AB é diferente do produto BA.

multiplicação não comutativa

Outra característica muito importante é que a multiplicação de matrizes tem uma condição de possibilidade. Vamos ver se você descobre qual é essa condição ao ver a multiplicação!

na matemática

Considere as matrizes A e B abaixo:

matriz A e matriz B

Monte um esquema como o mostrado a seguir. Preste muita atenção na ordem dos fatores! As setas mostram onde colocar cada matriz.

esquema da multiplicação

Fica assim: 

esquema da multiplicação

esquema da multiplicação Imagem widget

primeiro elemento

O resultado desta multiplicação será uma matriz de dimensões 3x3. Depois explicarei o porquê. Para encontrar o valor de um termo na matriz resultado é preciso pensar qual linha e qual coluna das matrizes "levam" a este termo. No caso do primeiro elemento, note que a primeira linha da matriz A e a primeira coluna da matriz B levam a ele.

primeiro elemento

Devemos então:


  →   Multiplicar o primeiro elemento da linha pelo primeiro elemento da coluna e reservar o valor.
(1 * 1 e reserva o resultado 1)

  →   Multiplicar o segundo elemento da linha pelo segundo elemento da coluna e reservar o valor.
(4 * 4 e reserva o resultado 16)

Em nosso exemplo de multiplicação de matrizes temos apenas 2 elementos em cada linha da matriz A e 2 elementos em cada coluna da matriz B, então paramos por aí (se tivéssemos mais elementos continuaríamos a multiplicar sucessivamente) e somamos os valores reservados 1 e 16. O resultado desta soma é o valor do primeiro elemento da matriz resultado: 17!

primeiro elemento


segundo elemento

Analisando qual linha da matriz A e qual coluna da matriz B leva ao segundo elemento, pode-se perceber que ainda estamos na mesma linha de A, mas agora na próxima coluna de B.

segundo elemento


Repetimos os cálculos:


  →   Multiplicar o primeiro elemento da linha pelo primeiro elemento da coluna e reservar o valor.
(1 * 2 e reserva o resultado 2)

  →   Multiplicar o segundo elemento da linha pelo segundo elemento da coluna e reservar o valor.
(4 * 5 e reserva o resultado 20)

  →   Somamos os valores reservados 2 e 20. O resultado da soma é o segundo elemento: 22!

segundo elemento


matriz resultado

Seguindo os passos descritos, os cálculos efetuados para se encontrar cada um dos termos são:

matriz resultado

A matriz resultado preenchida:

matriz resultado


conclusões

A lógica da multiplicação de matrizes é pensar em LINHA X COLUNA. No exemplo acima tínhamos o produto das matrizes A e B sendo suas dimensões respectivamente (3x2) e (2x3). A multiplicação foi feita entre cada elemento de uma linha em A e cada elemento de uma coluna em B. A quantidade de termos em qualquer linha de A era 2 e a quantidade de termos em qualquer coluna de B também era 2. Por isso tínhamos sempre 2 valores reservados para juntar.

Conseguiu imaginar a condição para possibilidade de multiplicação de matrizes? O número de colunas da primeira matriz fator deve ser o mesmo número de linhas da segunda, pois este número é a quantidade de elementos para multiplicar!

Sobre a matriz resultado temos, pela lógica de multiplicação LINHA X COLUNA, que o número total de termos será o número de linhas na matriz A vezes o número de colunas em B. Logo, suas dimensões também são dadas por estes valores (LINHA,COLUNA). Por isto a matriz resultado teve dimensões (3x3).

Podemos obter essas informações rapidamente apenas de olhar para as dimensões:

conclusões


código em C#

Agora que você sabe multiplicar matrizes na matemática vai achar bem simples colocar esse algoritmo em código. Vamos utilizar a linguagem C# para implementar a multiplicação das mesmas matrizes A e B que usamos como exemplo.

A sequência de passos é a seguinte:

  →   Primeiro, vamos iterar nas linhas da matriz A.

  →   Em cada linha de A, vamos iterar nas colunas de B.

  →   Em cada coluna de B vamos iterar entre seus elementos multiplicando-os pelos elementos de mesma ordem na linha de A em que estivermos.

Como você é fera em lógica de programação, deve ter percebido que utilizaremos 3 laços de repetição, um dentro do outro. Você pode utilizar a estrutura que preferir, eu escolhi o for.

A imagem abaixo mostra apenas o trecho do código responsável por efetuar a multiplicação. Não se esqueça de preencher suas matrizes e verificar se atendem à condição de possibilidade antes de multiplicar. Se você tentar multiplicar uma matriz que não atende à possibilidade, em algum momento seu projeto terá um erro por tentar chamar um elemento de índice fora dos limites da matriz.

//cada iteração representa uma linha da matriz A
for (int linha = 0; linha < 3; linha++)  
{
    //em cada linha de A, itera nas colunas de B
    for (int coluna = 0; coluna < 3; coluna++)  
    {
        //itera, ao mesmo tempo, entre os elementos da linha de A e da coluna de B
        for (int i = 0; i < 2; i++)  
        {
            //acumula representa os valores que estávamos reservando
            acumula = acumula + matA[linha, i] * matB[i, coluna];  
        }
        //quando a execução está aqui, já se tem mais um elemento da matriz AB
        matAB[linha, coluna] = acumula;

        //a variável então é zerada para que possa referenciar um novo elemento de AB
        acumula = 0;  
    }
}



Se você teve dificuldade para entender a multiplicação de matrizes, fazer no código vai parecer ainda mais confuso. A dica é: desenhe! Não deixe de fazer seu próprio esquema. Realmente espero que este tutorial tenha sido útil para você. Bons estudos.

fragmento de código widget

links úteis

Voltar