Kaltaisesi lukijat auttavat tukemaan MUO: ta. Kun teet ostoksen käyttämällä sivustollamme olevia linkkejä, voimme ansaita kumppanipalkkion. Lue lisää.

Matriiseilla on tärkeä rooli monilla eri aloilla, mukaan lukien tietokonegrafiikka, kryptografia ja langaton viestintä. Matriisi on suorakaiteen muotoinen riveihin ja sarakkeisiin järjestetyt numerot, joita käytetään edustamaan matemaattista objektia tai sen ominaisuutta.

Yksi operaatioista, jotka sinun on ehkä suoritettava niille, on matriisikerto. Tälle löytyy käyttöä monilla aloilla, kuten aerodynaamisissa laskelmissa, signaalinkäsittelyssä, kuvankäsittelyssä ja seismisessä analyysissä. Mutta kuinka tarkalleen kerrot matriiseja?

Kuinka kertoa kaksi matriisia

Esität matriisin järjestyksen rivien määrän (m) ja sarakkeiden määrän (n) tulona. Kahden matriisin kertominen edellyttää, että ensimmäisen matriisin sarakkeiden lukumäärä on yhtä suuri kuin toisen matriisin rivit.

Jos sinulla on kaksi matriisia, matriisi A, jonka suuruus on m × n ja B, jonka kertaluku on n × p, tulomatriisin järjestys on m × p. Oletetaan esimerkiksi, että sinulla on matriisi A, joka sisältää kaksi riviä (m) ja kolme saraketta (n) ja matriisi B, joka sisältää kolme riviä (n) ja kaksi saraketta (p). Tuloksena oleva matriisi koostuu kahdesta rivistä ja kahdesta sarakkeesta:

instagram viewer

Kerrot kaksi matriisia käyttämällä pistetuloa. Saadaksesi tuloksena olevan matriisin ensimmäisen elementin arvon, kerro ja lisää ensimmäisen matriisin ensimmäisen rivin ja toisen matriisin ensimmäisen rivin elementit elementeiltä seuraavasti:

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

Vastaavasti toiselle elementille kerrotaan ensimmäisen matriisin ensimmäinen rivi ja toisen matriisin toinen sarake seuraavasti:

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

Kolmannelle elementille kerro ensimmäisen matriisin toinen rivi ja toisen matriisin ensimmäinen sarake seuraavasti:

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

Kerro neljännelle elementille ensimmäisen matriisin toinen rivi ja toisen matriisin toinen sarake seuraavasti:

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

Näin ollen tuloksena oleva matriisi on:

Voit tutkia ja rakentaa erilaisia ​​ohjelmia erilaisiin matriisioperaatioihin, kuten:

  • kahden matriisin lisääminen ja vähentäminen
  • matriisin transponoinnin löytäminen
  • tarkistaa, ovatko kaksi matriisia identtisiä

Algoritmi kahden matriisin kertomiseksi

Seuraa tätä algoritmia rakentaaksesi ohjelman minkä tahansa kahden matriisin kertomista varten:

  1. Aloita ohjelma.
  2. Syötä ensimmäisen matriisin rivit ja sarakkeet.
  3. Syötä toisen matriisin rivit ja sarakkeet.
  4. Jos matriisit eivät ole yhteensopivia kertomista varten, tulosta virheilmoitus ja poistu.
  5. Määritä matriisi ja syötä numerot ensimmäiseen matriisiin.
  6. Määrittele toinen matriisi ja syötä numero toiseen matriisiin.
  7. Määritä matriisi, joka tallentaa kahden matriisin kertolaskutuloksen.
  8. Aseta silmukka iteroimaan ensimmäisen matriisin riviä.
  9. Aseta sisäsilmukka iteroimaan toisen matriisin sarakkeen yli.
  10. Aseta toinen sisäsilmukka iteroimaan ensimmäisen matriisin sarakkeen yli.
  11. Kerro ja lisää elementit kaavan avulla mul[i][j] += m1[i][k] * m2[k][j] ja tallenna kertolaskutulos resultanttimatriisiin.
  12. Näytä tuloksena oleva matriisi.
  13. Poistu ohjelmasta.

Kuinka tehdä matriisikerto käyttämällä C

Tässä on koko lähdekoodi matriisin kertomiseen C: llä GitHub-arkisto ja on ilmainen käyttää.

Tuo stdio-kirjasto syöttääksesi numerot ja näyttääksesi tulosteen vastaavasti. Ilmoita pää funktio ja pyydä käyttäjää syöttämään molempien matriisien sarakkeiden ja rivien lukumäärä käyttämällä Tulosta() toiminto.

Käytä scanf() toiminto syötteen vastaanottamiseksi. %d on desimaalimuodon määrittäjä, joka varmistaa, että ohjelma lukee syötteen numerona.

#sisältää
#sisältää

intpää()
{
int r1, r2, c1, c2;

printf("Anna rivien määrä varten ensimmäinen matriisi:\n");
scanf("%d", &r1);

printf("Anna sarakkeiden määrä varten ensimmäinen matriisi:\n");
scanf("%d", &c1);

printf("Anna rivien määrä varten toinen matriisi:\n");
scanf("%d", &r2);

printf("Anna sarakkeiden määrä varten toinen matriisi:\n");
scanf("%d", &c2);

Tarkista, että matriisin kertolasku on mahdollista. Jos ensimmäisen matriisin sarakkeiden lukumäärä ei ole yhtä suuri kuin toisen matriisin rivien lukumäärä, näytä virheilmoitus ja poistu.

if (c1 != r2) {
printf("Matriiseja ei voi kertoa yhteen");
poistu(-1);
}

Jos kaikki on hyvin, määritä kaksi moniulotteista taulukkoa, m1 ja m2, jonka koko on käyttäjän ilmoittama. Pyydä käyttäjää syöttämään molempien matriisien elementit yksitellen. Käytä sisäkkäistä varten silmukka ottaaksesi syötteen sekä matriisin riville että sarakkeelle. Ulompi for-silmukka toistuu matriisin rivien yli ja sisempi silmukka matriisin sarakkeen yli.

intm1[r1][c1], m2[r2][c2];
printf("Syötä ensimmäisen matriisin elementit\n");

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

printf("Syötä toisen matriisin elementit\n");

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

Määrittele kolmas matriisi, mul, järjestyksessä r1 * c2 tallentaaksesi tuloksen. Käytä sisäkkäistä varten silmukan kertolaskua varten. Uloin for-silmukka toistuu rivien yli, seuraava sisempi silmukka toistuu sarakkeiden yli ja sisin suorittaa kertolaskua. Käytä kaavaa mul[i][j] += m1[i][k] * m2[k][j] kerrotaan matriisin elementit.

Kaava käyttää pikaoperaattoria += lisätä mul[i][j] laskettuun lausekkeeseen ja tallenna se. Muista alustaa tulos nollaan ennen kuin lisäät siihen.

intmul[r1][c2];

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

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

Näytä kerrottu matriisi käyttämällä sisäkkäistä silmukkaa, joka toistuu tuloksena olevien matriisien rivien ja sarakkeiden yli. Käytä uuden rivin merkkiä (\n) näyttääksesi jokainen rivi erillisellä rivillä. Palauta 0 poistuaksesi päätoiminnosta ja ohjelmasta.

printf("Kertomatriisi on: \n");

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

printf("\n");
}

palata0;
}

Matriisikerto-ohjelman tulos

Sinun pitäisi nähdä jotain seuraavanlaista, kun suoritat matriisikerto-ohjelman:

Jos syötät virheellisen syötteen, matriisin kertolasku epäonnistuu ja näet jotain tällaista:

Matriiseilla on monia käyttötarkoituksia

Useat alat käyttävät matriiseja, kuten tiede, kauppa, taloustiede, geologia, robotiikka ja animaatio. Käytät pääasiassa matriiseja matematiikassa lineaaristen yhtälöiden ratkaisemiseen ja muunnosten, kuten rotaation tai translaation, esittämiseen. Matriiseilla voidaan laskea heijastuksen ja taittumisen määrä sekä ratkaista AC-verkkoyhtälöitä sähköpiireissä.

Koulutussovellusten lisäksi voit käyttää matriiseja kyselytietojen, äänestystietojen, kohdeluetteloiden ja muiden tietojoukkojen analysointiin.