Matricos atlieka gyvybiškai svarbų vaidmenį daugelyje skirtingų sričių, įskaitant kompiuterinę grafiką, kriptografiją ir belaidį ryšį. Matrica yra stačiakampis skaičių masyvas, išdėstytas eilėmis ir stulpeliais, naudojamas matematiniam objektui ar jo savybei pavaizduoti.
Viena iš operacijų, kurias jums gali tekti atlikti, yra matricos daugyba. Tai naudojama daugelyje sričių, pavyzdžiui, aerodinamikos skaičiavimai, signalų apdorojimas, vaizdo apdorojimas ir seisminė analizė. Bet kaip tiksliai padauginti matricas?
Kaip padauginti dvi matricas
Jūs pateikiate matricos tvarką kaip eilučių skaičiaus (m) ir stulpelių skaičiaus (n) sandaugą. Norint padauginti dvi matricas, pirmosios matricos stulpelių skaičius turi būti lygus antrosios matricos eilučių skaičiui.
Jei turite dvi matricas, matricą A, eilės m × n, ir B eilės n × p, sandaugos matricos tvarka bus m × p. Pavyzdžiui, tarkime, kad turite matricą A, kurią sudaro dvi eilutės (m) ir trys stulpeliai (n), ir matrica B, kurią sudaro trys eilutės (n) ir du stulpeliai (p). Gautą matricą sudarys dvi eilutės ir du stulpeliai:
Dvi matricas padauginate naudodami taškinę sandaugą. Norėdami gauti gautos matricos pirmojo elemento reikšmę, padauginkite ir sudėkite pirmosios matricos pirmosios eilutės elementus ir antrosios matricos elemento pirmosios eilutės elementus taip:
(1, 2, 3) • (7, 9, 11) = 1×7 + 2×9 + 3×11 = 58
Panašiai, antrojo elemento atveju padauginkite pirmąją pirmosios matricos eilutę ir antrąjį antrosios matricos stulpelį taip:
(1, 2, 3) • (8, 10, 12) = 1×8 + 2×10 + 3×12 = 64
Trečiajam elementui padauginkite pirmosios matricos antrąją eilutę ir pirmąjį antrosios matricos stulpelį taip:
(4, 5, 6) • (7, 9, 11) = 4×7 + 5×9 + 6×11 = 139
Ketvirtajam elementui padauginkite pirmosios matricos antrąją eilutę ir antrąjį antrosios matricos stulpelį taip:
(4, 5, 6) • (8, 10, 12) = 4×8 + 5×10 + 6×12 = 154
Taigi gauta matrica yra tokia:
Galite tyrinėti ir kurti įvairias programas įvairioms matricų operacijoms, pavyzdžiui:
- sudėjus ir atimant dvi matricas
- matricos transponavimo radimas
- patikrinti, ar dvi matricos yra identiškos
Algoritmas padauginti dvi matricas
Vykdykite šį algoritmą, kad sukurtumėte bet kurių dviejų matricų dauginimo programą:
- Pradėkite programą.
- Įveskite pirmosios matricos eilutes ir stulpelius.
- Įveskite antrosios matricos eilutes ir stulpelius.
- Jei matricos nesuderinamos daugybai, išspausdinkite klaidą ir išeikite.
- Apibrėžkite matricą ir įveskite skaičius į pirmąją matricą.
- Apibrėžkite kitą matricą ir įveskite skaičių antroje matricoje.
- Apibrėžkite matricą, kurioje saugomas dviejų matricų daugybos rezultatas.
- Nustatykite kilpą, kad ji kartotųsi per pirmosios matricos eilutę.
- Nustatykite vidinę kilpą, kad kartotumėte antrosios matricos stulpelį.
- Nustatykite kitą vidinę kilpą, kad ji kartotųsi per pirmosios matricos stulpelį.
- Padauginkite ir pridėkite elementus naudodami formulę mul[i][j] += m1[i][k] * m2[k][j] ir išsaugokite daugybos rezultatą gautoje matricoje.
- Parodykite gautą matricą.
- Išeikite iš programos.
Kaip atlikti matricos dauginimą naudojant C
Čia yra visas matricos daugybos naudojant C šaltinio kodas GitHub saugykla ir yra nemokama naudoti.
Importuokite stdio biblioteką, kad įvestumėte skaičius ir atitinkamai parodytumėte išvestį. Paskelbti pagrindinis funkciją ir paprašykite vartotojo įvesti abiejų matricų stulpelių ir eilučių skaičių naudodami spausdinti () funkcija.
Naudoti scanf() funkcija gauti įvestį. %d yra dešimtainio formato specifikacija, užtikrinanti, kad programa nuskaito įvestį kaip skaičių.
#įtraukti
#įtrauktitarptpagrindinis()
{
tarpt r1, r2, c1, c2;
printf(„Įveskite eilučių skaičių dėl pirmoji matrica:\n");
scanf(„%d“, &r1);
printf(„Įveskite stulpelių skaičių dėl pirmoji matrica:\n");
scanf(„%d“, &c1);
printf(„Įveskite eilučių skaičių dėl antroji matrica:\n");
scanf(„%d“, &r2);
printf(„Įveskite stulpelių skaičių dėl antroji matrica:\n");
scanf(„%d“, &c2);
Patikrinkite, ar įmanoma matricos daugyba. Jei pirmosios matricos stulpelių skaičius nėra lygus antrosios matricos eilučių skaičiui, parodykite klaidą ir išeikite.
if (c1 != r2) {
printf("Matricų negalima padauginti kartu");
išeiti(-1);
}
Jei viskas gerai, apibrėžkite du daugiamačius masyvus, m1 ir m2, tokio dydžio, kokį nurodė naudotojas. Paprašykite vartotojo po vieną įvesti abiejų matricų elementus. Naudokite įdėtą dėl kilpa, kad gautumėte įvestį ir matricos eilutei, ir stulpeliui. Išorinė for kilpa kartojasi per matricos eilutes, o vidinė – per matricos stulpelį.
tarptm1[r1][c1], m2[r2][c2];
printf("Įveskite pirmosios matricos elementus\n");dėl (tarpt aš = 0; i < r1; i++) {
dėl (tarpt j = 0; j < c1; j++) {
scanf("%d", &m1[i][j]);
}
}
printf("Įveskite antrosios matricos elementus\n");
dėl (tarpt aš = 0; i < r2; i++) {
dėl (tarpt j = 0; j < c2; j++) {
scanf("%d",&m2[i][j]);
}
}
Apibrėžkite trečiąją matricą, mul, eilės r1 * c2 rezultatui išsaugoti. Naudokite įdėtą dėl kilpa daugybai atlikti. Tolimiausias ciklas kartojasi per eilutes, kitas vidinis ciklas kartojasi per stulpelius, o vidinis atlieka dauginimą. Naudokite formulę mul[i][j] += m1[i][k] * m2[k][j] padauginti matricos elementus.
Formulė naudoja santrumpos operatorių += Pridėti mul[i][j] į apskaičiuotą išraišką ir išsaugokite ją. Prieš pridėdami rezultatą, nepamirškite inicijuoti rezultato iki nulio.
tarptmul[r1][c2];dėl (tarpt aš = 0; i < r1; i++) {
dėl (tarpt j = 0; j < c2; j++) {
mul[i][j] = 0;
dėl (tarpt k = 0; k < c1; k++) {
mul[i][j] += m1[i][k] * m2[k][j];
}
}
}
Pateikite padaugintą matricą naudodami įdėtą kilpą, kuri kartojasi per gautų matricų eilutes ir stulpelius. Naudokite naujos eilutės simbolį (\n), kad kiekviena eilutė būtų rodoma atskiroje eilutėje. Grąžinkite 0 norėdami išeiti iš pagrindinės funkcijos ir programos.
printf("Padauginta matrica yra: \n"); dėl (tarpt aš = 0; i < r1; i++) {
dėl (tarpt j = 0; j < c2; j++) {
printf(„%d\t“, mul[i][j]);
}
printf(„\n“);
}
grąžinti0;
}
Matricos daugybos programos išvestis
Vykdydami matricos daugybos programą turėtumėte pamatyti kažką panašaus į šią išvestį:
Jei įvesite neteisingą įvestį, matricos daugyba nepavyks ir pamatysite kažką panašaus:
Matricos turi daug naudos
Įvairiose srityse naudojamos tokios matricos kaip mokslas, komercija, ekonomika, geologija, robotika ir animacija. Matematikoje daugiausia naudosite matricas, kad išspręstumėte tiesines lygtis ir pateiktumėte transformacijas, tokias kaip sukimas ar vertimas. Matricos gali apskaičiuoti atspindžio ir lūžio dydį, taip pat išspręsti kintamosios srovės tinklo lygtis elektros grandinėse.
Be švietimo programų, galite naudoti matricas apklausos duomenims, balsavimo duomenims, skaičiuoti elementų sąrašus ir kitus duomenų rinkinius.