Az Önhöz hasonló olvasók támogatják a MUO-t. Amikor a webhelyünkön található linkek használatával vásárol, társult jutalékot kaphatunk. Olvass tovább.

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:

instagram viewer

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:

  1. Indítsa el a programot.
  2. Adja meg az első mátrix sorait és oszlopait.
  3. Adja meg a második mátrix sorait és oszlopait.
  4. Ha a mátrixok nem kompatibilisek a szorzással, nyomtasson ki egy hibát, és lépjen ki.
  5. Határozzon meg egy mátrixot, és írja be a számokat az első mátrixba.
  6. Adjon meg egy másik mátrixot, és írja be a számot a második mátrixba.
  7. Határozzon meg egy mátrixot, amely tárolja a két mátrix szorzásának eredményét.
  8. Állítson be egy hurkot az első mátrix sora feletti iterációhoz.
  9. Hozzon létre egy belső hurkot a második mátrix oszlopa feletti iterációhoz.
  10. Állítson be egy másik belső hurkot az első mátrix oszlopa feletti iterációhoz.
  11. 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.
  12. Jelenítse meg az eredményül kapott mátrixot.
  13. 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
#tartalmazza

intfő-()
{
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.