Čitatelji poput vas podržavaju MUO. Kada kupite putem poveznica na našoj stranici, možemo zaraditi partnersku proviziju. Čitaj više.

Matrice igraju vitalnu ulogu u mnogim različitim područjima, uključujući računalnu grafiku, kriptografiju i bežičnu komunikaciju. Matrica je pravokutni niz brojeva raspoređenih u retke i stupce, koji se koristi za predstavljanje matematičkog objekta ili njegovog svojstva.

Jedna od operacija koju ćete možda morati izvesti na njima je množenje matrice. Ovo se koristi u mnogim područjima kao što su aerodinamička izračunavanja, obrada signala, obrada slike i seizmička analiza. Ali kako točno množite matrice?

Kako pomnožiti dvije matrice

Redoslijed matrice predstavljate kao umnožak broja redaka (m) i broja stupaca (n). Za množenje dviju matrica broj stupaca prve matrice mora biti jednak broju redaka druge matrice.

Ako imate dvije matrice, matricu A reda m × n i B reda n × p, redoslijed matrice proizvoda bit će m × p. Na primjer, pretpostavimo da imate matricu A koja sadrži dva retka (m) i tri stupca (n) i matricu B koja sadrži tri retka (n) i dva stupca (p). Rezultirajuća matrica sastojat će se od dva retka i dva stupca:

Množite dvije matrice pomoću točkastog produkta. Da biste dobili vrijednost prvog elementa rezultantne matrice, pomnožite i zbrojite elemente prvog retka prve matrice i prvog retka druge matrice element po element kao:

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

Slično, za drugi element, pomnožite prvi redak prve matrice i drugi stupac druge matrice kao:

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

Za treći element, pomnožite drugi redak prve matrice i prvi stupac druge matrice kao:

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

Za četvrti element, pomnožite drugi redak prve matrice i drugi stupac druge matrice kao:

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

Dakle, rezultantna matrica je:

Možete istražiti i izgraditi različite programe za različite operacije na matricama kao što su:

  • zbrajanje i oduzimanje dviju matrica
  • pronalaženje transponiranja matrice
  • provjera jesu li dvije matrice identične

Algoritam za množenje dviju matrica

Slijedite ovaj algoritam za izradu programa za množenje bilo koje dvije matrice:

  1. Započnite program.
  2. Unesite retke i stupce prve matrice.
  3. Unesite retke i stupce druge matrice.
  4. Ako su matrice nekompatibilne za množenje, ispišite pogrešku i izađite.
  5. Definirajte matricu i unesite brojeve u prvu matricu.
  6. Definirajte drugu matricu i unesite broj u drugu matricu.
  7. Definirajte matricu za pohranjivanje rezultata množenja dviju matrica.
  8. Postavite petlju za ponavljanje preko retka prve matrice.
  9. Postavite unutarnju petlju za iteraciju preko stupca druge matrice.
  10. Postavite drugu unutarnju petlju za iteraciju preko stupca prve matrice.
  11. Pomnožite i zbrojite elemente pomoću formule mul[i][j] += m1[i][k] * m2[k][j] i pohraniti rezultat množenja u rezultantnu matricu.
  12. Prikažite rezultantnu matricu.
  13. Izađite iz programa.

Kako izvesti matrično množenje koristeći C

Cijeli izvorni kod za množenje matrice pomoću C-a je prisutan ovdje GitHub spremište i besplatan je za korištenje.

Uvezite biblioteku stdio za unos brojeva i prikaz izlaza u skladu s tim. Izjavite glavni i tražite od korisnika da unese broj stupaca i broj redaka za obje matrice pomoću ispis() funkcija.

Koristiti scanf() funkcija za primanje unosa. %d je specifikator decimalnog formata koji osigurava da program čita unos kao broj.

#uključiti
#uključiti

intglavni()
{
int rl, r2, cl, c2;

printf("Unesite broj redaka za prva matrica:\n");
skenirati("%d", &r1);

printf("Unesite broj stupaca za prva matrica:\n");
skenirati("%d", &c1);

printf("Unesite broj redaka za druga matrica:\n");
skenirati("%d", &r2);

printf("Unesite broj stupaca za druga matrica:\n");
skenirati("%d", &c2);

Provjerite je li moguće množenje matrice. Ako broj stupaca prve matrice nije jednak broju redaka druge matrice, prikazati grešku i izaći.

if (c1 != r2) {
printf("Matrice se ne mogu međusobno množiti");
Izlaz(-1);
}

Ako je sve u redu, definirajte dva višedimenzionalna niza, m1 i m2, veličine koju je naveo korisnik. Zamolite korisnika da unese elemente obiju matrica jedan po jedan. Koristite ugniježđeni za petlja za uzimanje ulaza i za red i za stupac matrice. Vanjska for petlja iterira po redovima matrice, a unutarnja petlja po stupcu matrice.

intm1[r1][c1], m2[r2][c2];
printf("Unesite elemente prve matrice\n");

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

printf("Unesite elemente druge matrice\n");

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

Definirajte treću matricu, mul, reda r1 * c2 za pohranjivanje rezultata. Koristite ugniježđeni za petlja za izvođenje množenja. Najudaljenija for petlja iterira preko redaka, sljedeća unutarnja petlja iterira preko stupaca, a najunutarnja izvodi množenje. Koristite formulu mul[i][j] += m1[i][k] * m2[k][j] za množenje elemenata matrice.

Formula koristi skraćeni operator += dodati više[i][j] na izračunati izraz i pohranite ga. Ne zaboravite inicijalizirati rezultat na nulu prije dodavanja.

intmul[r1][c2];

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

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

Prikažite umnoženu matricu pomoću ugniježđene for petlje koja ponavlja retke i stupce dobivenih matrica. Upotrijebite znak novog retka (\n) za prikaz svakog retka u zasebnom retku. Vratite 0 za izlaz iz glavne funkcije i programa.

printf("Umnožena matrica je: \n");

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

printf("\n");
}

povratak0;
}

Izlaz programa množenja matrica

Trebali biste vidjeti nešto poput sljedećeg izlaza kada pokrenete program množenja matrice:

Ako unesete nevažeći unos, množenje matrice neće uspjeti i vidjet ćete nešto poput ovoga:

Matrice imaju mnoge namjene

Razna područja koriste matrice poput znanosti, trgovine, ekonomije, geologije, robotike i animacije. U matematici ćete uglavnom koristiti matrice za rješavanje linearnih jednadžbi i predstavljanje transformacija kao što su rotacija ili translacija. Matrice mogu izračunati količinu refleksije i refrakcije, kao i riješiti jednadžbe AC ​​mreže u električnim krugovima.

Osim za obrazovne aplikacije, matrice možete koristiti za analizu anketnih podataka, glasačkih podataka, izračunavanje popisa stavki i drugih skupova podataka.