A mátrixok létfontosságú szerepet játszanak számos területen, beleértve a számítógépes grafikát, a kriptográfiát és a vezeték nélküli kommunikációt. A mátrix egy téglalap alakú számok sorokba és oszlopokba rendezett tömbje, amelyet egy matematikai objektum vagy annak tulajdonságának ábrázolására használnak.
Az egyik művelet, amelyet el kell végeznie velük, a mátrixszorzás. Ez számos területen használható, például aerodinamikai számításokban, jelfeldolgozásban, képfeldolgozásban és szeizmikus elemzésben. De pontosan hogyan kell mátrixokat szorozni?
Hogyan kell szorozni két mátrixot
A mátrix sorrendjét a sorok számának (m) és az oszlopok számának (n) szorzataként ábrázolja. Két mátrix szorzásához az első mátrix oszlopainak számának meg kell egyeznie a második mátrix soraival.
Ha két mátrixa van, az A mátrix m × n, a B pedig az n × p rendű, a szorzatmátrix sorrendje m × p lesz. Tegyük fel például, hogy van egy A mátrixa, amely két sort (m) és három oszlopot (n) tartalmaz, valamint egy B mátrixot, amely három sort (n) és két oszlopot (p) tartalmaz. Az eredményül kapott mátrix két sorból és két oszlopból áll:
Két mátrixot szoroz meg a pontszorzat segítségével. Az eredményül kapott mátrix első elemének értékének meghatározásához szorozza meg és adja össze az első mátrix első sorának és a második mátrix első sorának elemeit elemenként a következőképpen:
(1, 2, 3) • (7, 9, 11) = 1×7 + 2×9 + 3×11 = 58
Hasonlóképpen, a második elem esetében szorozza meg az első mátrix első sorát és a második mátrix második oszlopát a következőképpen:
(1, 2, 3) • (8, 10, 12) = 1×8 + 2×10 + 3×12 = 64
A harmadik elemhez szorozza meg az első mátrix második sorát és a második mátrix első oszlopát a következőképpen:
(4, 5, 6) • (7, 9, 11) = 4×7 + 5×9 + 6×11 = 139
A negyedik elemhez szorozza meg az első mátrix második sorát és a második mátrix második oszlopát a következőképpen:
(4, 5, 6) • (8, 10, 12) = 4×8 + 5×10 + 6×12 = 154
Így az eredményül kapott mátrix:
Különféle programokat fedezhet fel és készíthet különböző mátrixokon végzett műveletekhez, például:
- két mátrix összeadása és kivonása
- mátrix transzpozíciójának megtalálása
- annak ellenőrzése, hogy két mátrix azonos-e
Algoritmus két mátrix szorzására
Kövesse ezt az algoritmust a program felépítéséhez bármely két mátrix szorzására:
- Indítsa el a programot.
- Adja meg az első mátrix sorait és oszlopait.
- Adja meg a második mátrix sorait és oszlopait.
- Ha a mátrixok nem kompatibilisek a szorzással, nyomtasson ki egy hibát, és lépjen ki.
- Határozzon meg egy mátrixot, és írja be a számokat az első mátrixba.
- Adjon meg egy másik mátrixot, és írja be a számot a második mátrixba.
- Határozzon meg egy mátrixot, amely tárolja a két mátrix szorzásának eredményét.
- Állítson be egy hurkot az első mátrix sora feletti iterációhoz.
- Hozzon létre egy belső hurkot a második mátrix oszlopa feletti iterációhoz.
- Állítson be egy másik belső hurkot az első mátrix oszlopa feletti iterációhoz.
- Szorozza meg és adja össze az elemeket a képlet segítségével mul[i][j] += m1[i][k] * m2[k][j] és tároljuk a szorzás eredményét az eredő mátrixban.
- Jelenítse meg az eredményül kapott mátrixot.
- Lépjen ki a programból.
Hogyan végezzünk mátrixszorzást C használatával
A C-vel történő mátrixszorzás teljes forráskódja jelen van ebben GitHub adattár és ingyenesen használható.
Importálja az stdio könyvtárat a számok beviteléhez, és ennek megfelelően jelenítse meg a kimenetet. Nyilatkozni a fő- függvényt, és kérje meg a felhasználót, hogy adja meg az oszlopok és a sorok számát mindkét mátrixhoz a segítségével nyomtatás() funkció.
Használja a scanf() funkció a bemenet fogadására. %d a decimális formátum-meghatározó, amely biztosítja, hogy a program számként olvassa be a bemenetet.
#tartalmazza
#tartalmazzaintfő-()
{
int r1, r2, c1, c2;
printf("Adja meg a sorok számát számára az első mátrix:\n");
scanf("%d", &r1);
printf("Adja meg az oszlopok számát számára az első mátrix:\n");
scanf("%d", &c1);
printf("Adja meg a sorok számát számára a második mátrix:\n");
scanf("%d", &r2);
printf("Adja meg az oszlopok számát számára a második mátrix:\n");
scanf("%d", &c2);
Ellenőrizze, hogy lehetséges-e a mátrixszorzás. Ha az első mátrix oszlopainak száma nem egyenlő a második mátrix sorainak számával, akkor jelenítsen meg egy hibát és lépjen ki.
if (c1 != r2) {
printf("A mátrixok nem szorozhatók össze");
kijárat(-1);
}
Ha minden rendben van, határozzon meg két többdimenziós tömböt, m1 és m2, a felhasználó által megadott mérettel. Kérje meg a felhasználót, hogy egyenként adja meg mindkét mátrix elemeit. Használjon beágyazottat számára hurkot a mátrix sorának és oszlopának bemenetéhez. A külső for ciklus a mátrix sorain, a belső ciklus pedig a mátrix oszlopán iterál.
intm1[r1][c1], m2[r2][c2];
printf("Adja meg az első mátrix elemeit\n");számára (int i = 0; i < r1; i++) {
számára (int j = 0; j < c1; j++) {
scanf("%d", &m1[i][j]);
}
}
printf("Adja meg a második mátrix elemeit\n");
számára (int i = 0; i < r2; i++) {
számára (int j = 0; j < c2; j++) {
scanf("%d",&m2[i][j]);
}
}
Határozzon meg egy harmadik mátrixot, mul, r1 * c2 sorrendben az eredmény tárolásához. Használjon beágyazottat számára hurkot a szorzás végrehajtásához. A legkülső for ciklus ismétlődik a sorokon, a következő belső ciklus az oszlopokon, és a legbelső hajtja végre a szorzást. Használja a képletet mul[i][j] += m1[i][k] * m2[k][j] hogy megszorozzuk a mátrix elemeit.
A képlet a gyorsírás operátort használja += hozzáadni mul[i][j] a számított kifejezéshez, és tárolja azt. Ne felejtse el nullára inicializálni az eredményt, mielőtt hozzáadná.
intmul[r1][c2];számára (int i = 0; i < r1; i++) {
számára (int j = 0; j < c2; j++) {
mul[i][j] = 0;
számára (int k = 0; k < c1; k++) {
mul[i][j] += m1[i][k] * m2[k][j];
}
}
}
Jelenítse meg a szorzott mátrixot egy beágyazott for ciklus segítségével, amely az eredő mátrixok sorain és oszlopain iterál. Használja az újsor karaktert (\n) az egyes sorok külön sorban való megjelenítéséhez. A fő funkcióból és a programból való kilépéshez adja vissza a 0-t.
printf("A szorzott mátrix: \n"); számára (int i = 0; i < r1; i++) {
számára (int j = 0; j < c2; j++) {
printf("%d\t", mul[i][j]);
}
printf("\n");
}
Visszatérés0;
}
A mátrixszorzó program kimenete
A mátrixszorzó program futtatásakor a következő kimenethez hasonlót kell látnia:
Ha érvénytelen bevitelt ad meg, a mátrixszorzás meghiúsul, és valami ilyesmit fog látni:
A mátrixoknak sokféle felhasználása van
Különféle területek használnak olyan mátrixokat, mint a tudomány, a kereskedelem, a közgazdaságtan, a geológia, a robotika és az animáció. A matematikában főként mátrixokat fog használni lineáris egyenletek megoldására és transzformációk, például forgatás vagy fordítás ábrázolására. A mátrixok képesek kiszámítani a visszaverődés és fénytörés mértékét, valamint megoldani az AC hálózati egyenleteket az elektromos áramkörökben.
Az oktatási alkalmazásokon kívül mátrixokat is használhat felmérési adatok, szavazási adatok, tétellisták és egyéb adatkészletek elemzésére.