Läsare som du hjälper till att stödja MUO. När du gör ett köp med hjälp av länkar på vår webbplats kan vi tjäna en affiliate-provision. Läs mer.

Matriser spelar en viktig roll inom många olika områden, inklusive datorgrafik, kryptografi och trådlös kommunikation. En matris är en rektangulär matris av tal ordnade i rader och kolumner, som används för att representera ett matematiskt objekt eller dess egenskap.

En av operationerna du kan behöva utföra på dem är matrismultiplikation. Detta finner användning inom många områden som aerodynamiska beräkningar, signalbehandling, bildbehandling och seismisk analys. Men exakt hur multiplicerar man matriser?

Hur man multiplicerar två matriser

Du representerar ordningen på en matris som produkten av antalet rader (m) och antalet kolumner (n). För att multiplicera två matriser måste antalet kolumner i den första matrisen vara lika med raderna i den andra matrisen.

Om du har två matriser, matris A av ordningen m × n och B av ordningen n × p, kommer produktmatrisens ordning att vara m × p. Anta till exempel att du har en matris A som innehåller två rader (m) och tre kolumner (n) och en matris B som innehåller tre rader (n) och två kolumner (p). Den resulterande matrisen kommer att bestå av två rader och två kolumner:

instagram viewer

Du multiplicerar två matriser med hjälp av prickprodukten. För att få värdet på det första elementet i den resulterande matrisen, multiplicera och addera elementen i den första raden i den första matrisen och den första raden i den andra matrisen element för element som:

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

På liknande sätt, för det andra elementet, multiplicera den första raden i den första matrisen och den andra kolumnen i den andra matrisen som:

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

För det tredje elementet, multiplicera den andra raden i den första matrisen och den första kolumnen i den andra matrisen som:

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

För det fjärde elementet, multiplicera den andra raden i den första matrisen och den andra kolumnen i den andra matrisen som:

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

Den resulterande matrisen är alltså:

Du kan utforska och bygga olika program för olika operationer på matriser som:

  • addera och subtrahera två matriser
  • hitta transponeringen av en matris
  • kontrollera om två matriser är identiska

En algoritm för att multiplicera två matriser

Följ den här algoritmen för att bygga programmet för multiplikation av två valfria matriser:

  1. Börja programmet.
  2. Ange raderna och kolumnerna i den första matrisen.
  3. Ange raderna och kolumnerna i den andra matrisen.
  4. Om matriserna är inkompatibla för multiplikation, skriv ut ett fel och avsluta.
  5. Definiera en matris och ange siffrorna i den första matrisen.
  6. Definiera en annan matris och ange numret i den andra matrisen.
  7. Definiera en matris för att lagra resultatet av multiplikationen av de två matriserna.
  8. Ställ in en slinga för att iterera över raden i den första matrisen.
  9. Sätt upp en inre slinga för att iterera över kolumnen i den andra matrisen.
  10. Ställ in en annan inre slinga för att iterera över kolumnen i den första matrisen.
  11. Multiplicera och lägg till elementen med hjälp av formeln mul[i][j] += m1[i][k] * m2[k][j] och lagra resultatet av multiplikationen i den resulterande matrisen.
  12. Visa den resulterande matrisen.
  13. Avsluta programmet.

Hur man utför matrismultiplikation med C

Hela källkoden för matrismultiplikation med C finns i detta GitHub-förråd och är gratis att använda.

Importera stdio-biblioteket till inmatningsnummer och visa utgången därefter. Deklarera huvud funktion och be användaren att ange antal kolumner och antal rader för båda matriserna med hjälp av skriva ut() fungera.

Använd scanf() funktion för att ta emot input. %d är decimalformatsspecifikationen som säkerställer att programmet läser indata som ett tal.

#omfatta
#omfatta

inthuvud()
{
int rl, r2, cl, c2;

printf("Ange antalet rader för den första matrisen:\n");
scanf("%d", &r1);

printf("Ange antalet kolumner för den första matrisen:\n");
scanf("%d", &c1);

printf("Ange antalet rader för den andra matrisen:\n");
scanf("%d", &r2);

printf("Ange antalet kolumner för den andra matrisen:\n");
scanf("%d", &c2);

Kontrollera att matrismultiplikation är möjlig. Om antalet kolumner i den första matrisen inte är lika med antalet rader i den andra matrisen, visa ett felmeddelande och avsluta.

if (c1 != r2) {
printf("Matriserna kan inte multipliceras med varandra");
utgång(-1);
}

Om allt är bra, definiera två flerdimensionella arrayer, m1 och m2, med den storlek som användaren angav. Be användaren att ange elementen i båda matriserna en efter en. Använd en kapslad för loop för att ta indata för både raden och kolumnen i matrisen. Den yttre för-slingan itererar över matrisens rader och den inre slingan över matrisens kolumn.

intm1[r1][c1], m2[r2][c2];
printf("Ange elementen i den första matrisen\n");

för (int jag = 0; i < rl; i++) {
för (int j = 0; j < cl; j++) {
scanf("%d", &m1[i][j]);
}
}

printf("Ange elementen i den andra matrisen\n");

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

Definiera en tredje matris, mul, av ordningen r1 * c2 för att lagra resultatet. Använd en kapslad för loop för att utföra multiplikationen. Den yttersta for-loopen itererar över raderna, nästa inre loop itererar över kolumnerna, och den innersta utför multiplikationen. Använd formeln mul[i][j] += m1[i][k] * m2[k][j] att multiplicera elementen i matrisen.

Formeln använder stenografioperatorn += tillägga mul[i][j] till det beräknade uttrycket och lagra det. Kom ihåg att initialisera resultatet till noll innan du lägger till det.

intmul[r1][c2];

för (int jag = 0; i < rl; i++) {
för (int j = 0; j < c2; j++) {
mul[i][j] = 0;

för (int k = 0; k < cl; k++) {
mul[i][j] += ml[i][k] * m2[k][j];
}
}
}

Visa den multiplicerade matrisen med en kapslad för-loop som itererar över de resulterande matrisernas rader och kolumner. Använd nyradstecknet (\n) för att visa var och en av raderna på en separat rad. Gå tillbaka 0 för att avsluta huvudfunktionen och programmet.

printf("Den multiplicerade matrisen är: \n");

för (int jag = 0; i < rl; i++) {
för (int j = 0; j < c2; j++) {
printf("%d\t", mul[i][j]);
}

printf("\n");
}

lämna tillbaka0;
}

Utgången från matrismultiplikationsprogrammet

Du bör se något i stil med följande utdata när du kör matrismultiplikationsprogrammet:

Om du anger ogiltig inmatning misslyckas matrismultiplikationen och du kommer att se något i stil med detta:

Matriser har många användningsområden

Olika områden använder matriser som vetenskap, handel, ekonomi, geologi, robotik och animation. Du kommer främst att använda matriser i matematik för att lösa linjära ekvationer och representera transformationer som rotation eller translation. Matriser kan beräkna mängden reflektion och brytning samt lösa AC-nätverksekvationer i elektriska kretsar.

Förutom utbildningsapplikationer kan du använda matriser för analys av undersökningsdata, röstningsdata, beräkna objektlistor och andra datamängder.