Multiplicação de Matrizes

Usando Java

Clisman
4 min readOct 11, 2021

Informações básicas sobre a multiplicação de matrizes, tomo a linha da primeira matriz vezes cada coluna da segunda matriz (operação feita uma a uma, ou seja, a linha um da primeira matriz, vezes a coluna um da segunda matriz, depois a linha um da primeira matriz vezes a coluna dois da segunda matriz). Não apenas, pois nesta operação entre linha e coluna, o primeiro elemento da primeira linha da primeira matriz, será multiplicado pelo primeiro elemento, da primeira coluna da segunda matriz. E após somados as outras respectivas multiplicações.

A operação segue como no exemplo:

Os outros seguirão passos semelhantes.

O tamanho da matriz resultante é definida pela numero de linhas da 1° matriz, com o numero de colunas da 2° matriz. Neste exemplo, a 1° matriz tem 2 linhas, a 2° matriz tem 2 colunas. Assim 2 * 2, tendo então uma matriz 2x2, 2 linhas e 2 colunas.

Na programação, tomando o devido cuidado, podemos fazer a mesma operação.

Levando em consideração o index ou seja o índice. Iremos manipular a matriz a partir dos índices.

Pense da seguinte forma, as linhas serão contadas pela esquerda, de cima para baixo:

img by Matheus Clisman

As colunas serão contadas por cima, da esquerda para a direita:

img by Matheus Clisman

Temos:

img by Matheus Clisman

Então, para saber a quantidade de linhas de uma matriz basta matriz.length, porque você vai saber quantos indices tem na matriz. E como não entrou em nenhum dos índices, vai ter como retorno a quantidade de vetores (linhas) que esta matriz tem (sem levar em consideração o tamanho do vetor).

int i = matriz.length;

Para saber a quantidade de colunas, de divisões, mas entrar em um linha e perguntar: qual o tamanho desta linha? Ou quantas posições tem este vetor? Assim, saberá quantas posições cabem dentro deste vetor. Logo: matriz[0].length. Você fixa a primeira posição desta matriz, como se estivesse escolhendo a primeira linha, então pede o tamanho desta linha, desta forma:

int j = matriz[0].length;

Acessando a linha, para encontrar o tamanho do vetor, escolho um dos index da linha, e vejo o tamanho do vetor escolhido, visualmente, ficaria algo semelhante:

img by Matheus Clisman

ou

img from Java Tutor <https://pythontutor.com/java.html#mode=edit>

Multiplicação das matrizes

Na multiplicação será empregado 3 for's, um para percorrer até a quantidade de colunas da primeira matriz. O segundo é para percorrer até a quantidade de colunas da segunda matriz. O terceiro for é para ir até a quantidade de linhas da segunda matriz.

O código fica assim:

for(int i = 0; i < linhasMatrizA; i++){
for(int j = 0; j < colunasMatrizB; j++){
for(int k = 0; k < linhasMatrizB; k++){
soma += matrizA[i][k] * matrizB[k][j];
}
matrizC[i][j] = soma;
soma = 0;
}
}

Como há um loop dentro do outro, ele só pode continuar quando o outro terminar. Então o i será o mesmo valor até os loops do j, e k terminarem. Somente por fim, mudará de valor.

Na multiplicação, preste atenção que na primeira matriz, o que segue variando a coluna, enquanto que a linha é fixa (por isso que matrizA tem como linha, o valor de i, porque i neste caso esta fixo, pois esta dentro do loop de j e k, então vai ser dependente da mudança de k). Já na segunda matriz, o que será fixo será a coluna, variando a linha.

Fazendo a multiplicação da primeira linha da primeira matriz com a primeira coluna da segunda matriz:

img by Matheus Clisman

Levando em consideração agora os indices:

img by Matheus Clisman

Se tratando dos elementos que vem primeiro nas multiplicações, a linha não muda, o que muda sãos as colunas (linhas em azul, colunas em verde). Já no segundo elemento das multiplicações, o que altera é a linha, enquanto que a coluna fica fixo.

Assim, há uma variação inversa, enquanto um varia a linha, outro a coluna. Porém, para este caso de multiplicação de matrizes, a variação tem o mesmo tamanho, enquanto a coluna da primeira matriz varia de 0 até 2, a variação da linha da segunda matriz, também segue de 0 até 2. logo, são os mesmos valores.

Por este motivo a variável k em nosso exemplo fica como índice de mudança nas matrizes. Porque ele tem o mesmo numero de colunas da primeira matriz e o mesmo numero de linhas da segunda matriz.

Um detalhe, porque j vai até o número de colunas da segunda matriz? Porque a linha da primeira matriz será multiplicada por todas as colunas da segunda matriz, sendo assim, a quantidade de vezes que a linha irá mudar multiplicar.

--

--

Clisman

Sou este que se lança aos pés do Escritor. E que tem por desejo, que minha história, seja feita poesia, como de um destes que perderam a vida, para ganha-la.