Bralci, kot ste vi, pomagajo podpirati MUO. Ko opravite nakup prek povezav na našem spletnem mestu, lahko zaslužimo partnersko provizijo. Preberi več.

Matrike igrajo ključno vlogo na številnih različnih področjih, vključno z računalniško grafiko, kriptografijo in brezžično komunikacijo. Matrika je pravokotna matrika števil, razporejenih v vrsticah in stolpcih, ki se uporabljajo za predstavitev matematičnega predmeta ali njegove lastnosti.

Ena od operacij, ki jo boste morda morali izvesti na njih, je matrično množenje. To se uporablja na številnih področjih, kot so aerodinamični izračuni, obdelava signalov, obdelava slik in seizmična analiza. Toda kako natančno pomnožite matrike?

Kako pomnožiti dve matriki

Vrstni red matrike predstavljate kot produkt števila vrstic (m) in števila stolpcev (n). Za množenje dveh matrik mora biti število stolpcev prve matrike enako vrsticam druge matrike.

Če imate dve matriki, matriko A reda m × n in B reda n × p, bo vrstni red produktne matrike m × p. Recimo, da imate matriko A, ki vsebuje dve vrstici (m) in tri stolpce (n), ter matriko B, ki vsebuje tri vrstice (n) in dva stolpca (p). Nastala matrika bo sestavljena iz dveh vrstic in dveh stolpcev:

instagram viewer

Dve matriki pomnožite s pikčastim produktom. Če želite dobiti vrednost prvega elementa nastale matrike, pomnožite in seštejte elemente prve vrstice prve matrike in prve vrstice druge matrike element za elementom kot:

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

Podobno za drugi element pomnožite prvo vrstico prve matrike in drugi stolpec druge matrike kot:

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

Za tretji element pomnožite drugo vrstico prve matrike in prvi stolpec druge matrike kot:

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

Za četrti element pomnožite drugo vrstico prve matrike in drugi stolpec druge matrike kot:

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

Tako je dobljena matrika:

Raziskujete in sestavljate lahko različne programe za različne operacije na matricah, kot so:

  • seštevanje in odštevanje dveh matrik
  • iskanje transponiranja matrike
  • preverjanje, ali sta dve matriki enaki

Algoritem za množenje dveh matrik

Sledite temu algoritmu za izdelavo programa za množenje poljubnih dveh matrik:

  1. Zaženite program.
  2. Vnesite vrstice in stolpce prve matrike.
  3. Vnesite vrstice in stolpce druge matrike.
  4. Če matrike niso združljive za množenje, natisnite napako in zapustite.
  5. Določite matriko in vnesite številke v prvo matriko.
  6. Določite drugo matriko in vnesite številko v drugo matriko.
  7. Definirajte matriko za shranjevanje rezultata množenja obeh matrik.
  8. Nastavite zanko za ponavljanje vrstice prve matrike.
  9. Nastavite notranjo zanko za ponavljanje po stolpcu druge matrike.
  10. Nastavite drugo notranjo zanko za ponavljanje po stolpcu prve matrike.
  11. Pomnožite in seštejte elemente s formulo mul[i][j] += m1[i][k] * m2[k][j] in shrani rezultat množenja v dobljeno matriko.
  12. Prikaži dobljeno matriko.
  13. Zapustite program.

Kako izvesti matrično množenje s C

Celotna izvorna koda za matrično množenje z uporabo C je prisotna v tem Repozitorij GitHub in je brezplačen za uporabo.

Uvozite knjižnico stdio za vnos številk in ustrezno prikažete izhod. Razglasite glavni funkcijo in prosite uporabnika, da vnese število stolpcev in število vrstic za obe matriki z uporabo natisni() funkcijo.

Uporabi scanf() funkcija za sprejemanje vnosa. %d je specifikator decimalne oblike, ki zagotavlja, da program prebere vnos kot število.

#vključujejo
#vključujejo

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

printf("Vnesite število vrstic za prva matrika:\n");
scanf("%d", &r1);

printf("Vnesite število stolpcev za prva matrika:\n");
scanf("%d", &c1);

printf("Vnesite število vrstic za druga matrika:\n");
scanf("%d", &r2);

printf("Vnesite število stolpcev za druga matrika:\n");
scanf("%d", &c2);

Preverite, ali je matrično množenje možno. Če število stolpcev prve matrike ni enako številu vrstic druge matrike, prikaže napako in zapusti.

if (c1 != r2) {
printf("Matrik ni mogoče množiti skupaj");
izhod(-1);
}

Če je vse v redu, definirajte dve večdimenzionalni matriki, m1 in m2, v velikosti, ki jo je navedel uporabnik. Prosite uporabnika, da enega za drugim vnese elemente obeh matrik. Uporabite ugnezdeni za zanko, da sprejme vhod za vrstico in stolpec matrike. Zunanja zanka for iterira po vrsticah matrike, notranja zanka pa po stolpcu matrike.

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

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

printf("Vnesite elemente druge matrike\n");

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

Definirajte tretjo matriko, mul, reda r1 * c2 za shranjevanje rezultata. Uporabite ugnezdeni za zanko za izvedbo množenja. Najbolj zunanja zanka for ponavlja po vrsticah, naslednja notranja zanka ponavlja po stolpcih, najbolj notranja pa izvaja množenje. Uporabite formulo mul[i][j] += m1[i][k] * m2[k][j] za množenje elementov matrike.

Formula uporablja skrajšan operator += dodati mul[i][j] v izračunani izraz in ga shranite. Ne pozabite inicializirati rezultata na nič, preden mu dodate.

intmul[r1][c2];

za (int jaz = 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 pomnoženo matriko z uporabo ugnezdene zanke for, ki ponavlja vrstice in stolpce nastale matrike. Za prikaz vsake vrstice v ločeni vrstici uporabite znak za novo vrstico (\n). Vrnite 0 za izhod iz glavne funkcije in programa.

printf("Pomnožena matrika je: \n");

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

printf("\n");
}

vrnitev0;
}

Izhod programa za množenje matrik

Ko zaženete program za množenje matrik, bi morali videti nekaj podobnega temu izhodu:

Če vnesete neveljaven vnos, množenje matrike ne uspe in videli boste nekaj takega:

Matrice imajo veliko uporab

Različna področja uporabljajo matrike, kot so znanost, trgovina, ekonomija, geologija, robotika in animacija. V matematiki boste večinoma uporabljali matrike za reševanje linearnih enačb in predstavljanje transformacij, kot sta rotacija ali translacija. Matrike lahko izračunajo količino odboja in loma ter rešijo enačbe omrežja AC v električnih vezjih.

Poleg izobraževalnih aplikacij lahko uporabite matrike za analizo anketnih podatkov, podatkov o glasovanju, izračun seznamov postavk in drugih nizov podatkov.