Teiesugused lugejad aitavad MUO-d toetada. Kui teete ostu meie saidil olevate linkide abil, võime teenida sidusettevõtte komisjonitasu. Loe rohkem.

Maatriksid mängivad olulist rolli paljudes erinevates valdkondades, sealhulgas arvutigraafikas, krüptograafias ja traadita sides. Maatriks on ristkülikukujuline ridadesse ja veergudesse paigutatud arvude massiiv, mida kasutatakse matemaatilise objekti või selle omaduse esitamiseks.

Üks toimingutest, mida peate võib-olla nendega tegema, on maatrikskorrutamine. See leiab kasutust paljudes valdkondades, nagu aerodünaamika arvutused, signaalitöötlus, pilditöötlus ja seismiline analüüs. Aga kuidas täpselt maatrikseid korrutada?

Kuidas korrutada kahte maatriksit

Esitate maatriksi järjekorda ridade arvu (m) ja veergude arvu (n) korrutisena. Kahe maatriksi korrutamiseks peab esimese maatriksi veergude arv olema võrdne teise maatriksi ridadega.

Kui teil on kaks maatriksit, maatriks A suurusjärgus m × n ja B suurusjärgus n × p, on korrutismaatriksi järjekord m × p. Oletame näiteks, et teil on maatriks A, mis sisaldab kahte rida (m) ja kolme veergu (n) ning maatriks B, mis sisaldab kolme rida (n) ja kahte veergu (p). Saadud maatriks koosneb kahest reast ja kahest veerust:

instagram viewer

Punktkorrutise abil korrutate kaks maatriksit. Tulemusmaatriksi esimese elemendi väärtuse saamiseks korrutage ja liitke esimese maatriksi esimese rea ja teise maatriksi esimese rea elemendid elemendi kaupa järgmiselt:

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

Samamoodi korrutage teise elemendi jaoks esimese maatriksi esimene rida ja teise maatriksi teine ​​veerg järgmiselt:

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

Kolmanda elemendi jaoks korrutage esimese maatriksi teine ​​rida ja teise maatriksi esimene veerg järgmiselt:

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

Neljanda elemendi jaoks korrutage esimese maatriksi teine ​​rida ja teise maatriksi teine ​​veerg järgmiselt:

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

Seega on saadud maatriks:

Saate uurida ja luua erinevaid programme erinevate maatriksite operatsioonide jaoks, näiteks:

  • kahe maatriksi liitmine ja lahutamine
  • maatriksi transponeerimise leidmine
  • kontrollida, kas kaks maatriksit on identsed

Algoritm kahe maatriksi korrutamiseks

Järgige seda algoritmi, et koostada programm kahe maatriksi korrutamiseks:

  1. Alustage programmi.
  2. Sisestage esimese maatriksi read ja veerud.
  3. Sisestage teise maatriksi read ja veerud.
  4. Kui maatriksid korrutamiseks ei ühildu, printige veateade ja väljuge.
  5. Defineerige maatriks ja sisestage numbrid esimesse maatriksisse.
  6. Määratlege teine ​​maatriks ja sisestage arv teise maatriksisse.
  7. Määratlege maatriks kahe maatriksi korrutamise tulemuse salvestamiseks.
  8. Seadke tsükkel, et itereerida üle esimese maatriksi rea.
  9. Seadistage sisemine silmus teise maatriksi veeru kordamiseks.
  10. Seadistage esimese maatriksi veeru kordumiseks veel üks sisemine tsükkel.
  11. Korrutage ja lisage elemendid valemi abil mul[i][j] += m1[i][k] * m2[k][j] ja salvestage korrutamise tulemus resultantmaatriksisse.
  12. Kuvage saadud maatriks.
  13. Välju programmist.

Kuidas teha maatrikskorrutamist kasutades C

Selles on olemas kogu maatrikskorrutamise lähtekood C-ga GitHubi hoidla ja on tasuta kasutatav.

Numbrite sisestamiseks ja väljundi kuvamiseks importige stdio teek. Deklareerige peamine funktsiooni ja paluge kasutajal sisestada mõlema maatriksi veergude ja ridade arv, kasutades print() funktsiooni.

Kasuta scanf() funktsioon sisendi vastuvõtmiseks. %d on kümnendvormingu spetsifikaator, mis tagab, et programm loeb sisendi numbrina.

#sisaldama
#sisaldama

intpeamine()
{
int r1, r2, c1, c2;

printf("Sisestage ridade arv jaoks esimene maatriks:\n");
scanf("%d", &r1);

printf("Sisestage veergude arv jaoks esimene maatriks:\n");
scanf("%d", &c1);

printf("Sisestage ridade arv jaoks teine ​​maatriks:\n");
scanf("%d", &r2);

printf("Sisestage veergude arv jaoks teine ​​maatriks:\n");
scanf("%d", &c2);

Kontrollige, kas maatriksi korrutamine on võimalik. Kui esimese maatriksi veergude arv ei ole võrdne teise maatriksi ridade arvuga, kuvage veateade ja väljuge.

if (c1 != r2) {
printf("Maatriksiid ei saa omavahel korrutada");
väljuda(-1);
}

Kui kõik on hästi, määrake kaks mitmemõõtmelist massiivi, m1 ja m2, kasutaja määratud suurusega. Paluge kasutajal sisestada mõlema maatriksi elemendid ükshaaval. Kasutage pesastatud jaoks tsükkel, et võtta sisend nii maatriksi rea kui ka veeru jaoks. Väline silmus kordab maatriksi ridu ja sisemine tsükkel üle maatriksi veeru.

intm1[r1][c1], m2[r2][c2];
printf("Sisestage esimese maatriksi elemendid\n");

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

printf("Sisestage teise maatriksi elemendid\n");

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

Määratlege kolmas maatriks, mul, järjekorras r1 * c2 tulemuse salvestamiseks. Kasutage pesastatud jaoks tsükkel korrutamise sooritamiseks. Välisim silmus kordab ridu, järgmine sisemine tsükkel kordab veerge ja sisemine teostab korrutamise. Kasutage valemit mul[i][j] += m1[i][k] * m2[k][j] maatriksi elementide korrutamiseks.

Valem kasutab stenogrammi operaatorit += Lisama mul[i][j] arvutatud avaldisesse ja salvestage see. Ärge unustage enne tulemuse lisamist nullida.

intmul[r1][c2];

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

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

Kuvage korrutatud maatriks, kasutades pesastatud tsüklit, mis itereerub üle saadud maatriksite ridade ja veergude. Kasutage uue rea märki (\n), et kuvada iga rida eraldi real. Põhifunktsioonist ja programmist väljumiseks tagastage 0.

printf("Korrutatud maatriks on: \n");

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

printf("\n");
}

tagasi0;
}

Maatrikskorrutusprogrammi väljund

Maatriksi korrutamisprogrammi käivitamisel peaksite nägema midagi sellist, nagu järgmine väljund:

Kui sisestate vale sisendi, siis maatriksi korrutamine nurjub ja näete midagi sellist:

Maatriksitel on palju kasutusvõimalusi

Erinevad valdkonnad kasutavad maatrikseid nagu teadus, kaubandus, majandus, geoloogia, robootika ja animatsioon. Peamiselt kasutate matemaatikas maatrikseid lineaarsete võrrandite lahendamiseks ja teisenduste (nt pööramine või translatsioon) esitamiseks. Maatriksitega saab arvutada peegelduse ja murdumise suurust ning lahendada vahelduvvooluvõrgu võrrandeid elektriahelates.

Lisaks haridusrakendustele saate maatriksite abil analüüsida küsitlusandmeid, hääletusandmeid, arvutada üksuste loendeid ja muid andmekogumeid.