Čitatelia ako vy pomáhajú podporovať MUO. Keď uskutočníte nákup pomocou odkazov na našej stránke, môžeme získať pridruženú províziu. Čítaj viac.

Matice hrajú dôležitú úlohu v mnohých rôznych oblastiach vrátane počítačovej grafiky, kryptografie a bezdrôtovej komunikácie. Matica je obdĺžnikové pole čísel usporiadaných do riadkov a stĺpcov, ktoré sa používa na reprezentáciu matematického objektu alebo jeho vlastnosti.

Jednou z operácií, ktoré s nimi možno budete musieť vykonať, je násobenie matice. To nachádza využitie v mnohých oblastiach, ako sú aerodynamické výpočty, spracovanie signálu, spracovanie obrazu a seizmická analýza. Ale ako presne násobíte matice?

Ako vynásobiť dve matice

Poradie matice predstavujete ako súčin počtu riadkov (m) a počtu stĺpcov (n). Ak chcete vynásobiť dve matice, počet stĺpcov prvej matice sa musí rovnať riadkom druhej matice.

Ak máte dve matice, maticu A rádu m × n a B rádu n × p, poradie matice súčinu bude m × p. Predpokladajme napríklad, že máte maticu A obsahujúcu dva riadky (m) a tri stĺpce (n) a maticu B obsahujúcu tri riadky (n) a dva stĺpce (p). Výsledná matica bude pozostávať z dvoch riadkov a dvoch stĺpcov:

instagram viewer

Pomocou bodového súčinu vynásobíte dve matice. Ak chcete získať hodnotu prvého prvku výslednej matice, vynásobte a pridajte prvky prvého riadku prvej matice a prvého riadku druhého prvku matice po prvku takto:

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

Podobne pre druhý prvok vynásobte prvý riadok prvej matice a druhý stĺpec druhej matice takto:

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

Pre tretí prvok vynásobte druhý riadok prvej matice a prvý stĺpec druhej matice takto:

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

Pre štvrtý prvok vynásobte druhý riadok prvej matice a druhý stĺpec druhej matice takto:

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

Výsledná matica je teda:

Môžete skúmať a zostavovať rôzne programy pre rôzne operácie s maticami, ako napríklad:

  • sčítanie a odčítanie dvoch matíc
  • nájdenie transpozície matice
  • kontrola, či sú dve matice identické

Algoritmus na násobenie dvoch matíc

Podľa tohto algoritmu zostavte program na násobenie akýchkoľvek dvoch matíc:

  1. Spustite program.
  2. Zadajte riadky a stĺpce prvej matice.
  3. Zadajte riadky a stĺpce druhej matice.
  4. Ak sú matice nekompatibilné pre násobenie, vypíšte chybu a ukončite.
  5. Definujte maticu a zadajte čísla do prvej matice.
  6. Definujte ďalšiu maticu a zadajte číslo do druhej matice.
  7. Definujte maticu na uloženie výsledku násobenia dvoch matíc.
  8. Nastavte cyklus na iteráciu cez riadok prvej matice.
  9. Nastavte vnútornú slučku na iteráciu cez stĺpec druhej matice.
  10. Nastavte ďalšiu vnútornú slučku na iteráciu cez stĺpec prvej matice.
  11. Vynásobte a pridajte prvky pomocou vzorca mul[i][j] += m1[i][k] * m2[k][j] a uložiť výsledok násobenia do výslednej matice.
  12. Zobrazte výslednú maticu.
  13. Ukončite program.

Ako vykonať maticové násobenie pomocou C

V tomto je prítomný celý zdrojový kód pre násobenie matíc pomocou C úložisko GitHub a je zadarmo na použitie.

Importujte knižnicu stdio na zadávanie čísel a podľa toho zobrazte výstup. Vyhlásiť Hlavná a požiadajte užívateľa, aby zadal počet stĺpcov a počet riadkov pre obe matice pomocou tlačiť () funkciu.

Použi scanf() funkcia na príjem vstupu. %d je špecifikátor desiatkového formátu, ktorý zabezpečuje, že program číta vstup ako číslo.

#zahŕňajú
#zahŕňajú

intHlavná()
{
int r1, r2, cl, c2;

printf(„Zadajte počet riadkov pre prvá matica:\n");
scanf("%d", &r1);

printf(„Zadajte počet stĺpcov pre prvá matica:\n");
scanf("%d", &c1);

printf(„Zadajte počet riadkov pre druhá matica:\n");
scanf("%d", &r2);

printf(„Zadajte počet stĺpcov pre druhá matica:\n");
scanf("%d", &c2);

Skontrolujte, či je možné násobenie matice. Ak sa počet stĺpcov prvej matice nerovná počtu riadkov druhej matice, zobrazte chybu a ukončite.

if (c1 != r2) {
printf("Matice sa nedajú násobiť");
VÝCHOD(-1);
}

Ak je všetko v poriadku, definujte dve viacrozmerné polia, m1 a m2s veľkosťou poskytnutou používateľom. Požiadajte používateľa, aby postupne zadával prvky oboch matíc. Použite vnorené pre slučka, ktorá prevezme vstup pre riadok aj stĺpec matice. Vonkajší cyklus for iteruje cez riadky matice a vnútorný cyklus cez stĺpec matice.

intm1[r1][c1], m2[r2][c2];
printf("Zadajte prvky prvej matice\n");

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

printf("Zadajte prvky druhej matice\n");

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

Definujte tretiu maticu, mul, poradia r1 * c2 na uloženie výsledku. Použite vnorené pre slučku na vykonanie násobenia. Vonkajší cyklus for iteruje cez riadky, ďalší vnútorný cyklus prechádza cez stĺpce a najvnútornejší cyklus vykonáva násobenie. Použite vzorec mul[i][j] += m1[i][k] * m2[k][j] znásobiť prvky matice.

Vzorec používa skratkový operátor += pridať mul[i][j] na vypočítaný výraz a uložte ho. Pred pridaním výsledku nezabudnite inicializovať na nulu.

intmul[r1][c2];

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

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

Zobrazte vynásobenú maticu pomocou vnoreného cyklu for, ktorý iteruje cez riadky a stĺpce výsledných matíc. Na zobrazenie každého z riadkov na samostatnom riadku použite znak nového riadka (\n). Návratom 0 ukončíte hlavnú funkciu a program.

printf("Vynásobená matica je: \n");

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

printf("\n");
}

vrátiť0;
}

Výstup programu násobenia matice

Keď spustíte program násobenia matíc, mali by ste vidieť niečo ako nasledujúci výstup:

Ak zadáte neplatný vstup, násobenie matice zlyhá a uvidíte niečo takéto:

Matice majú mnohoraké využitie

Rôzne oblasti používajú matrice, ako je veda, obchod, ekonomika, geológia, robotika a animácia. Matice v matematike využijete hlavne na riešenie lineárnych rovníc a reprezentáciu transformácií, ako je rotácia alebo translácia. Matice dokážu vypočítať množstvo odrazu a lomu, ako aj vyriešiť rovnice striedavej siete v elektrických obvodoch.

Okrem vzdelávacích aplikácií môžete použiť matice na analýzu údajov z prieskumov, údajov o hlasovaní, zoznamov výpočtových položiek a iných súborov údajov.