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ů:
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:
- Spusťte program.
- Zadejte řádky a sloupce první matice.
- Zadejte řádky a sloupce druhé matice.
- Pokud jsou matice nekompatibilní pro násobení, vytiskněte chybu a ukončete.
- Definujte matici a zadejte čísla do první matice.
- Definujte další matici a zadejte číslo do druhé matice.
- Definujte matici pro uložení výsledku násobení dvou matic.
- Nastavte smyčku pro iteraci přes řádek první matice.
- Nastavte vnitřní smyčku pro iteraci přes sloupec druhé matice.
- Nastavte další vnitřní smyčku pro iteraci přes sloupec první matice.
- 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.
- Zobrazte výslednou matici.
- 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
#zahrnoutinthlavní()
{
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.