Čtenáři jako vy pomáhají podporovat MUO. Když provedete nákup pomocí odkazů na našich stránkách, můžeme získat provizi přidružené společnosti. Přečtěte si více.

Matice hrají zásadní roli v mnoha různých oblastech, včetně počítačové grafiky, kryptografie a bezdrátové komunikace. Matice je obdélníkové pole čísel uspořádaných do řádků a sloupců, které se používá k reprezentaci matematického objektu nebo jeho vlastnosti.

Jednou z operací, které s nimi možná budete muset provést, je maticové násobení. To nachází využití v mnoha oblastech, jako jsou aerodynamické výpočty, zpracování signálu, zpracování obrazu a seismická analýza. Ale jak přesně násobíte matice?

Jak vynásobit dvě matice

Pořadí matice představujete jako součin počtu řádků (m) a počtu sloupců (n). Pro vynásobení dvou matic musí být počet sloupců první matice roven řádkům druhé matice.

Pokud máte dvě matice, matici A řádu m × n a B řádu n × p, bude řád matice součinu m × p. Předpokládejme například, že máte matici A obsahující dva řádky (m) a tři sloupce (n) a matici B obsahující tři řádky (n) a dva sloupce (p). Výsledná matice se bude skládat ze dvou řádků a dvou sloupců:

instagram viewer

Dvě matice vynásobíte pomocí tečkového součinu. Chcete-li získat hodnotu prvního prvku výsledné matice, vynásobte a sečtěte prvky prvního řádku první matice a prvního řádku druhého prvku matice po prvku jako:

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

Podobně pro druhý prvek vynásobte první řádek první matice a druhý sloupec druhé matice takto:

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

Pro třetí prvek vynásobte druhý řádek první matice a první sloupec druhé matice takto:

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

Pro čtvrtý prvek vynásobte druhý řádek první matice a druhý sloupec druhé matice takto:

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

Výsledná matice je tedy:

Můžete prozkoumat a vytvořit různé programy pro různé operace s maticemi, jako jsou:

  • sčítání a odečítání dvou matic
  • nalezení transpozice matice
  • kontrola, zda jsou dvě matice totožné

Algoritmus pro násobení dvou matic

Podle tohoto algoritmu sestavte program pro násobení libovolných dvou matic:

  1. Spusťte program.
  2. Zadejte řádky a sloupce první matice.
  3. Zadejte řádky a sloupce druhé matice.
  4. Pokud jsou matice nekompatibilní pro násobení, vytiskněte chybu a ukončete.
  5. Definujte matici a zadejte čísla do první matice.
  6. Definujte další matici a zadejte číslo do druhé matice.
  7. Definujte matici pro uložení výsledku násobení dvou matic.
  8. Nastavte smyčku pro iteraci přes řádek první matice.
  9. Nastavte vnitřní smyčku pro iteraci přes sloupec druhé matice.
  10. Nastavte další vnitřní smyčku pro iteraci přes sloupec první matice.
  11. Vynásobte a sečtěte prvky pomocí vzorce mul[i][j] += m1[i][k] * m2[k][j] a uložit výsledek násobení do výsledné matice.
  12. Zobrazte výslednou matici.
  13. Ukončete program.

Jak provést násobení matic pomocí C

V tomto je přítomen celý zdrojový kód pro násobení matic pomocí C úložiště GitHub a je zdarma k použití.

Importujte knihovnu stdio pro zadání čísel a podle toho zobrazte výstup. Vyhlásit hlavní a požádejte uživatele, aby zadal počet sloupců a počet řádků pro obě matice pomocí tisk() funkce.

Použijte scanf() funkce pro příjem vstupu. %d je specifikátor desetinného formátu, který zajišťuje, že program čte vstup jako číslo.

#zahrnout
#zahrnout

inthlavní()
{
int rl, r2, cl, c2;

printf(„Zadejte počet řádků pro první matice:\n");
scanf("%d", &r1);

printf(„Zadejte počet sloupců pro první matice:\n");
scanf("%d", &cl);

printf(„Zadejte počet řádků pro druhá matice:\n");
scanf("%d", &r2);

printf(„Zadejte počet sloupců pro druhá matice:\n");
scanf("%d", &c2);

Zkontrolujte, zda je možné násobení matice. Pokud se počet sloupců první matice nerovná počtu řádků druhé matice, zobrazte chybu a ukončete.

if (c1 != r2) {
printf("Matice nelze násobit dohromady");
výstup(-1);
}

Pokud je vše v pořádku, definujte dvě vícerozměrná pole, m1 a m2s velikostí poskytnutou uživatelem. Požádejte uživatele, aby postupně zadával prvky obou matic. Použijte vnořené pro smyčka, která převezme vstup pro řádek i sloupec matice. Vnější smyčka for iteruje přes řádky matice a vnitřní smyčka přes sloupec matice.

intm1[r1][c1], m2[r2][c2];
printf("Zadejte prvky první matice\n");

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

printf("Zadejte prvky druhé matice\n");

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

Definujte třetí matici, mul, řádu r1 * c2 k uložení výsledku. Použijte vnořené pro smyčka pro provedení násobení. Nejvzdálenější smyčka for iteruje přes řádky, další vnitřní smyčka iteruje přes sloupce a nejvnitřnější provede násobení. Použijte vzorec mul[i][j] += m1[i][k] * m2[k][j] k vynásobení prvků matice.

Vzorec používá zkrácený operátor += přidat mul[i][j] k vypočítanému výrazu a uložit jej. Nezapomeňte před přidáním výsledek inicializovat na nulu.

intmul[r1][c2];

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

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

Zobrazte vynásobenou matici pomocí vnořeného cyklu for, který iteruje řádky a sloupce výsledných matic. Pomocí znaku nového řádku (\n) zobrazte každý z řádků na samostatném řádku. Vraťte 0 pro ukončení hlavní funkce a programu.

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

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

printf("\n");
}

vrátit se0;
}

Výstup programu násobení matic

Při spuštění programu násobení matic byste měli vidět něco jako následující výstup:

Pokud zadáte neplatný vstup, násobení matice selže a uvidíte něco takového:

Matice mají mnoho využití

Různé obory používají matrice, jako je věda, obchod, ekonomie, geologie, robotika a animace. Matice v matematice využijete hlavně k řešení lineárních rovnic a reprezentaci transformací, jako je rotace nebo translace. Matice mohou vypočítat množství odrazu a lomu a také řešit rovnice střídavých sítí v elektrických obvodech.

Kromě vzdělávacích aplikací můžete použít matice pro analýzu dat z průzkumů, volebních dat, výpočtových seznamů položek a dalších datových sad.