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:
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:
- Inicie o programa.
- Digite as linhas e colunas da primeira matriz.
- Digite as linhas e colunas da segunda matriz.
- Se as matrizes forem incompatíveis para multiplicação, imprima um erro e saia.
- Defina uma matriz e insira os números na primeira matriz.
- Defina outra matriz e insira o número na segunda matriz.
- Defina uma matriz para armazenar o resultado da multiplicação das duas matrizes.
- Defina um loop para iterar sobre a linha da primeira matriz.
- Configure um loop interno para iterar sobre a coluna da segunda matriz.
- Defina outro loop interno para iterar na coluna da primeira matriz.
- 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.
- Exiba a matriz resultante.
- 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:
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.
Deixe um comentário