Læsere som dig hjælper med at støtte MUO. Når du foretager et køb ved hjælp af links på vores websted, kan vi optjene en affiliate-kommission. Læs mere.

Matricer spiller en afgørende rolle på mange forskellige områder, herunder computergrafik, kryptografi og trådløs kommunikation. En matrix er en rektangulær matrix af tal arrangeret i rækker og kolonner, der bruges til at repræsentere et matematisk objekt eller dets egenskab.

En af de operationer, du muligvis skal udføre på dem, er matrixmultiplikation. Dette finder anvendelse inden for mange områder, såsom aerodynamiske beregninger, signalbehandling, billedbehandling og seismisk analyse. Men præcis hvordan multiplicerer man matricer?

Sådan multipliceres to matricer

Du repræsenterer rækkefølgen af ​​en matrix som produktet af antallet af rækker (m) og antallet af kolonner (n). For at gange to matricer skal antallet af kolonner i den første matrix være lig med rækkerne i den anden matrix.

Hvis du har to matricer, matrix A af orden m × n og B af orden n × p, vil rækkefølgen af ​​produktmatricen være m × p. Antag for eksempel, at du har en matrix A, der indeholder to rækker (m) og tre kolonner (n) og en matrix B, der indeholder tre rækker (n) og to kolonner (p). Den resulterende matrix vil bestå af to rækker og to kolonner:

instagram viewer

Du multiplicerer to matricer ved hjælp af prikproduktet. For at få værdien af ​​det første element i den resulterende matrix skal du gange og tilføje elementerne i den første række af den første matrix og den første række af den anden matrix element for element som:

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

For det andet element skal du på samme måde gange den første række i den første matrix og den anden kolonne i den anden matrix som:

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

For det tredje element skal du gange den anden række i den første matrix og den første kolonne i den anden matrix som:

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

For det fjerde element skal du gange den anden række i den første matrix og den anden kolonne i den anden matrix som:

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

Den resulterende matrix er således:

Du kan udforske og bygge forskellige programmer til forskellige operationer på matricer såsom:

  • addere og trække to matricer fra
  • at finde transponeringen af ​​en matrix
  • kontrollere om to matricer er identiske

En algoritme til at multiplicere to matricer

Følg denne algoritme for at bygge programmet til multiplikation af to vilkårlige matricer:

  1. Start programmet.
  2. Indtast rækkerne og kolonnerne i den første matrix.
  3. Indtast rækkerne og kolonnerne i den anden matrix.
  4. Hvis matricerne er inkompatible til multiplikation, skal du udskrive en fejl og afslutte.
  5. Definer en matrix og indtast tallene i den første matrix.
  6. Definer en anden matrix og indtast tallet i den anden matrix.
  7. Definer en matrix til at gemme resultatet af multiplikationen af ​​de to matricer.
  8. Sæt en løkke til at iterere over rækken af ​​den første matrix.
  9. Sæt en indre løkke op til at iterere over kolonnen i den anden matrix.
  10. Indstil en anden indre sløjfe til at iterere over kolonnen i den første matrix.
  11. Multiplicer og tilføj elementerne ved hjælp af formlen mul[i][j] += m1[i][k] * m2[k][j] og gemme resultatet af multiplikationen i den resulterende matrix.
  12. Vis den resulterende matrix.
  13. Afslut programmet.

Sådan udføres matrixmultiplikation ved hjælp af C

Hele kildekoden til matrixmultiplikation ved hjælp af C er til stede i denne GitHub-depot og er gratis at bruge.

Importer stdio-biblioteket for at indtaste numre og vis outputtet i overensstemmelse hermed. Erklære vigtigste funktion og bed brugeren om at indtaste antallet af kolonner og antallet af rækker for begge matricer ved hjælp af Print() fungere.

Brug scanf() funktion til at modtage input. %d er decimalformatet, der sikrer, at programmet læser input som et tal.

#omfatte
#omfatte

intvigtigste()
{
int r1, r2, cl, c2;

printf("Indtast antallet af rækker til den første matrix:\n");
scanf("%d", &r1);

printf("Indtast antallet af kolonner til den første matrix:\n");
scanf("%d", &c1);

printf("Indtast antallet af rækker til den anden matrix:\n");
scanf("%d", &r2);

printf("Indtast antallet af kolonner til den anden matrix:\n");
scanf("%d", &c2);

Tjek, at matrixmultiplikation er mulig. Hvis antallet af kolonner i den første matrix ikke er lig med antallet af rækker i den anden matrix, skal du vise en fejl og afslutte.

if (c1 != r2) {
printf("Matricerne kan ikke ganges sammen");
Afslut(-1);
}

Hvis alt er godt, skal du definere to multidimensionelle arrays, m1 og m2, med den størrelse, som brugeren har angivet. Bed brugeren om at indtaste elementerne i begge matricer én efter én. Brug en indlejret til loop for at tage input for både rækken og kolonnen i matrixen. Den ydre for-løkke itererer over matrixens rækker og den indre loop over matrixens søjle.

intm1[r1][c1], m2[r2][c2];
printf("Indtast elementerne i den første matrix\n");

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

printf("Indtast elementerne i den anden matrix\n");

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

Definer en tredje matrix, mul, af størrelsesordenen r1 * c2 for at gemme resultatet. Brug en indlejret til loop for at udføre multiplikationen. Den yderste for løkke itererer over rækkerne, den næste indre løkke itererer over kolonnerne, og den inderste udfører multiplikationen. Brug formlen mul[i][j] += m1[i][k] * m2[k][j] at gange grundstofferne i matricen.

Formlen bruger stenografioperatoren += at tilføje mul[i][j] til det beregnede udtryk og gemme det. Husk at initialisere resultatet til nul, før du tilføjer det.

intmul[r1][c2];

til (int i = 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 multiplicerede matrix ved hjælp af en indlejret for-løkke, der itererer over de resulterende matricers rækker og kolonner. Brug tegnet for ny linje (\n) til at vise hver af rækkerne på en separat linje. Retur 0 for at afslutte hovedfunktionen og programmet.

printf("Den multiplicerede matrix er: \n");

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

printf("\n");
}

Vend tilbage0;
}

Outputtet fra Matrix Multiplikationsprogrammet

Du bør se noget som følgende output, når du kører matrix multiplikationsprogrammet:

Hvis du indtaster ugyldigt input, mislykkes matrixmultiplikationen, og du vil se noget som dette:

Matricer har mange anvendelsesmuligheder

Forskellige felter bruger matricer som videnskab, handel, økonomi, geologi, robotteknologi og animation. Du vil hovedsageligt bruge matricer i matematik til at løse lineære ligninger og repræsentere transformationer såsom rotation eller translation. Matricer kan beregne mængden af ​​refleksion og brydning samt løse AC-netværksligninger i elektriske kredsløb.

Bortset fra uddannelsesapplikationer kan du bruge matricer til analyse af undersøgelsesdata, stemmedata, beregne emnelister og andre datasæt.