Matricām ir būtiska loma daudzās dažādās jomās, tostarp datorgrafikā, kriptogrāfijā un bezvadu komunikācijā. Matrica ir taisnstūrveida skaitļu masīvs, kas sakārtots rindās un kolonnās un ko izmanto, lai attēlotu matemātisko objektu vai tā īpašību.
Viena no operācijām, kas jums varētu būt jāveic ar tiem, ir matricas reizināšana. To var izmantot daudzās jomās, piemēram, aerodinamikas aprēķinos, signālu apstrādē, attēlu apstrādē un seismiskajā analīzē. Bet kā tieši jūs reizināt matricas?
Kā reizināt divas matricas
Jūs attēlojat matricas secību kā rindu skaita (m) un kolonnu skaita (n) reizinājumu. Lai reizinātu divas matricas, pirmās matricas kolonnu skaitam jābūt vienādam ar otrās matricas rindām.
Ja jums ir divas matricas, matrica A ar secību m × n un B ar secību n × p, reizinājuma matricas secība būs m × p. Piemēram, pieņemsim, ka jums ir matrica A, kurā ir divas rindas (m) un trīs kolonnas (n), un matrica B, kas satur trīs rindas (n) un divas kolonnas (p). Iegūtā matrica sastāvēs no divām rindām un divām kolonnām:
Jūs reiziniet divas matricas, izmantojot punktu reizinājumu. Lai iegūtu iegūtās matricas pirmā elementa vērtību, reiziniet un saskaitiet ar elementu pirmās matricas pirmās rindas un otrās matricas elementa pirmās rindas elementus šādi:
(1, 2, 3) • (7, 9, 11) = 1×7 + 2×9 + 3×11 = 58
Līdzīgi otrajam elementam reiziniet pirmās matricas pirmo rindu un otrās matricas otro kolonnu šādi:
(1, 2, 3) • (8, 10, 12) = 1×8 + 2×10 + 3×12 = 64
Trešajam elementam reiziniet pirmās matricas otro rindu un otrās matricas pirmo kolonnu šādi:
(4, 5, 6) • (7, 9, 11) = 4×7 + 5×9 + 6×11 = 139
Ceturtajam elementam reiziniet pirmās matricas otro rindu un otrās matricas otro kolonnu šādi:
(4, 5, 6) • (8, 10, 12) = 4×8 + 5×10 + 6×12 = 154
Tādējādi iegūtā matrica ir:
Varat izpētīt un izveidot dažādas programmas dažādām darbībām ar matricām, piemēram:
- divu matricu saskaitīšana un atņemšana
- matricas transponēšanas atrašana
- pārbaudot, vai divas matricas ir identiskas
Algoritms divu matricu reizināšanai
Izpildiet šo algoritmu, lai izveidotu programmu jebkuru divu matricu reizināšanai:
- Sāciet programmu.
- Ievadiet pirmās matricas rindas un kolonnas.
- Ievadiet otrās matricas rindas un kolonnas.
- Ja matricas nav saderīgas reizināšanai, izdrukājiet kļūdu un izejiet.
- Definējiet matricu un ievadiet skaitļus pirmajā matricā.
- Definējiet citu matricu un ievadiet skaitli otrajā matricā.
- Definējiet matricu, lai saglabātu divu matricu reizināšanas rezultātu.
- Iestatiet cilpu, lai atkārtotu pirmās matricas rindu.
- Iestatiet iekšējo cilpu, lai atkārtotu otrās matricas kolonnu.
- Iestatiet citu iekšējo cilpu, kas atkārtojas pār pirmās matricas kolonnu.
- Reiziniet un pievienojiet elementus, izmantojot formulu mul[i][j] += m1[i][k] * m2[k][j] un saglabā reizināšanas rezultātu iegūtajā matricā.
- Parādiet iegūto matricu.
- Izejiet no programmas.
Kā veikt matricas reizināšanu, izmantojot C
Šeit ir viss avota kods matricas reizināšanai, izmantojot C GitHub repozitorijs un to var izmantot bez maksas.
Importējiet stdio bibliotēku, lai ievadītu skaitļus un attiecīgi parādītu izvadi. Pasludināt galvenais funkciju un lūdziet lietotājam ievadīt kolonnu skaitu un rindu skaitu abām matricām, izmantojot drukāt () funkciju.
Izmantojiet scanf() funkcija, lai saņemtu ievadi. %d ir decimālā formāta norādītājs, kas nodrošina, ka programma nolasa ievadi kā skaitli.
#ietver
#ietverstarptgalvenais()
{
starpt r1, r2, c1, c2;
printf("Ievadiet rindu skaitu priekš pirmā matrica:\n");
scanf("%d", &r1);
printf("Ievadiet kolonnu skaitu priekš pirmā matrica:\n");
scanf("%d", &c1);
printf("Ievadiet rindu skaitu priekš otrā matrica:\n");
scanf("%d", &r2);
printf("Ievadiet kolonnu skaitu priekš otrā matrica:\n");
scanf("%d", &c2);
Pārbaudiet, vai ir iespējama matricas reizināšana. Ja pirmās matricas kolonnu skaits nav vienāds ar otrās matricas rindu skaitu, parādiet kļūdu un izejiet.
if (c1 != r2) {
printf("Matricas nevar reizināt kopā");
Izeja(-1);
}
Ja viss ir kārtībā, definējiet divus daudzdimensiju masīvus, m1 un m2, ar lietotāja norādīto izmēru. Lūdziet lietotājam pa vienam ievadīt abu matricu elementus. Izmantojiet ligzdotu priekš cilpa, lai ņemtu ievadi gan matricas rindai, gan kolonnai. Ārējā for cilpa atkārtojas pāri matricas rindām un iekšējā cilpa pāri matricas kolonnai.
starptm1[r1][c1], m2[r2][c2];
printf("Ievadiet pirmās matricas elementus\n");priekš (starpt i = 0; i < r1; i++) {
priekš (starpt j = 0; j < c1; j++) {
scanf("%d", &m1[i][j]);
}
}
printf("Ievadiet otrās matricas elementus\n");
priekš (starpt i = 0; i < r2; i++) {
priekš (starpt j = 0; j < c2; j++) {
scanf("%d",&m2[i][j]);
}
}
Definējiet trešo matricu, mul, secībā r1 * c2, lai saglabātu rezultātu. Izmantojiet ligzdotu priekš cilpa, lai veiktu reizināšanu. Vistālākā for cilpa atkārtojas pa rindām, nākamā iekšējā cilpa atkārtojas pāri kolonnām, bet iekšējais veic reizināšanu. Izmantojiet formulu mul[i][j] += m1[i][k] * m2[k][j] lai reizinātu matricas elementus.
Formulā tiek izmantots saīsinājuma operators += Pievienot mul[i][j] uz aprēķināto izteiksmi un saglabājiet to. Neaizmirstiet inicializēt rezultātu uz nulli pirms pievienošanas tam.
starptmul[r1][c2];priekš (starpt i = 0; i < r1; i++) {
priekš (starpt j = 0; j < c2; j++) {
mul[i][j] = 0;
priekš (starpt k = 0; k < c1; k++) {
mul[i][j] += m1[i][k] * m2[k][j];
}
}
}
Parādiet reizināto matricu, izmantojot ligzdotu cilpu, kas atkārtojas pār iegūto matricu rindām un kolonnām. Izmantojiet jaunās rindas rakstzīmi (\n), lai parādītu katru rindu atsevišķā rindā. Atgrieziet 0, lai izietu no galvenās funkcijas un programmas.
printf("Reizinātā matrica ir: \n"); priekš (starpt i = 0; i < r1; i++) {
priekš (starpt j = 0; j < c2; j++) {
printf("%d\t", mul[i][j]);
}
printf("\n");
}
atgriezties0;
}
Matricas reizināšanas programmas izvade
Palaižot matricas reizināšanas programmu, jums vajadzētu redzēt kaut ko līdzīgu šādai izvadei:
Ja ievadāt nederīgu ievadi, matricas reizināšana neizdodas un jūs redzēsit kaut ko līdzīgu:
Matricām ir daudz lietojumu
Dažādās jomās tiek izmantotas tādas matricas kā zinātne, tirdzniecība, ekonomika, ģeoloģija, robotika un animācija. Jūs galvenokārt izmantosit matricas matemātikā, lai atrisinātu lineāros vienādojumus un attēlotu tādas transformācijas kā rotācija vai tulkošana. Matricas var aprēķināt atstarošanas un laušanas apjomu, kā arī atrisināt maiņstrāvas tīkla vienādojumus elektriskajās ķēdēs.
Papildus izglītības lietojumprogrammām varat izmantot matricas aptaujas datu, balsošanas datu, vienumu sarakstu un citu datu kopu analīzei.