Come scrivere un programma in C per moltiplicare due matrici

Come scrivere un programma in C per moltiplicare due matrici

Le matrici svolgono un ruolo fondamentale in molti campi diversi, tra cui la computer grafica, la crittografia e la comunicazione wireless. Una matrice è una matrice rettangolare di numeri disposti in righe e colonne, utilizzata per rappresentare un oggetto matematico o una sua proprietà.

Una delle operazioni che potresti dover eseguire su di essi è la moltiplicazione di matrici. Questo trova impiego in molte aree come i calcoli aerodinamici, l’elaborazione dei segnali, l’elaborazione delle immagini e l’analisi sismica. Ma esattamente come si moltiplicano le matrici?

Come moltiplicare due matrici

Rappresenti l’ordine di una matrice come prodotto del numero di righe (m) e del numero di colonne (n). Per moltiplicare due matrici, il numero di colonne della prima matrice deve essere uguale alle righe della seconda matrice.

Se hai due matrici, matrice A di ordine m × n e B di ordine n × p, l’ordine della matrice prodotto sarà m × p. Ad esempio, supponiamo di avere una matrice A contenente due righe (m) e tre colonne (n) e una matrice B contenente tre righe (n) e due colonne (p). La matrice risultante sarà composta da due righe e due colonne:

Illustrazione della moltiplicazione di matrici

Moltiplichi due matrici usando il prodotto scalare. Per ottenere il valore del primo elemento della matrice risultante, moltiplicare e sommare gli elementi della prima riga della prima matrice e della prima riga della seconda matrice elemento per elemento come:

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

Allo stesso modo, per il secondo elemento, moltiplica la prima riga della prima matrice e la seconda colonna della seconda matrice come:

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

Per il terzo elemento, moltiplica la seconda riga della prima matrice e la prima colonna della seconda matrice come:

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

Per il quarto elemento, moltiplica la seconda riga della prima matrice e la seconda colonna della seconda matrice come:

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

La matrice risultante è quindi:

Illustrazione del risultato della moltiplicazione di matrici

Puoi esplorare e costruire diversi programmi per diverse operazioni su matrici come:

  • addizione e sottrazione di due matrici
  • trovare la trasposta di una matrice
  • verificare se due matrici sono identiche

Un algoritmo per moltiplicare due matrici

Segui questo algoritmo per costruire il programma per la moltiplicazione di due matrici qualsiasi:

  1. Inizia il programma.
  2. Inserisci le righe e le colonne della prima matrice.
  3. Inserisci le righe e le colonne della seconda matrice.
  4. Se le matrici sono incompatibili per la moltiplicazione, stampa un errore ed esci.
  5. Definisci una matrice e inserisci i numeri nella prima matrice.
  6. Definire un’altra matrice e inserire il numero nella seconda matrice.
  7. Definire una matrice per memorizzare il risultato della moltiplicazione delle due matrici.
  8. Imposta un ciclo per iterare sulla riga della prima matrice.
  9. Imposta un ciclo interno per iterare sulla colonna della seconda matrice.
  10. Imposta un altro ciclo interno per iterare sulla colonna della prima matrice.
  11. Moltiplicare e sommare gli elementi utilizzando la formula mul[i][j] += m1[i][k] * m2[k][j] e memorizzare il risultato della moltiplicazione nella matrice risultante.
  12. Visualizza la matrice risultante.
  13. Uscire dal programma.

Come eseguire la moltiplicazione di matrici usando C

Importa la libreria stdio per inserire i numeri e visualizzare l’output di conseguenza. Dichiarare la funzione principale e chiedere all’utente di inserire il numero di colonne e il numero di righe per entrambe le matrici utilizzando la funzione print() .

Utilizzare la funzione scanf() per ricevere l’input. %d è l’identificatore di formato decimale che garantisce che il programma legga l’input come numero.

#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);

Verificare che la moltiplicazione di matrici sia possibile. Se il numero di colonne della prima matrice non è uguale al numero di righe della seconda matrice, visualizzare un errore ed uscire.

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

Se tutto va bene, definire due matrici multidimensionali, m1 e m2 , con la dimensione fornita dall’utente. Chiedere all’utente di inserire gli elementi di entrambe le matrici uno per uno. Usa un ciclo for nidificato per prendere l’input sia per la riga che per la colonna della matrice. Il ciclo for esterno itera sulle righe della matrice e il ciclo interno sulla colonna della matrice.

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]);
}
}

Definire una terza matrice, mul , di ordine r1 * c2 per memorizzare il risultato. Utilizzare un ciclo for nidificato per eseguire la moltiplicazione. Il ciclo for più esterno itera sulle righe, il successivo ciclo interno itera sulle colonne e il ciclo più interno esegue la moltiplicazione. Utilizzare la formula mul[i][j] += m1[i][k] * m2[k][j] per moltiplicare gli elementi della matrice.

La formula utilizza l’operatore abbreviato += per aggiungere mul[i][j] all’espressione calcolata e memorizzarla. Ricordarsi di inizializzare il risultato su zero prima di aggiungerlo.

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];
}
}
}

Visualizza la matrice moltiplicata utilizzando un ciclo for nidificato che itera sulle righe e colonne delle matrici risultanti. Utilizzare il carattere di nuova riga (\n) per visualizzare ciascuna riga su una riga separata. Ritorna 0 per uscire dalla funzione principale e dal programma.

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;
}

L’output del programma di moltiplicazione di matrici

Dovresti vedere qualcosa di simile al seguente output quando esegui il programma di moltiplicazione di matrici:

Output della moltiplicazione di matrici

Se inserisci un input non valido, la moltiplicazione della matrice fallisce e vedrai qualcosa di simile a questo:

Output della moltiplicazione di matrici quando non possibile

Le matrici hanno molti usi

Vari campi utilizzano matrici come la scienza, il commercio, l’economia, la geologia, la robotica e l’animazione. Utilizzerai principalmente matrici in matematica per risolvere equazioni lineari e rappresentare trasformazioni come la rotazione o la traslazione. Le matrici possono calcolare la quantità di riflessione e rifrazione, nonché risolvere equazioni di rete CA nei circuiti elettrici.

Oltre alle applicazioni didattiche, è possibile utilizzare le matrici per l’analisi di dati di sondaggi, dati di votazione, elenchi di elementi di calcolo e altri set di dati.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *