Lesere som deg er med på å støtte MUO. Når du foretar et kjøp ved å bruke lenker på nettstedet vårt, kan vi tjene en tilknyttet provisjon. Les mer.

Matriser spiller en viktig rolle på mange forskjellige felt, inkludert datagrafikk, kryptografi og trådløs kommunikasjon. En matrise er en rektangulær rekke tall ordnet i rader og kolonner, brukt til å representere et matematisk objekt eller dets egenskap.

En av operasjonene du kanskje må utføre på dem er matrisemultiplikasjon. Dette finner bruk i mange områder som aerodynamiske beregninger, signalbehandling, bildebehandling og seismisk analyse. Men nøyaktig hvordan multipliserer du matriser?

Hvordan multiplisere to matriser

Du representerer rekkefølgen til en matrise som produktet av antall rader (m) og antall kolonner (n). For å multiplisere to matriser, må antall kolonner i den første matrisen være lik radene i den andre matrisen.

Hvis du har to matriser, matrise A av orden m × n og B av orden n × p, vil rekkefølgen til produktmatrisen være m × p. Anta for eksempel at du har en matrise A som inneholder to rader (m) og tre kolonner (n) og en matrise B som inneholder tre rader (n) og to kolonner (p). Den resulterende matrisen vil bestå av to rader og to kolonner:

instagram viewer

Du multipliserer to matriser ved å bruke punktproduktet. For å få verdien av det første elementet i den resulterende matrisen, multipliser og legg til elementene i den første raden i den første matrisen og den første raden i den andre matrisen element for element som:

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

På samme måte, for det andre elementet, multipliser den første raden i den første matrisen og den andre kolonnen i den andre matrisen som:

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

For det tredje elementet, multipliser den andre raden i den første matrisen og den første kolonnen i den andre matrisen som:

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

For det fjerde elementet, multipliser den andre raden i den første matrisen og den andre kolonnen i den andre matrisen som:

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

Dermed er den resulterende matrisen:

Du kan utforske og bygge forskjellige programmer for forskjellige operasjoner på matriser som:

  • legge til og subtrahere to matriser
  • finne transponeringen av en matrise
  • sjekke om to matriser er identiske

En algoritme for å multiplisere to matriser

Følg denne algoritmen for å bygge programmet for multiplikasjon av to matriser:

  1. Start programmet.
  2. Skriv inn radene og kolonnene i den første matrisen.
  3. Skriv inn radene og kolonnene i den andre matrisen.
  4. Hvis matrisene er inkompatible for multiplikasjon, skriv ut en feil og avslutt.
  5. Definer en matrise og skriv inn tallene i den første matrisen.
  6. Definer en annen matrise og skriv inn tallet i den andre matrisen.
  7. Definer en matrise for å lagre resultatet av multiplikasjonen av de to matrisene.
  8. Sett en løkke for å iterere over raden i den første matrisen.
  9. Sett opp en indre sløyfe for å iterere over kolonnen i den andre matrisen.
  10. Sett en annen indre løkke for å iterere over kolonnen i den første matrisen.
  11. Multipliser og legg til elementene ved hjelp av formelen mul[i][j] += m1[i][k] * m2[k][j] og lagre resultatet av multiplikasjonen i den resulterende matrisen.
  12. Vis den resulterende matrisen.
  13. Avslutt programmet.

Hvordan utføre matrisemultiplikasjon ved hjelp av C

Hele kildekoden for matrisemultiplikasjon ved bruk av C er tilstede i denne GitHub-depot og er gratis å bruke.

Importer stdio-biblioteket for å legge inn tall og vis utdataene tilsvarende. Erklære hoved- funksjon og be brukeren angi antall kolonner og antall rader for begge matrisene ved å bruke skrive ut() funksjon.

Bruke scanf() funksjon for å motta input. %d er desimalformatspesifikasjonen som sikrer at programmet leser inndata som et tall.

#inkludere
#inkludere

inthoved-()
{
int rl, r2, cl, c2;

printf("Skriv inn antall rader til den første matrisen:\n");
scanf("%d", &r1);

printf("Skriv inn antall kolonner til den første matrisen:\n");
scanf("%d", &c1);

printf("Skriv inn antall rader til den andre matrisen:\n");
scanf("%d", &r2);

printf("Skriv inn antall kolonner til den andre matrisen:\n");
scanf("%d", &c2);

Sjekk at matrisemultiplikasjon er mulig. Hvis antall kolonner i den første matrisen ikke er lik antall rader i den andre matrisen, vis en feil og avslutt.

if (c1 != r2) {
printf("Matrisene kan ikke multipliseres sammen");
exit(-1);
}

Hvis alt er bra, definer to flerdimensjonale arrays, m1 og m2, med størrelsen som brukeren oppga. Be brukeren om å legge inn elementene i begge matrisene én etter én. Bruk en nestet til løkke for å ta inndata for både rad og kolonne i matrisen. Den ytre for-løkken itererer over radene i matrisen og den indre løkken over søylen i matrisen.

intm1[r1][c1], m2[r2][c2];
printf("Skriv inn elementene i den første matrisen\n");

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

printf("Skriv inn elementene i den andre matrisen\n");

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

Definer en tredje matrise, mul, av størrelsesorden r1 * c2 for å lagre resultatet. Bruk en nestet til løkke for å utføre multiplikasjonen. Den ytterste for løkken itererer over radene, den neste indre løkken itererer over kolonnene, og den innerste utfører multiplikasjonen. Bruk formelen mul[i][j] += m1[i][k] * m2[k][j] å multiplisere elementene i matrisen.

Formelen bruker stenografioperatoren += å legge til mul[i][j] til det beregnede uttrykket og lagre det. Husk å initialisere resultatet til null før du legger til det.

intmul[r1][c2];

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

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

Vis den multipliserte matrisen ved å bruke en nestet for-løkke som itererer over de resulterende matrisenes rader og kolonner. Bruk tegnet for ny linje (\n) for å vise hver av radene på en egen linje. Gå tilbake til 0 for å avslutte hovedfunksjonen og programmet.

printf("Den multipliserte matrisen er: \n");

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

printf("\n");
}

komme tilbake0;
}

Utgangen til matrisemultiplikasjonsprogrammet

Du bør se noe sånt som følgende utgang når du kjører matrisemultiplikasjonsprogrammet:

Hvis du skriver inn ugyldig inndata, mislykkes matrisemultiplikasjonen, og du vil se noe slikt:

Matriser har mange bruksområder

Ulike felt bruker matriser som vitenskap, handel, økonomi, geologi, robotikk og animasjon. Du vil hovedsakelig bruke matriser i matematikk for å løse lineære ligninger og representere transformasjoner som rotasjon eller translasjon. Matriser kan beregne mengden av refleksjon og brytning samt løse AC-nettverksligninger i elektriske kretser.

Bortsett fra pedagogiske applikasjoner, kan du bruke matriser for analyse av undersøkelsesdata, stemmedata, beregne elementlister og andre datasett.