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:
- Započnite program.
- Unesite retke i stupce prve matrice.
- Unesite retke i stupce druge matrice.
- Ako su matrice nekompatibilne za množenje, ispišite pogrešku i izađite.
- Definirajte matricu i unesite brojeve u prvu matricu.
- Definirajte drugu matricu i unesite broj u drugu matricu.
- Definirajte matricu za pohranjivanje rezultata množenja dviju matrica.
- Postavite petlju za ponavljanje preko retka prve matrice.
- Postavite unutarnju petlju za iteraciju preko stupca druge matrice.
- Postavite drugu unutarnju petlju za iteraciju preko stupca prve matrice.
- 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.
- Prikažite rezultantnu matricu.
- 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čitiintglavni()
{
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.