Leitores como você ajudam a apoiar o MUO. Quando você faz uma compra usando links em nosso site, podemos ganhar uma comissão de afiliado. Consulte Mais informação.

As matrizes desempenham um papel vital em muitos campos diversos, incluindo computação gráfica, criptografia e comunicação sem fio. Uma matriz é uma matriz retangular de números dispostos em linhas e colunas, usada para representar um objeto matemático ou sua propriedade.

Uma das operações que você pode precisar executar é a multiplicação de matrizes. Isso encontra uso em muitas áreas, como cálculos de aerodinâmica, processamento de sinal, processamento de imagem e análise sísmica. Mas exatamente como você multiplica matrizes?

Como Multiplicar Duas Matrizes

Você representa a ordem de uma matriz como o produto do número de linhas (m) e o número de colunas (n). Para multiplicar duas matrizes, o número de colunas da primeira matriz deve ser igual ao número de linhas da segunda matriz.

Se você tiver duas matrizes, matriz A de ordem m × n e B de ordem n × p, a ordem da matriz produto será m × p. Por exemplo, suponha que você tenha uma matriz A contendo duas linhas (m) e três colunas (n) e uma matriz B contendo três linhas (n) e duas colunas (p). A matriz resultante será composta por duas linhas e duas colunas:

instagram viewer

Você multiplica duas matrizes usando o produto escalar. Para obter o valor do primeiro elemento da matriz resultante, multiplique e some os elementos da primeira linha da primeira matriz e da primeira linha da segunda matriz elemento por elemento como:

(1, 2, 3) • (7, 9, 11) = 1×7 + 2×9 + 3×11 = 58

Da mesma forma, para o segundo elemento, multiplique a primeira linha da primeira matriz e a segunda coluna da segunda matriz como:

(1, 2, 3) • (8, 10, 12) = 1×8 + 2×10 + 3×12 = 64

Para o terceiro elemento, multiplique a segunda linha da primeira matriz e a primeira coluna da segunda matriz como:

(4, 5, 6) • (7, 9, 11) = 4×7 + 5×9 + 6×11 = 139

Para o quarto elemento, multiplique a segunda linha da primeira matriz e a segunda coluna da segunda matriz como:

(4, 5, 6) • (8, 10, 12) = 4×8 + 5×10 + 6×12 = 154

Assim, a matriz resultante é:

Você pode explorar e construir diferentes programas para diferentes operações em matrizes, como:

  • somando e subtraindo duas matrizes
  • Encontrando a transposta de uma matriz
  • verificando se duas matrizes são idênticas

Um algoritmo para multiplicar duas matrizes

Siga este algoritmo para construir o programa para a multiplicação de quaisquer duas matrizes:

  1. Inicie o programa.
  2. Digite as linhas e colunas da primeira matriz.
  3. Digite as linhas e colunas da segunda matriz.
  4. Se as matrizes forem incompatíveis para multiplicação, imprima um erro e saia.
  5. Defina uma matriz e insira os números na primeira matriz.
  6. Defina outra matriz e insira o número na segunda matriz.
  7. Defina uma matriz para armazenar o resultado da multiplicação das duas matrizes.
  8. Defina um loop para iterar sobre a linha da primeira matriz.
  9. Configure um loop interno para iterar sobre a coluna da segunda matriz.
  10. Defina outro loop interno para iterar na coluna da primeira matriz.
  11. Multiplique e some os elementos usando a fórmula mul[i][j] += m1[i][k] * m2[k][j] e armazene o resultado da multiplicação na matriz resultante.
  12. Exiba a matriz resultante.
  13. Saia do programa.

Como executar a multiplicação de matrizes usando C

Todo o código-fonte para multiplicação de matrizes usando C está presente neste Repositório GitHub e é gratuito para usar.

Importe a biblioteca stdio para números de entrada e exiba a saída de acordo. Declare o principal função e peça ao usuário para inserir o número de colunas e o número de linhas para ambas as matrizes usando o imprimir() função.

Use o scanf() função para receber entrada. %d é o especificador de formato decimal que garante que o programa leia a entrada como um número.

#incluir
#incluir

intprincipal()
{
int r1, r2, c1, c2;

printf("Digite o número de linhas para a primeira matriz:\n");
scanf("%d", &r1);

printf("Digite o número de colunas para a primeira matriz:\n");
scanf("%d", &c1);

printf("Digite o número de linhas para a segunda matriz:\n");
scanf("%d", &r2);

printf("Digite o número de colunas para a segunda matriz:\n");
scanf("%d", &c2);

Verifique se a multiplicação de matrizes é possível. Se o número de colunas da primeira matriz não for igual ao número de linhas da segunda matriz, exibe um erro e sai.

se (c1 != r2) {
printf("As matrizes não podem ser multiplicadas entre si");
saída(-1);
}

Se tudo estiver bem, defina dois arrays multidimensionais, m1 e m2, com o tamanho que o usuário forneceu. Peça ao usuário para inserir os elementos de ambas as matrizes, um por um. Use um aninhado para loop para obter a entrada para a linha e a coluna da matriz. O loop for externo itera sobre as linhas da matriz e o loop interno sobre a coluna da matriz.

intm1[r1][c1], m2[r2][c2];
printf("Insira os elementos da primeira matriz\n");

para (int eu = 0; i < r1; i++) {
para (int j = 0; j < c1; j++) {
scanf("%d", &m1[i][j]);
}
}

printf("Insira os elementos da segunda matriz\n");

para (int eu = 0; i < r2; i++) {
para (int j = 0; j < c2; j++) {
scanf("%d",&m2[i][j]);
}
}

Defina uma terceira matriz, mul, da ordem r1 * c2 para armazenar o resultado. Use um aninhado para loop para realizar a multiplicação. O loop for mais externo itera sobre as linhas, o próximo loop interno itera sobre as colunas e o mais interno realiza a multiplicação. Use a fórmula mul[i][j] += m1[i][k] * m2[k][j] para multiplicar os elementos da matriz.

A fórmula usa o operador abreviado += adicionar mul[i][j] à expressão calculada e armazená-la. Lembre-se de inicializar o resultado com zero antes de adicionar a ele.

intmul[r1][c2];

para (int eu = 0; i < r1; i++) {
para (int j = 0; j < c2; j++) {
mul[i][j] = 0;

para (int k = 0; k < c1; k++) {
mul[i][j] += m1[i][k] * m2[k][j];
}
}
}

Exiba a matriz multiplicada usando um loop for aninhado que itera sobre as linhas e colunas das matrizes resultantes. Use o caractere de nova linha (\n) para exibir cada uma das linhas em uma linha separada. Retorne 0 para sair da função principal e do programa.

printf("A matriz multiplicada é: \n");

para (int eu = 0; i < r1; i++) {
para (int j = 0; j < c2; j++) {
printf("%d\t", mul[i][j]);
}

printf("\n");
}

retornar0;
}

A saída do programa de multiplicação de matrizes

Você deve ver algo como a seguinte saída ao executar o programa de multiplicação de matrizes:

Se você inserir uma entrada inválida, a multiplicação da matriz falhará e você verá algo como isto:

As matrizes têm muitos usos

Vários campos usam matrizes como ciência, comércio, economia, geologia, robótica e animação. Você usará principalmente matrizes em matemática para resolver equações lineares e representar transformações como rotação ou translação. As matrizes podem calcular a quantidade de reflexão e refração, bem como resolver equações de rede CA em circuitos elétricos.

Além de aplicativos educacionais, você pode usar matrizes para a análise de dados de pesquisa, dados de votação, listas de itens de cálculo e outros conjuntos de dados.