Como escrever um programa em C para multiplicar duas matrizes

Como escrever um programa em C para multiplicar duas matrizes

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:

Ilustração de multiplicação de matrizes

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 é:

Ilustração do resultado da multiplicação da matriz

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

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

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

#include <stdio.h>
#include <stdlib.h>

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

printf("Enter the number of rows for the first matrix:\n");
scanf("%d", &r1);

printf("Enter the number of columns for the first matrix:\n");
scanf("%d", &c1);

printf("Enter the number of rows for the second matrix:\n");
scanf("%d", &r2);

printf("Enter the number of columns for the second matrix:\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.

if (c1! = r2) {
printf("The matrices cannot be multiplied together");
exit(-1);
}

Se tudo estiver correto, 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 loop for aninhado 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.

int m1[r1][c1], m2[r2][c2];
printf("Enter the elements of the first matrix\n");

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

printf("Enter the elements of the second matrix\n");

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

Defina uma terceira matriz, mul , de ordem r1 * c2 para armazenar o resultado. Use um loop for aninhado 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 executa 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 += para adicionar mul[i][j] à expressão calculada e armazená-la. Lembre-se de inicializar o resultado com zero antes de adicionar a ele.

int mul[r1][c2];

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


for (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("The multiplied matrix is: \n");

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

printf("\n");
}

return 0;
}

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:

Saída da multiplicação de matrizes

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

Saída da multiplicação de matrizes quando não é possível

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.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *