Množenje kompleksnog vektora matricom. Množenje matrice Osnovna svojstva matričnog proizvoda

Dakle, u prethodnoj lekciji pogledali smo pravila za sabiranje i oduzimanje matrica. Ovo su tako jednostavne operacije da ih većina učenika razumije bukvalno odmah.

Međutim, radujete se rano. Freebie je gotov - idemo na množenje. Odmah ću vas upozoriti: množenje dvije matrice uopće nije množenje brojeva u ćelijama s istim koordinatama, kao što mislite. Ovdje je sve mnogo zabavnije. I moraćemo da počnemo sa preliminarnim definicijama.

Podudarne matrice

Jedan od najvažnije karakteristike matrica je njegova veličina. Već smo sto puta govorili o tome: pisanje $A=\left[ m\times n \right]$ znači da matrica ima tačno $m$ redova i $n$ kolona. Također smo već raspravljali o tome kako ne brkati redove sa kolonama. Nešto drugo je sada važno.

Definicija. Matrice oblika $A=\left[ m\times n \right]$ i $B=\left[ n\times k \right]$, u kojima se broj stupaca u prvoj matrici poklapa sa brojem redova u drugom, nazivaju se konzistentnim.

Još jednom: broj stupaca u prvoj matrici jednak je broju redova u drugoj! Odavde dobijamo dva zaključka odjednom:

  1. Redoslijed matrica nam je važan. Na primjer, matrice $A=\left[ 3\times 2 \right]$ i $B=\left[ 2\times 5 \right]$ su konzistentne (2 kolone u prvoj matrici i 2 reda u drugoj) , ali obrnuto — matrice $B=\left[ 2\times 5 \right]$ i $A=\left[ 3\times 2 \right]$ više nisu konzistentne (5 stupaca u prvoj matrici nisu 3 reda u drugom).
  2. Konzistentnost se lako može provjeriti zapisivanjem svih dimenzija jednu za drugom. Koristeći primjer iz prethodnog pasusa: “3 2 2 5” - u sredini su identični brojevi, tako da su matrice konzistentne. Ali “2 5 3 2” nisu konzistentni, jer postoje različiti brojevi u sredini.

Osim toga, Kapetan Očevidnost čini se da nagovještava da su kvadratne matrice iste veličine $\left[ n\puta n \right]$ uvijek konzistentne.

U matematici, kada je redoslijed navođenja objekata važan (na primjer, u definiciji o kojoj smo gore govorili, redoslijed matrica je važan), često govorimo o uređenim parovima. Upoznali smo ih još u školi: mislim da je neozbiljno da koordinate $\left(1;0 \right)$ i $\left(0;1 \right)$ definiraju različite točke na ravni.

Dakle: koordinate su također uređeni parovi koji se sastoje od brojeva. Ali ništa vas ne sprečava da napravite takav par od matrica. Tada možemo reći: "Uređeni par matrica $\left(A;B \right)$ je konzistentan ako je broj stupaca u prvoj matrici isti kao broj redova u drugoj."

Pa, pa šta?

Definicija množenja

Razmotrite dvije konzistentne matrice: $A=\left[ m\times n \right]$ i $B=\left[ n\times k \right]$. I za njih definiramo operaciju množenja.

Definicija. Proizvod dvije podudarne matrice $A=\left[ m\times n \right]$ i $B=\left[ n\times k \right]$ je nova matrica $C=\left[ m\times k \ desno] $, čiji se elementi izračunavaju pomoću formule:

\[\begin(align) & ((c)_(i;j))=((a)_(i;1))\cdot ((b)_(1;j))+((a)_ (i;2))\cdot ((b)_(2;j))+\ldots +((a)_(i;n))\cdot ((b)_(n;j))= \\ & =\sum\limits_(t=1)^(n)(((a)_(i;t))\cdot ((b)_(t;j))) \end(align)\]

Takav proizvod se označava na standardni način: $C=A\cdot B$.

Oni koji prvi put vide ovu definiciju odmah imaju dva pitanja:

  1. Kakva je ovo žestoka igra?
  2. Zašto je tako teško?

Pa, prvo prvo. Počnimo s prvim pitanjem. Šta znače svi ovi indeksi? I kako ne pogriješiti kada radite sa stvarnim matricama?

Prije svega, napominjemo da je duga linija za izračunavanje $((c)_(i;j))$ (posebno sam stavio tačku i zarez između indeksa kako se ne bi zbunio, ali nema potrebe da ih stavljate generalno - i ja sam se umorio od upisivanja formule u definiciju) zapravo se svodi na jednostavno pravilo:

  1. Uzmite $i$-ti red u prvoj matrici;
  2. Uzmite $j$-tu kolonu u drugoj matrici;
  3. Dobijamo dva niza brojeva. Elemente ovih nizova množimo istim brojevima, a zatim dodamo rezultirajuće proizvode.

Ovaj proces je lako razumjeti sa slike:


Šema za množenje dvije matrice

Još jednom: popravljamo red $i$ u prvoj matrici, stupac $j$ u drugoj matrici, množimo elemente sa istim brojevima, a zatim dodajemo rezultirajuće proizvode - dobijamo $((c)_(ij))$ . I tako dalje za sve $1\le i\le m$ i $1\le j\le k$. One. Ukupno će biti $m\puta k$ takvih "perverzija".

Zapravo, već smo se susreli sa množenjem matrice u školskom programu, samo u znatno smanjenom obliku. Neka su dati vektori:

\[\begin(align) & \vec(a)=\left(((x)_(a));((y)_(a));((z)_(a)) \right); \\ & \overrightarrow(b)=\left(((x)_(b));((y)_(b));((z)_(b)) \desno). \\ \end(poravnati)\]

Tada će njihov skalarni proizvod biti tačno zbir parnih proizvoda:

\[\overrightarrow(a)\times \overrightarrow(b)=((x)_(a))\cdot ((x)_(b))+((y)_(a))\cdot ((y )_(b))+((z)_(a))\cdot ((z)_(b))\]

U osnovi, kada je drveće bilo zelenije, a nebo svjetlije, jednostavno smo pomnožili vektor reda $\overrightarrow(a)$ vektorom kolone $\overrightarrow(b)$.

Danas se ništa nije promijenilo. Samo što sada ima više ovih vektora redova i kolona.

Ali dosta teorije! Pogledajmo stvarne primjere. I počnimo s najjednostavnijim slučajem - kvadratne matrice.

Množenje kvadratne matrice

Zadatak 1. Uradite množenje:

\[\left[ \begin(array)(*(35)(r)) 1 & 2 \\ -3 & 4 \\\end(array) \right]\cdot \left[ \begin(array)(* (35)(r)) -2 & 4 \\ 3 & 1 \\\kraj (niz) \desno]\]

Rješenje. Dakle, imamo dvije matrice: $A=\left[ 2\times 2 \right]$ i $B=\left[ 2\times 2 \right]$. Jasno je da su konzistentne (kvadratne matrice iste veličine su uvijek konzistentne). Stoga vršimo množenje:

\[\begin(align) & \left[ \begin(array)(*(35)(r)) 1 & 2 \\ -3 & 4 \\\end(niz) \right]\cdot \left[ \ begin(niz)(*(35)(r)) -2 & 4 \\ 3 & 1 \\\end(niz) \right]=\left[ \begin(niz)(*(35)(r)) 1\cdot \left(-2 \right)+2\cdot 3 & 1\cdot 4+2\cdot 1 \\ -3\cdot \left(-2 \right)+4\cdot 3 & -3\cdot 4+4\cdot 1 \\\end(niz) \desno]= \\ & =\left[ \begin(niz)(*(35)(r)) 4 & 6 \\ 18 & -8 \\\ kraj (niz)\desno]. \end(poravnati)\]

To je sve!

Odgovor: $\left[ \begin(array)(*(35)(r))4 & 6 \\ 18 & -8 \\\end(array) \right]$.

Zadatak 2. Uradite množenje:

\[\left[ \begin(matrica) 1 & 3 \\ 2 & 6 \\\end(matrica) \right]\cdot \left[ \begin(array)(*(35)(r))9 & 6 \\ -3 & -2 \\\kraj (niz) \desno]\]

Rješenje. Opet, konzistentne matrice, tako da izvodimo sljedeće akcije:\[\]

\[\begin(poravnati) & \left[ \begin(matrica) 1 & 3 \\ 2 & 6 \\\end(matrica) \desno]\cdot \left[ \begin(array)(*(35)( ) r)) 9 & 6 \\ -3 & -2 \\\end(niz) \desno]=\left[ \begin(niz)(*(35)(r)) 1\cdot 9+3\cdot \ lijevo(-3 \desno) & 1\cdot 6+3\cdot \left(-2 \desno) \\ 2\cdot 9+6\cdot \left(-3 \desno) & 2\cdot 6+6 \ cdot \left(-2 \desno) \\\end(niz) \right]= \\ & =\left[ \begin(matrica) 0 & 0 \\ 0 & 0 \\\end(matrica) \right ] . \end(poravnati)\]

Kao što vidite, rezultat je matrica ispunjena nulama

Odgovor: $\left[ \begin(matrix) 0 & 0 \\ 0 & 0 \\\end(matrix) \right]$.

Iz gornjih primjera je očigledno da množenje matrice nije tako komplikovana operacija. Najmanje za kvadratne matrice 2 sa 2.

U procesu proračuna sastavili smo međumatricu u kojoj smo direktno opisali koji su brojevi uključeni u određenu ćeliju. To je upravo ono što treba činiti kada se rješavaju stvarni problemi.

Osnovna svojstva matričnog proizvoda

Ukratko. Množenje matrice:

  1. Nekomutativno: $A\cdot B\ne B\cdot A$ u opštem slučaju. Postoje, naravno, posebne matrice za koje je jednakost $A\cdot B=B\cdot A$ (na primjer, ako je $B=E$ matrica identiteta), ali u velikoj većini slučajeva to ne funkcionira ;
  2. Asocijativno: $\left(A\cdot B \desno)\cdot C=A\cdot \left(B\cdot C \right)$. Ovdje nema opcija: stoji u blizini matrice se mogu množiti bez brige o tome šta je lijevo i desno od ove dvije matrice.
  3. Distributivno: $A\cdot \left(B+C \right)=A\cdot B+A\cdot C$ i $\left(A+B \right)\cdot C=A\cdot C+B\cdot C $ (zbog nekomutativnosti proizvoda potrebno je posebno specificirati desnu i lijevu distributivnost.

A sada - sve je isto, ali detaljnije.

Množenje matrice je na mnogo načina slično klasičnom množenju brojeva. Ali postoje razlike, od kojih je najvažnija ta Množenje matrice je, općenito govoreći, nekomutativno.

Pogledajmo ponovo matrice iz Zadatka 1. Već znamo njihov direktni proizvod:

\[\left[ \begin(array)(*(35)(r)) 1 & 2 \\ -3 & 4 \\\end(array) \right]\cdot \left[ \begin(array)(* (35)(r)) -2 & 4 \\ 3 & 1 \\\end(niz) \desno]=\left[ \begin(niz)(*(35)(r))4 & 6 \\ 18 & -8 \\\kraj (niz) \desno]\]

Ali ako zamijenimo matrice, dobićemo potpuno drugačiji rezultat:

\[\left[ \begin(niz)(*(35)(r)) -2 & 4 \\ 3 & 1 \\\end(niz) \desno]\cdot \left[ \begin(niz)(* (35)(r)) 1 & 2 \\ -3 & 4 \\\end(niz) \right]=\left[ \begin(matrica) -14 & 4 \\ 0 & 10 \\\end(matrica )\desno]\]

Ispostavilo se da je $A\cdot B\ne B\cdot A$. Osim toga, operacija množenja je definirana samo za konzistentne matrice $A=\left[ m\times n \right]$ i $B=\left[ n\times k \right]$, ali niko nije garantirao da će ostat će dosljedni ako se zamjene. Na primjer, matrice $\left[ 2\times 3 \right]$ i $\left[ 3\times 5 \right]$ su prilično konzistentne u navedenom redoslijedu, ali iste matrice $\left[ 3\times 5 \desno] $ i $\left[ 2\puta 3 \right]$ upisani obrnutim redosledom, više nisu dogovoreni. Tužan.:(

Među kvadratnim matricama date veličine $n$ uvijek će biti onih koje daju isti rezultat i kada se množe u direktnom i obrnutom redoslijedu. Kako opisati sve takve matrice (i koliko ih uopće ima) tema je za posebnu lekciju. O tome danas nećemo. :)

Međutim, množenje matrice je asocijativno:

\[\left(A\cdot B \desno)\cdot C=A\cdot \left(B\cdot C \desno)\]

Stoga, kada trebate pomnožiti nekoliko matrica u nizu odjednom, uopće nije potrebno to učiniti odmah: sasvim je moguće da neke susjedne matrice, kada se pomnože, daju zanimljiv rezultat. Na primjer, nulta matrica, kao u problemu 2 koji je gore razmotren.

U stvarnim problemima najčešće moramo množiti kvadratne matrice veličine $\left[ n\puta n \right]$. Skup svih takvih matrica je označen sa $((M)^(n))$ (tj., unosi $A=\left[ n\times n \right]$ i \ znače istu stvar), i to će obavezno sadrže matricu $E$, koja se naziva matrica identiteta.

Definicija. Matrica identiteta veličine $n$ je matrica $E$ takva da za bilo koju kvadratnu matricu $A=\left[ n\times n \right]$ vrijedi jednakost:

Takva matrica uvijek izgleda isto: na njenoj glavnoj dijagonali su jedinice, a u svim ostalim ćelijama nule.

\[\begin(align) & A\cdot \left(B+C \desno)=A\cdot B+A\cdot C; \\ & \left(A+B \desno)\cdot C=A\cdot C+B\cdot C. \\ \end(align)\]

Drugim riječima, ako trebate pomnožiti jednu matricu sa zbirom dvije druge, možete je pomnožiti sa svakom od ove „druge dvije“ i zatim sabrati rezultate. U praksi obično moramo da izvedemo suprotnu operaciju: uočimo istu matricu, izvadimo je iz zagrada, izvršimo sabiranje i time si pojednostavimo život. :)

Napomena: da bismo opisali distributivnost, morali smo napisati dvije formule: gdje je zbir u drugom faktoru i gdje je zbir u prvom. To se događa upravo zato što množenje matrice nije komutativno (i općenito, u nekomutativnoj algebri ima puno zabavnih stvari koje vam ne padaju na pamet kada radite s običnim brojevima). A ako, na primjer, trebate zapisati ovo svojstvo na ispitu, onda obavezno napišite obje formule, inače bi se nastavnik mogao malo naljutiti.

Dobro, sve su to bile bajke o kvadratnim matricama. Šta je sa pravougaonim?

Slučaj pravokutnih matrica

Ali ništa - sve je isto kao i kod kockastih.

Zadatak 3. Uradite množenje:

\[\left[ \begin(matrica) \begin(matrica) 5 \\ 2 \\ 3 \\\end(matrica) & \begin(matrica) 4 \\ 5 \\ 1 \\\end(matrica) \ \\end(matrica) \desno]\cdot \left[ \begin(niz)(*(35)(r)) -2 & 5 \\ 3 & 4 \\\end(niz) \desno]\]

Rješenje. Imamo dvije matrice: $A=\left[ 3\times 2 \right]$ i $B=\left[ 2\times 2 \right]$. Zapišimo redom brojeve koji označavaju veličine:

Kao što vidite, dva centralna broja se poklapaju. To znači da su matrice konzistentne i da se mogu množiti. Štaviše, na izlazu dobijamo matricu $C=\left[ 3\puts 2 \right]$:

\[\begin(poravnati) & \left[ \begin(matrica) \begin(matrica) 5 \\ 2 \\ 3 \\\end(matrica) & \begin(matrica) 4 \\ 5 \\ 1 \\ \end(matrica) \\\end(matrica) \desno]\cdot \left[ \begin(niz)(*(35)(r)) -2 & 5 \\ 3 & 4 \\\end(niz) \right]=\left[ \begin(array)(*(35)(r)) 5\cdot \left(-2 \right)+4\cdot 3 & 5\cdot 5+4\cdot 4 \\ 2 \cdot \left(-2 \right)+5\cdot 3 & 2\cdot 5+5\cdot 4 \\ 3\cdot \left(-2 \right)+1\cdot 3 & 3\cdot 5+1 \cdot 4 \\\end(niz) \right]= \\ & =\left[ \begin(niz)(*(35)(r)) 2 & 41 \\ 11 & 30 \\ -3 & 19 \ \\end(niz) \desno]. \end(poravnati)\]

Sve je jasno: konačna matrica ima 3 reda i 2 stupca. Sasvim $=\lijevo[ 3\put 2 \desno]$.

Odgovor: $\left[ \begin(array)(*(35)(r)) \begin(array)(*(35)(r)) 2 \\ 11 \\ -3 \\\end(array) & \begin(matrica) 41 \\ 30 \\ 19 \\\end(matrica) \\\end(niz) \right]$.

Pogledajmo sada jedan od najboljih zadataka za obuku za one koji tek počinju raditi s matricama. U njemu ne treba samo pomnožiti neke dvije tablete, već prvo odrediti: da li je takvo množenje dozvoljeno?

Zadatak 4. Pronađite sve moguće parne proizvode matrica:

\\]; $B=\left[ \begin(matrica) \begin(matrica) 0 \\ 2 \\ 0 \\ 4 \\\end(matrica) & \begin(matrica) 1 \\ 0 \\ 3 \\ 0 \ \\end(matrica) \\\end(matrix) \right]$; $C=\left[ \begin(matrix)0 & 1 \\ 1 & 0 \\\end(matrix) \right]$.

Rješenje. Prvo, zapišimo veličine matrica:

\;\ B=\lijevo[ 4\puta 2 \desno];\ C=\lijevo[ 2\puta 2 \desno]\]

Nalazimo da se matrica $A$ može uskladiti samo sa matricom $B$, pošto je broj stupaca $A$ 4, a samo $B$ ima ovaj broj redova. Stoga možemo pronaći proizvod:

\\cdot \left[ \begin(niz)(*(35)(r)) 0 & 1 \\ 2 & 0 \\ 0 & 3 \\ 4 & 0 \\\end(niz) \right]=\ lijevo[ \begin(niz)(*(35)(r))-10 & 7 \\ 10 & 7 \\\end(niz) \desno]\]

Predlažem čitaocu da samostalno obavi međukorake. Samo ću napomenuti da je bolje unaprijed odrediti veličinu rezultirajuće matrice, čak i prije bilo kakvih izračuna:

\\cdot \lijevo[ 4\puta 2 \desno]=\lijevo[ 2\puta 2 \desno]\]

Drugim riječima, jednostavno uklanjamo “tranzitne” koeficijente koji su osiguravali konzistentnost matrica.

Koje su druge opcije moguće? Naravno, može se naći $B\cdot A$, pošto je $B=\left[ 4\times 2 \right]$, $A=\left[ 2\times 4 \right]$, tako da je uređeni par $\ left(B ;A \right)$ je konzistentan, a dimenzija proizvoda će biti:

\\cdot \lijevo[ 2\puta 4 \desno]=\lijevo[ 4\puta 4 \desno]\]

Ukratko, izlaz će biti matrica $\left[ 4\times 4 \right]$, čiji se koeficijenti mogu lako izračunati:

\\cdot \left[ \begin(niz)(*(35)(r)) 1 & -1 & 2 & -2 \\ 1 & 1 & 2 & 2 \\\end(niz) \right]=\ lijevo[ \begin(array)(*(35)(r))1 & 1 & 2 & 2 \\ 2 & -2 & 4 & -4 \\ 3 & 3 & 6 & 6 \\ 4 & -4 & 8 & -8 \\\kraj (niz) \desno]\]

Očigledno, možete se složiti i oko $C\cdot A$ i $B\cdot C$ - i to je to. Stoga jednostavno zapisujemo rezultirajuće proizvode:

Bilo je lako. :)

Odgovor: $AB=\left[ \begin(array)(*(35)(r)) -10 & 7 \\ 10 & 7 \\\end(array) \right]$; $BA=\left[ \begin(array)(*(35)(r)) 1 & 1 & 2 & 2 \\ 2 & -2 & 4 & -4 \\ 3 & 3 & 6 & 6 \\ 4 & -4 & 8 & -8 \\\end(niz) \desno]$; $CA=\left[ \begin(array)(*(35)(r)) 1 & 1 & 2 & 2 \\ 1 & -1 & 2 & -2 \\\end(array) \right]$; $BC=\left[ \begin(niz)(*(35)(r))1 & 0 \\ 0 & 2 \\ 3 & 0 \\ 0 & 4 \\\end(niz) \right]$.

Općenito, toplo preporučujem da sami obavite ovaj zadatak. I još jedan sličan zadatak koji je u domaćem zadatku. Ove naizgled jednostavne misli pomoći će vam da vježbate sve ključne faze množenja matrice.

Ali priča se tu ne završava. Pređimo na specijalne slučajeve množenja. :)

Vektori redova i vektori kolona

Jedna od najčešćih matričnih operacija je množenje matricom koja ima jedan red ili jedan stupac.

Definicija. Vektor kolone je matrica veličine $\left[ m\times 1 \right]$, tj. koji se sastoji od nekoliko redova i samo jedne kolone.

Vektor reda je matrica veličine $\left[ 1\puts n \right]$, tj. koji se sastoji od jednog reda i nekoliko kolona.

U stvari, već smo se susreli sa ovim objektima. Na primjer, običan trodimenzionalni vektor iz stereometrije $\overrightarrow(a)=\left(x;y;z \right)$ nije ništa drugo do vektor reda. Sa teorijske tačke gledišta, gotovo da nema razlike između redova i kolona. Samo trebate biti oprezni kada koordinirate sa okolnim matricama množenja.

Zadatak 5. Uradite množenje:

\[\left[ \begin(niz)(*(35)(r)) 2 & -1 & 3 \\ 4 & 2 & 0 \\ -1 & 1 & 1 \\\end(niz) \desno] \cdot \left[ \begin(niz)(*(35)(r)) 1 \\ 2 \\ -1 \\\end(niz) \desno]\]

Rješenje. Ovdje imamo proizvod usklađenih matrica: $\left[ 3\times 3 \right]\cdot \left[ 3\times 1 \right]=\left[ 3\times 1 \right]$. Hajde da pronađemo ovaj komad:

\[\left[ \begin(niz)(*(35)(r)) 2 & -1 & 3 \\ 4 & 2 & 0 \\ -1 & 1 & 1 \\\end(niz) \desno] \cdot \left[ \begin(niz)(*(35)(r)) 1 \\ 2 \\ -1 \\\end(niz) \right]=\left[ \begin(niz)(*(35 )(r)) 2\cdot 1+\left(-1 \desno)\cdot 2+3\cdot \left(-1 \right) \\ 4\cdot 1+2\cdot 2+0\cdot 2 \ \ -1\cdot 1+1\cdot 2+1\cdot \left(-1 \right) \\\end(niz) \right]=\left[ \begin(array)(*(35)(r) ) -3 \\ 8 \\ 0 \\\kraj (niz) \desno]\]

Odgovor: $\left[ \begin(array)(*(35)(r))-3 \\ 8 \\ 0 \\\end(array) \right]$.

Zadatak 6. Uradite množenje:

\[\left[ \begin(niz)(*(35)(r)) 1 & 2 & -3 \\\end(niz) \right]\cdot \left[ \begin(array)(*(35) (r)) 3 & 1 & -1 \\ 4 & -1 & 3 \\ 2 & 6 & 0 \\\end(niz) \desno]\]

Rješenje. Opet je sve dogovoreno: $\left[ 1\times 3 \right]\cdot \left[ 3\times 3 \right]=\left[ 1\times 3 \right]$. Računamo proizvod:

\[\left[ \begin(niz)(*(35)(r)) 1 & 2 & -3 \\\end(niz) \right]\cdot \left[ \begin(array)(*(35) (r)) 3 & 1 & -1 \\ 4 & -1 & 3 \\ 2 & 6 & 0 \\\end(niz) \right]=\left[ \begin(niz)(*(35)( ) r))5 & -19 & 5 \\\end(niz) \desno]\]

Odgovor: $\left[ \begin(matrix) 5 & -19 & 5 \\\end(matrix) \right]$.

Kao što vidite, kada množite vektor reda i vektor kolone sa kvadratna matrica uvijek dobijemo red ili stupac iste veličine kao izlaz. Ova činjenica ima mnogo primjena - od rješavanja linearnih jednačina do svih vrsta koordinatnih transformacija (koje se u konačnici svode i na sisteme jednačina, ali da ne pričamo o tužnim stvarima).

Mislim da je ovde sve bilo očigledno. Pređimo na završni dio današnje lekcije.

Eksponencijacija matrice

Među svim operacijama množenja, eksponencijacija zaslužuje posebnu pažnju - to je kada isti objekt množimo sam po sebi nekoliko puta. Matrice nisu izuzetak, one se takođe mogu podići na različite stepene.

Ovakvi radovi se uvek dogovaraju:

\\cdot \lijevo[ n\puta n \desno]=\lijevo[ n\puta n \desno]\]

I oni su označeni na potpuno isti način kao i obični stepeni:

\[\begin(align) & A\cdot A=((A)^(2)); \\ & A\cdot A\cdot A=((A)^(3)); \\ & \underbrace(A\cdot A\cdot \ldots \cdot A)_(n)=((A)^(n)). \\ \end(poravnati)\]

Na prvi pogled, sve je jednostavno. Pogledajmo kako to izgleda u praksi:

Zadatak 7. Podignite matricu na naznačenu snagu:

$((\left[ \begin(matrica) 1 & 1 \\ 0 & 1 \\\end(matrix) \right])^(3))$

Rješenje. Pa dobro, hajde da gradimo. Prvo kvadrirajmo:

\[\begin(poravnaj) & ((\left[ \begin(matrica) 1 & 1 \\ 0 & 1 \\\end(matrica) \desno])^(2))=\left[ \begin(matrica ) 1 & 1 \\ 0 & 1 \\\end(matrica) \desno]\cdot \left[ \begin(matrica) 1 & 1 \\ 0 & 1 \\\end(matrica) \right]= \\ & =\left[ \begin(array)(*(35)(r)) 1\cdot 1+1\cdot 0 & 1\cdot 1+1\cdot 1 \\ 0\cdot 1+1\cdot 0 & 0\cdot 1+1\cdot 1 \\\end(niz) \desno]= \\ & =\left[ \begin(array)(*(35)(r)) 1 & 2 \\ 0 & 1 \ \\end(niz) \desno] \end(poravnati)\]

\[\begin(poravnati) & ((\left[ \begin(matrica) 1 & 1 \\ 0 & 1 \\\end(matrica) \desno])^(3))=((\left[ \begin (matrica) 1 & 1 \\ 0 & 1 \\\end(matrica) \desno])^(3))\cdot \left[ \begin(matrica) 1 & 1 \\ 0 & 1 \\\end( matrica) \desno]= \\ & =\left[ \begin(niz)(*(35)(r)) 1 & 2 \\ 0 & 1 \\\end(niz) \desno]\cdot \left[ \begin(matrica) 1 & 1 \\ 0 & 1 \\\end(matrica) \desno]= \\ & =\left[ \begin(array)(*(35)(r)) 1 & 3 \\ 0 & 1 \\\kraj (niz) \desno] \end(poravnanje)\]

To je sve.:)

Odgovor: $\left[ \begin(matrix)1 & 3 \\ 0 & 1 \\\end(matrix) \right]$.

Problem 8. Podignite matricu na naznačenu snagu:

\[((\left[ \begin(matrica) 1 & 1 \\ 0 & 1 \\\end(matrica) \right])^(10))\]

Rješenje. Samo nemojte sad plakati zbog činjenice da je „diploma prevelika“, „svet nije pravedan“ i „nastavnici su potpuno izgubili svoje obale“. Zapravo je lako:

\[\begin(poravnati) & ((\left[ \begin(matrica) 1 & 1 \\ 0 & 1 \\\end(matrica) \desno])^(10))=((\left[ \begin (matrica) 1 & 1 \\ 0 & 1 \\\end(matrica) \desno])^(3))\cdot ((\left[ \begin(matrica) 1 & 1 \\ 0 & 1 \\\ kraj(matrica) \desno])^(3))\cdot ((\lijevo[ \početak(matrica) 1 & 1 \\ 0 & 1 \\\kraj(matrica) \desno])^(3))\ cdot \left[ \begin(matrica) 1 & 1 \\ 0 & 1 \\\end(matrica) \right]= \\ & =\left(\left[ \begin(matrica) 1 & 3 \\ 0 & 1 \\\end(matrica) \desno]\cdot \left[ \begin(matrica) 1 & 3 \\ 0 & 1 \\\end(matrica) \desno] \desno)\cdot \left(\left[ \begin(matrica) 1 & 3 \\ 0 & 1 \\\end(matrica) \desno]\cdot \left[ \begin(matrica) 1 & 1 \\ 0 & 1 \\\end(matrica) \right ] \desno)= \\ & =\left[ \begin(matrica) 1 & 6 \\ 0 & 1 \\\end(matrica) \desno]\cdot \left[ \begin(matrica) 1 & 4 \\ 0 & 1 \\\end(matrica) \desno]= \\ & =\left[ \begin(matrica) 1 & 10 \\ 0 & 1 \\\end(matrica) \right] \end(align)\ ]

Primijetite da smo u drugom redu koristili asocijativnost množenja. Zapravo, koristili smo ga u prethodnom zadatku, ali je tamo bilo implicitno.

Odgovor: $\left[ \begin(matrix) 1 & 10 \\ 0 & 1 \\\end(matrix) \right]$.

Kao što vidite, nema ništa komplikovano u podizanju matrice na stepen. Poslednji primer može se rezimirati:

\[((\left[ \begin(matrica) 1 & 1 \\ 0 & 1 \\\end(matrix) \right])^(n))=\left[ \begin(array)(*(35) (r)) 1 & n \\ 0 & 1 \\\kraj (niz) \desno]\]

Ovu činjenicu je lako dokazati matematičkom indukcijom ili direktnim množenjem. Međutim, nije uvijek moguće uhvatiti takve obrasce prilikom podizanja na stepen. Stoga, budite oprezni: često se množenje nekoliko matrica „nasumično“ pokaže lakšim i bržim od traženja neke vrste obrazaca.

Općenito, ne tražite više značenje tamo gdje ga nema. U zaključku, razmotrimo eksponencijaciju veće matrice - koliko i $\left[ 3\puts 3 \right]$.

Problem 9. Podignite matricu na naznačenu snagu:

\[((\left[ \begin(matrica) 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\\end(matrica) \right])^(3))\]

Rješenje. Nemojmo tražiti uzorke. Radimo unapred:

\[((\left[ \begin(matrica) 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\\end(matrica) \desno])^(3))=(( \left[ \begin(matrica) 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\\end(matrica) \desno])^(2))\cdot \left[ \begin (matrica)0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\\end(matrica) \desno]\]

Prvo, kvadrirajmo ovu matricu:

\[\begin(poravnati) & ((\left[ \begin(matrica) 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\\end(matrica) \desno])^( 2))=\left[ \begin(matrica) 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\\end(matrica) \right]\cdot \left[ \begin(matrix ) 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\\end(matrica) \right]= \\ & =\left[ \begin(array)(*(35)(r )) 2 & 1 & 1 \\ 1 & 2 & 1 \\ 1 & 1 & 2 \\\end(niz) \desno] \end(align)\]

A sada ga kockicemo:

\[\begin(poravnati) & ((\left[ \begin(matrica) 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\\end(matrica) \desno])^( 3))=\left[ \begin(niz)(*(35)(r)) 2 & 1 & 1 \\ 1 & 2 & 1 \\ 1 & 1 & 2 \\\end(niz) \desno] \cdot \left[ \begin(matrica) 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\\end(matrica) \right]= \\ & =\left[ \begin( niz)(*(35)(r)) 2 & 3 & 3 \\ 3 & 2 & 3 \\ 3 & 3 & 2 \\\end(niz) \desno] \end(poravnati)\]

To je sve. Problem je riješen.

Odgovor: $\left[ \begin(matrix) 2 & 3 & 3 \\ 3 & 2 & 3 \\ 3 & 3 & 2 \\\end(matrix) \right]$.

Kao što vidite, obim proračuna je postao veći, ali značenje se uopće nije promijenilo. :)

Ovim je lekcija završena. Sljedeći put ćemo razmotriti inverznu operaciju: koristeći postojeći proizvod tražit ćemo originalne faktore.

Kao što ste verovatno već pretpostavili, pričaćemo o inverznoj matrici i metodama za njeno pronalaženje.

Predavanje 6. Paralelni numerički algoritmi za rješavanje tipičnih problema računske matematike: množenje matrica.

Množenje matrice vektorom. Postizanje najviših mogućih performansi. Iskorištavanje paralelizma srednjeg nivoa. Organizacija paralelnog računanja pri p = n. Upotreba ograničenog skupa procesora. Množenje matrice. Makrooperativna analiza algoritama za rješavanje problema. Organizacija paralelizma zasnovana na razmjeni podataka.

Množenje matrice vektorom

Problem množenja matrice vektorom definiran je relacijama

Dakle, dobijanje rezultujućeg vektora uključuje ponavljanje sličnih operacija množenja redova matrice i vektora. Dobivanje svake takve operacije uključuje množenje elemenata reda matrice i vektora po elementima i naknadno zbrajanje rezultirajućih proizvoda. Ukupan broj potrebnih skalarnih operacija procjenjuje se količinom

Kao što slijedi iz radnji koje se izvode prilikom množenja matrice i vektora, paralelne metode rješenja problema se mogu dobiti na osnovu algoritama paralelnog sumiranja (vidi paragraf 4.1). U ovom odeljku, analiza metoda paralelizacije biće dopunjena razmatranjem pitanja organizovanja paralelnog računarstva u zavisnosti od broja procesora dostupnih za upotrebu. Osim toga, na primjeru problema množenja matrice vektorom, skrenuće se pažnja na potrebu odabira najpogodnije topologije računarskog sistema (postojeći kanali komunikacije između procesora) kako bi se smanjili troškovi organizacije međuprocesorske interakcije.

Postizanje najviših mogućih performansi ()

Analizirajmo informacijske zavisnosti u algoritmu množenja matrice-vektora za odabir mogući načini paralelizacija. Kao što vidite, operacije množenja pojedinačnih redova matrice vektorom koje se obavljaju tokom izračunavanja su nezavisne i mogu se izvoditi paralelno;



Množenje svakog reda vektorom uključuje nezavisne operacije množenja po elementima i može se izvoditi paralelno;

Sumiranje rezultujućih proizvoda u svakoj operaciji množenja reda matrice vektorom može se izvesti upotrebom jedne od prethodno razmatranih varijanti algoritma sumiranja (sekvencijalni algoritam, konvencionalne i modifikovane kaskadne šeme).

Dakle, maksimalni potreban broj procesora je određen vrijednosti

Upotreba takvog broja procesora može se predstaviti na sljedeći način. Mnogi procesori su podijeljeni u grupe

,

od kojih svaki predstavlja skup procesora za izvođenje operacije množenja pojedinačnog reda matrice vektorom. Na početku proračuna, element reda matrice i odgovarajući vektorski element se šalju svakom procesoru u grupi. Zatim svaki procesor izvodi operaciju množenja. Naknadni proračuni se zatim izvode korištenjem šeme kaskadne sumacije. Za ilustraciju na sl. 6.1 prikazuje računsku šemu za procesore grupe sa matričnom dimenzijom .

Rice. 6.1. Računska shema za množenje reda matrice vektorom

Vrijeme izvršenja paralelnog algoritma pri korištenju procesora određeno je vremenom izvršenja operacije paralelnog množenja i vremenom izvršenja kaskadnog kola

Kao rezultat toga, pokazatelji efikasnosti algoritma su određeni sljedećim odnosima:

, ,

Za problem množenja matrice-vektora koji se razmatra, najpogodnije topologije su strukture koje pružaju brz transfer podaci (putevi jedinične dužine) u kaskadnom krugu sumiranja (vidi sliku 4.5). Takve topologije su strukture sa kompletan sistem veze ( kompletan graf) I hiperkocka. Druge topologije dovode do povećanog vremena komunikacije zbog dužih ruta prijenosa podataka. Dakle, sa linearnim redosledom procesora sa sistemom veza samo sa najbližim susedima sa leve i desne strane ( vladar ili prsten) za kaskadnu šemu, dužina putanje prenosa svake primljene parcijalne sume u iteraciji , , jednaka je . Ako pretpostavimo da prijenos podataka duž dužine putanje u topologijama s linearnom strukturom zahtijeva operacije prijenosa podataka, ukupan broj paralelnih operacija (ukupno trajanje staza) prijenosa podataka određuje se vrijednošću

(isključujući prijenos podataka za početno učitavanje procesora).

Primena računarskog sistema sa pravougaonom topologijom dvodimenzionalna rešetka veličina dovodi do jednostavnog i jasnog tumačenja proračuna koji se izvode (struktura mreže odgovara strukturi obrađenih podataka). Za takvu topologiju, najpoželjnije je postaviti redove matrice duž horizontalnih mreža; u ovom slučaju elementi vektora moraju biti raspoređeni duž vertikala računarskog sistema. Proračuni sa ovim rasporedom podataka mogu se izvoditi paralelno duž linija mreže; kao rezultat, ukupan broj prijenosa podataka odgovara rezultatima za ravnalo().

Komunikacijske radnje koje se izvode prilikom rješavanja datog zadatka sastoje se od prijenosa podataka između parova MCS procesora. Detaljna analiza trajanja realizacije takvih operacija je sprovedena u stavu 3.3.

4. Preporuke za implementaciju paralelnog algoritma. Prilikom implementacije paralelnog algoritma preporučljivo je istaknuti početnu fazu učitavanja korištenih procesora početnim podacima. Najjednostavnije, takva inicijalizacija je obezbeđena topologijom računarskog sistema sa topologijom u obliku kompletan graf(preuzimanje je omogućeno pomoću jedne operacije paralelnog prijenosa podataka). Prilikom organiziranja više procesora u obrascu hiperkocka Može biti korisno imati kontrolu na dva nivoa nad procesom pokretanja, u kojoj centralni kontrolni procesor osigurava da se redovi matrice i vektora šalju kontrolnim procesorima procesorskih grupa, koji zauzvrat šalju elemente matrice i vektorske redove izvršnim procesorima. Za topologije u obliku vladari ili prstenovi zahtijeva sekvencijalne operacije prijenosa podataka sa sukcesivno opadajućom količinom podataka prenesenih od do elemenata.

Korištenje paralelizma srednjeg nivoa()

1. Odabir metode paralelnog računanja. Kada se raspoloživi broj korištenih procesora () smanji, uobičajena shema kaskadne sumacije pri izvođenju operacija množenja redova matrice s vektorom postaje neprimjenjiva. Da bismo pojednostavili prezentaciju materijala, pretpostavimo i koristimo modificiranu kaskadnu shemu. Početno opterećenje svakog procesora u ovom slučaju se povećava i procesor se učitava () dijelovima redova matrice i vektora. Vrijeme izvršenja operacije množenja matrice vektorom može se procijeniti kao

Kada se koristi broj procesora potreban za implementaciju modificirane kaskadne sheme, tj. na , ovaj izraz daje procjenu vremena izvršenja (na ).

Kada je broj procesora , kada je vrijeme izvršenja algoritma procijenjeno kao , može se predložiti nova šema za paralelno izvođenje proračuna, u kojoj za svaku iteraciju kaskadnog zbrajanja, skupovi procesora koji se ne preklapaju. Ovim pristupom ispostavlja se da je raspoloživi broj procesora dovoljan za implementaciju samo jedne operacije množenja reda matrice i vektora. Osim toga, prilikom izvođenja sljedeće iteracije kaskadnog zbrajanja, procesori odgovorni za izvršavanje svih prethodnih iteracija su slobodni. Međutim, ovaj nedostatak predloženog pristupa može se pretvoriti u prednost korištenjem neaktivnih procesora za obradu sljedećih redova matrice. Kao rezultat, može se formirati sljedeća shema konvejer izvođenje matrice i vektorskog množenja:

Skup procesora je podijeljen u disjunktne grupe procesora

,

u ovom slučaju, grupa , , sastoji se od procesora i koristi se za izvođenje iteracija kaskadnog algoritma (grupa se koristi za implementaciju množenja po elementima); ukupan broj procesora;

Inicijalizacija proračuna se sastoji od učitavanja element po element procesora grupe sa vrednostima 1 reda matrice i vektora; nakon početnog učitavanja izvodi se paralelna operacija množenja po elementima i naknadna implementacija uobičajenog kaskadnog kruga sumiranja;

Prilikom izvođenja proračuna, svaki put nakon završetka operacije množenja po elementima, procesori grupe se učitavaju elementima sljedećeg reda matrice i pokreće se proces proračuna za novoučitane podatke.

Kao rezultat primjene opisanog algoritma, mnogi procesori implementiraju cevovod za izvođenje operacije množenja reda matrice vektorom. Na takvom transporteru može istovremeno biti nekoliko odvojenih redova matrice u različitim fazama obrade. Tako, na primjer, nakon elementarnog množenja elemenata prvog reda i vektora, procesori grupe će izvesti prvu iteraciju kaskadnog algoritma za prvi red matrice, a procesori grupe će izvršiti po elementima množenje vrijednosti drugog reda matrice, itd. Za ilustraciju na sl. 6.2 prikazuje situaciju procesa proračuna nakon 2 iteracije cjevovoda na .

Rice. 6.2. Stanje cjevovoda za operaciju množenja reda matrice vektorom nakon završetka 2 iteracije

2. Evaluacija indikatora performansi algoritma. Množenje prvog reda vektorom prema kaskadnoj šemi će biti završeno kao i obično nakon izvršenja () paralelnih operacija. Za ostale redove - u skladu sa shemom cjevovoda organiziranja proračuna - pojavljivanje rezultata množenja svakog sljedećeg reda će se pojaviti nakon završetka svake sljedeće iteracije cjevovoda. Kao rezultat, ukupno vrijeme izvršenja operacije množenja matrice-vektora može se izraziti kao

Ova procjena je nešto duže od vremena izvršavanja paralelnog algoritma opisanog u prethodnom paragrafu (), međutim, novopredložena metoda zahtijeva manje prenesenih podataka (vektor se šalje samo jednom). Osim toga, korištenje sheme cjevovoda dovodi do ranijeg pojavljivanja nekih rezultata proračuna (koji mogu biti korisni u brojnim situacijama obrade podataka).

Kao rezultat toga, pokazatelji efikasnosti algoritma su određeni sljedećim relacijama:

3. Odabir topologije računarskog sistema. Odgovarajuća topologija računarskog sistema u potpunosti je određena računskim krugom - ovo je kompletno binarno stablo visina Broj prijenosa podataka sa takvom mrežnom topologijom određen je ukupnim brojem iteracija koje izvodi cevovod, tj.

.

Inicijalizacija proračuna počinje sa listovima stabla, rezultati sumiranja se akumuliraju u korijenskom procesoru.

Analiza složenosti izvedenih komunikacionih radnji za računarske sisteme sa drugim međuprocesorskim komunikacionim topologijama treba da se sprovede kao samostalan zadatak (videti i tačku 3.4).

Organizacija paralelnog računarstva u

1. Odabir metode paralelnog računanja. Kada se koriste procesori za množenje matrice vektorom, može se koristiti paralelni algoritam množenja red po red koji je prethodno razmotren u priručniku, u kojem su redovi matrice raspoređeni među procesorima red po red i svaki procesor implementira operacija množenja bilo kojeg pojedinačnog reda matrice vektorom. Drugi mogući način da se organizuje paralelno računarstvo može biti izgradnja cjevovodno kolo za operaciju množenja reda matrice vektorom(skalarni proizvod vektora) raspoređivanjem svih raspoloživih procesora u linearni niz ( vladari).

Takva shema proračuna može se definirati na sljedeći način. Zamislimo skup procesora kao linearni niz (vidi sliku 4.7):

Svaki procesor, , koristi se za množenje elemenata matričnog stupca i vektorskog elementa. Proračuni koji se vrše na svakom procesoru su sljedeći:

Zahtijeva se sljedeći element kolone matrice;

Elementi i se množe;

Zahtijeva se rezultat proračuna prethodnog procesora;

Vrijednosti se dodaju;

Rezultirajući rezultat se šalje sljedećem procesoru.

Rice. 6.3. Stanje linearnog cjevovoda za operaciju množenja reda matrice vektorom nakon izvođenja dvije iteracije

Prilikom inicijalizacije opisane šeme morate izvršiti niz dodatnih radnji:

Prilikom izvođenja prve iteracije, svaki procesor dodatno traži element vektora;

Za sinhronizaciju proračuna (prilikom izvođenja sljedeće iteracije kola, traži se rezultat izračuna prethodnog procesora) u fazi inicijalizacije, procesor, , izvodi () petlju čekanja.

Osim toga, za homogenost opisanog kola za prvi procesor, koji nema prethodni procesor, preporučljivo je uvesti praznu operaciju sabiranja ( ).

Za ilustraciju na sl. Slika 6.3 prikazuje stanje procesa izračunavanja nakon druge iteracije cjevovoda na .

2. Evaluacija indikatora performansi algoritma. Množenje prvog reda vektorom prema opisanoj šemi cjevovoda će biti završeno nakon izvršenja () paralelnih operacija. Rezultat množenja sljedećih redova će se pojaviti nakon završetka svake sljedeće iteracije cjevovoda (podsjetimo da iteracija svakog procesora uključuje izvršenje operacija množenja i sabiranja). Kao rezultat, ukupno vrijeme izvršenja operacije množenja matrice-vektora može se izraziti kao:

Ova procjena je također veća od minimalnog mogućeg vremena izvršenja paralelnog algoritma na . Korisnost upotrebe cevovodne računarske šeme je, kao što je navedeno u prethodnom paragrafu, u smanjenju količine prenetih podataka i u ranijem pojavljivanju nekih rezultata proračuna.

Indikatori efikasnosti ove računske šeme određeni su relacijama:

, ,

3. Odabir topologije računarskog sistema. Potrebna topologija računarskog sistema za izvršavanje opisanog algoritma jedinstveno je određena predloženom računarskom šemom - ovo je linearno uređen skup procesora ( vladar).

Korištenje ograničenog skupa procesora ()

1. Odabir metode paralelnog računanja. Svođenjem broja procesora na vrijednost, paralelna računska shema za množenje matrice-vektora može se dobiti prilagođavanjem algoritma množenja red po red. U ovom slučaju, kaskadno kolo za sumiranje rezultata množenja po elementima degeneriše se i operacija množenja reda matrice vektorom se u potpunosti izvodi na jednom procesoru. Računska shema dobijena ovim pristupom može se specificirati na sljedeći način:

Vektorski i matrični redovi se šalju svakom od dostupnih procesora;

Izvođenje operacije množenja reda matrice-vektora izvodi se korištenjem konvencionalnog sekvencijalnog algoritma.

Treba napomenuti da veličina matrice ne može biti višekratnik broja procesora i tada se redovi matrice ne mogu podijeliti jednako između procesora. U ovim situacijama možete odstupiti od zahtjeva ravnomjernog učitavanja procesora i, da biste dobili jednostavniju računsku shemu, prihvatiti pravilo da se podaci stavljaju na procesore samo red po red (tj. elementi jednog reda matrice ne mogu biti podijeljen na nekoliko procesora). Nejednak broj redova dovodi do različitog računarskog opterećenja procesora; Tako će završetak proračuna (ukupno trajanje rješavanja problema) biti određen vremenom rada najopterećenijeg procesora (u ovom slučaju, dio ovog ukupnog vremena, pojedini procesori mogu biti neaktivni zbog iscrpljivanja svog udjela kalkulacija). Neravnomjerno opterećenje procesora smanjuje efikasnost korištenja MCS-a i, kao rezultat razmatranja ovog primjera, možemo zaključiti da problem balansiranja

3. Odabir topologije računarskog sistema. U skladu sa prirodom međuprocesorskih interakcija koje se obavljaju u predloženoj računarskoj šemi, organizacija procesora u obliku zvijezde(vidi sliku 1.1). Upravljački procesor takve topologije može se koristiti za učitavanje računarskih procesora početnim podacima i za primanje rezultata izvršenih proračuna.

Množenje matrice

Problem množenja matrica-matrica definiran je relacijama

.

(radi jednostavnosti predstavljanja, pretpostavićemo da su pomnožene matrice i kvadratne i imaju red ).

Analogno razmatranju problema množenja matrice vektorom može se izvršiti analiza mogućih metoda za paralelno izvršavanje ovog zadatka. Ostavljajući takvu analizu za samostalno proučavanje, koristićemo primjer problema množenja matrice da pokažemo upotrebu nekoliko općih pristupa koji nam omogućavaju formiranje paralelnih metoda za rješavanje složenih problema.

U MatLab sistemu prilično je jednostavno izvoditi matematičke operacije nad matricama i vektorima. Razmotrimo prvo jednostavne operacije sabiranja i množenja matrica i vektora. Neka su data dva vektora

a = ; % vektor reda
b = ; %kolona vektor

tada se množenje ova dva vektora može zapisati na sljedeći način

c = a*b; % c=1+2+3+4+5=16
d = b*a; % d – matrica od 5x5 elemenata

Prema operacijama na vektorima, množenjem vektora reda sa vektorom kolone dobija se broj, a množenjem vektora kolone sa vektorom reda dobija se dvodimenzionalna matrica, koja je rezultat proračuna u gornjem primeru, tj.

Sabiranje i oduzimanje dva vektora zapisuje se na sljedeći način:

a1 = ;
a2 = ;
c = a1+a2; % c = ;
c = a2-a1; % c = ;

Imajte na umu da se operacije sabiranja i oduzimanja mogu izvoditi između dva vektora stupca ili dva vektora reda. U suprotnom, MatLab će prikazati poruku o grešci, jer Vektori različitih tipova se ne mogu dodavati. Ovo je slučaj sa svim nedozvoljenim aritmetičkim operacijama: ako se one ne mogu izračunati, MatLab će prijaviti grešku i program će se završiti na odgovarajućem redu.

Operacije množenja i sabiranja između matrica izvode se na sličan način:

A = ;
B = jedinice(3);
C = A+B; % zbrajanja dvije matrice iste veličine
D = A+5; % zbrajanja matrice i broja
E = A*B; % množenje matrice A sa B
F = B*A; % množenje matrice B sa A
G = 5*A; % množenje matrice brojem

Operacije izračunavanja inverzne matrice, kao i transponovanja matrica i vektora, zapisuju se na sljedeći način:

a = ; % vektor reda
b = a’; % vektor kolone formiran od
% transponovanjem vektora reda a.
A = ; % 3x3 element matrice
B = a*A; %B = – vektor reda
C = A*b; %C = – vektor kolone
D = a*A*a’; % D = 45 – broj, zbir elemenata matrice A
E = A'; % E – transponovana matrica A
F = inv(A); % F – inverzna matrica A
G = A^-1; % G – inverzna matrica A

Iz gornjeg primjera je jasno da je operacija transponiranja matrica i vektora označena simbolom ‘ (apostrof), koji se stavlja iza naziva vektora ili matrice. Izračunavanje inverza matrice može se obaviti pozivanjem funkcije inv() ili podizanjem matrice na -1 stepen. Rezultat će u oba slučaja biti isti, a napravljene su dvije metode proračuna radi lakšeg korištenja pri implementaciji različitih algoritama.

Ako je u procesu izračunavanja potrebno pomnožiti, podijeliti ili podići elemente vektora ili matrice element po element, tada se za to koriste sljedeći operatori:

.* - množenje po elementima;
./ i.\ - podjele element po element;
.^ - eksponencijacija po elementima.

Pogledajmo kako ovi operatori rade koristeći sljedeći primjer.

a = ; % vektor reda
b = ; % vektor reda
c = a.*b; %c=
A = jedinice(3); % 3x3 matrica koja se sastoji od jedinica
B = ; % 3x3 matrica
C = A.*B; % 3x3 matrica koja se sastoji od
D = A./B; % 3x3 matrica koja se sastoji od
E = A.\B; % 3x3 matrica koja se sastoji od
F = A.^2; % kvadriranje elemenata matrice A

Na kraju ovog odjeljka razmotrit ćemo nekoliko funkcija korisnih pri radu s vektorima i matricama.

Da biste pronašli maksimalnu vrijednost vektorskog elementa, koristite standardnu ​​max() funkciju, koja vraća pronađenu maksimalnu vrijednost elementa i njegovu poziciju (indeks):

a = ;
= max(a); % v = 6, i = 2;

v = max(a); % v = 6;

Gornji primjer pokazuje dva Različiti putevi pozivanje max() funkcije. U prvom slučaju određuju se i maksimalna vrijednost elementa i njegov indeks u vektoru, au drugom - samo maksimalna vrijednost elementa.

U slučaju matrica, ova funkcija određuje maksimalne vrijednosti koje stoje u stupcima, kao što je prikazano u primjeru ispod:

A = ;
= max(A); %V=,I=
V = max(A); %V=

Potpuna sintaksa funkcije max() može se pronaći upisivanjem naredbe u MatLab komandni prozor

pomoć<название функции>

Funkcija min() radi na sličan način, što određuje minimalna vrijednost element vektora ili matrice i njegov indeks.

Drugi korisna funkcija rad sa matricama i vektorima je funkcija sum() koja izračunava zbir vrijednosti vektorskih elemenata ili stupaca matrice:

a = ;
s = suma(a); % s = 3+5+4+2+1=15
A = ;
S1 = suma(A); %S1=
S2 = zbir(zbir(A)); % S2=39

Prilikom izračunavanja sume S2, zbroj vrijednosti elemenata matrice A se prvo izračunava u kolonama, a zatim u redovima. Kao rezultat, varijabla S2 sadrži zbir vrijednosti svih elemenata matrice A.

Da biste sortirali vrijednosti elemenata vektora ili matrice u rastućem ili opadajućem redoslijedu, koristite funkciju sort() kako slijedi:

a = ;

b1 = sortiranje(a); %b1=
b2 = sortiraj(a, 'spusti'); %b2=
b3 = sortiraj(a, 'uzdizanje'); %b3=

za matrice

A = ;
B1 = sortiranje(A); %B1=
B2 = sortiraj(A, 'spusti'); %B2=

U mnogim praktičnim problemima, često morate pronaći određeni element u vektoru ili matrici. Ovo se može uraditi pomoću standardna funkcija find(), koji kao argument uzima uslov prema kojem se traže potrebni elementi, na primjer:

a = ;
b1 = pronađi(a == 2); % b1 = 4 – indeks elementa 2
b2 = find(a ~= 2); % b2 = – indeksi bez 2
b3 = pronađi (a > 3); % b3 =

U datom primjeru simbol ‘==’ znači provjeru jednakosti, a simbol ‘~=’ provjerava nejednakost vrijednosti elemenata vektora a. Ovi operatori će biti detaljnije opisani u odeljku Uslovni operatori.

Još jedna korisna funkcija za rad s vektorima i matricama je funkcija mean() za izračunavanje aritmetičke sredine, koja radi na sljedeći način:

a = ;
m = srednja vrijednost (a); % m = 3
A = ;
M1 = srednja vrijednost (A); % M1 =
M2 = srednja (srednja (A)); % M2 = 4.333


Svaki vektor se može posmatrati kao matrica sa jednim stupcem ili jednim redom. Matricu sa jednim stupcem nazvaćemo vektorom kolone, a matricu jednog reda vektorom reda.

Ako je A matrica veličine m*n, tada vektor stupca b ima veličinu n, a vektor reda b ima veličinu m.

Dakle, da bismo pomnožili matricu vektorom, vektor moramo smatrati vektorom stupca. Kada se vektor množi matricom, on se mora tretirati kao vektor reda.

Množenje matrice

kompleksnom vektoru

Dobijamo rezultat

Kao što vidite, sa nepromijenjenom vektorskom dimenzijom, možemo imati dva rješenja.

Skrećem vam pažnju na činjenicu da su matrice u prvoj i drugoj verziji, unatoč istim vrijednostima, potpuno različite (imaju različite dimenzije)

U prvom slučaju vektor se smatra kolonom i tada je neophodan pomnožite matricu vektorom, au drugom slučaju imamo vektor reda i onda imamo proizvod vektora i matrice.

Ovaj bot također množi vektore i matrice koje imaju kompleksne vrijednosti. Na osnovu potpunijeg kalkulatora: množenje matrice sa kompleksnim vrijednostima na mreži

Svojstva množenja matrice-vektora

Matrix

Vector column

Vektor reda

proizvoljan broj

1. Proizvod matrice na zbir vektora stupaca jednak je zbroju proizvoda matrice po svakom od vektora

2. Proizvod zbira vektora reda i matrice jednak je zbroju proizvoda vektora i matrice

3. Zajednički faktor vektora može se uzeti izvan proizvoda matrice pomoću vektora/vektora po matrici

4. Proizvod vektora reda i proizvoda matrice i vektora stupca ekvivalentan je proizvodu proizvoda vektora reda i matrice i vektora stupca.

Definicija 1

Proizvod matrice (C = AB) je operacija samo za uparene matrice A i B, u kojoj je broj stupaca matrice A jednak broju redova matrice B:

C ⏟ m × n = A ⏟ m × p × B ⏟ p × n

Primjer 1

Zadate matrice:

  • A = a (i j) dimenzija m × n;
  • B = b (i j) dimenzija p × n

Matrica C, čiji se elementi c i j izračunavaju pomoću sljedeće formule:

c i j = a i 1 × b 1 j + a i 2 × b 2 j + . . . + a i p × b p j , i = 1 , . . . m, j = 1, . . . m

Primjer 2

Izračunajmo proizvode AB=BA:

A = 1 2 1 0 1 2 , B = 1 0 0 1 1 1

Rješenje korištenjem pravila množenja matrice:

A ⏟ 2 × 3 × B ⏟ 3 × 2 = 1 2 1 0 1 2 × 1 0 0 1 1 1 = 1 × 1 + 2 × 0 + 1 × 1 1 × 0 + 2 × 1 + 1 × 1 0 × 1 + 1 × 0 + 2 × 1 0 × 0 + 1 × 1 + 2 × 1 = = 2 3 2 3 ⏟ 2 × 2

B ⏟ 3 × 2 × A ⏟ 2 × 3 = 1 0 0 1 1 1 × 1 2 1 0 1 2 = 1 × 1 + 0 × 0 1 × 2 + 0 × 1 1 × 1 + 0 × 2 0 × 1 + 1 × 0 0 × 2 + 1 × 1 0 × 1 + 1 × 2 1 × 1 + 1 × 0 1 × 2 + 1 × 1 1 × 1 + 1 × 2 = 1 2 1 0 1 2 1 3 3 ⏟ 3×3

Proizvod A B i B A su pronađeni, ali su matrice različite veličine: A B nije jednako BA.

Svojstva množenja matrice

Svojstva množenja matrice:

  • (A B) C = A (B C) - asocijativnost množenja matrice;
  • A (B + C) = A B + A C - distributivnost množenja;
  • (A + B) C = A C + B C - distributivnost množenja;
  • λ (A B) = (λ A) B
Primjer 1

Provjerimo svojstvo br. 1: (A B) C = A (B C) :

(A × B) × A = 1 2 3 4 × 5 6 7 8 × 1 0 0 2 = 19 22 43 50 × 1 0 0 2 = 19 44 43 100,

A (B × C) = 1 2 3 4 × 5 6 7 8 1 0 0 2 = 1 2 3 4 × 5 12 7 16 = 19 44 43 100.

Primjer 2

Provjerimo svojstvo br. 2: A (B + C) = A B + A C:

A × (B + C) = 1 2 3 4 × 5 6 7 8 + 1 0 0 2 = 1 2 3 4 × 6 6 7 10 = 20 26 46 58,

A B + A C = 1 2 3 4 × 5 6 7 8 + 1 2 3 4 × 1 0 0 2 = 19 22 43 50 + 1 4 3 8 = 20 26 46 58.

Proizvod tri matrice

Proizvod tri matrice A B C izračunava se na 2 načina:

  • pronađite A B i pomnožite sa C: (A B) C;
  • ili prvo pronađite B C, a zatim pomnožite A (B C).
Primjer 3

Pomnožite matrice na 2 načina:

4 3 7 5 × - 28 93 38 - 126 × 7 3 2 1

Algoritam akcija:

  • pronaći proizvod 2 matrice;
  • zatim ponovo pronađite proizvod 2 matrice.

1). A B = 4 3 7 5 × - 28 93 38 - 126 = 4 (- 28) + 3 × 38 4 × 93 + 3 (- 126) 7 (- 28) + 5 × 38 7 × 93 + 5 (- 126 ) = 2 - 6 - 6 21

2). A B C = (A B) C = 2 - 6 - 6 21 7 3 2 1 = 2 × 7 - 6 × 2 2 × 3 - 6 × 1 - 6 × 7 + 21 × 2 - 6 × 3 + 21 × 1 = 2 0 0 3 .

Koristimo formulu A B C = (A B) C:

1). B C = - 28 93 38 - 126 7 3 2 1 = - 28 × 7 + 93 × 2 - 28 × 3 + 93 × 1 38 × 7 - 126 × 2 38 × 3 - 126 × 1 = - 10 9 14 - 12

2). A B C = (A B) C = 7 3 2 1 - 10 9 14 - 12 = 4 (- 10) + 3 × 14 4 × 9 + 3 (- 12) 7 (- 10) + 5 × 14 7 × 9 + 5 (- 12) = 2 0 0 3

Odgovor: 4 3 7 5 - 28 93 38 - 126 7 3 2 1 = 2 0 0 3

Množenje matrice brojem

Definicija 2

Umnožak matrice A brojem k je matrica B = A k iste veličine, koja se dobija iz originalne matrice množenjem svih njenih elemenata datim brojem:

b i, j = k × a i, j

Svojstva množenja matrice brojem:

  • 1 × A = A
  • 0 × A = nula matrica
  • k (A + B) = k A + k B
  • (k + n) A = k A + n A
  • (k × n) × A = k (n × A)
Primjer 4

Nađimo proizvod matrice A = 4 2 9 0 sa 5.

5 A = 5 4 2 9 0 5 × 4 5 × 2 5 × 9 5 × 0 = 20 10 45 0

Množenje matrice vektorom

Definicija 3

Da biste pronašli proizvod matrice i vektora, morate pomnožiti koristeći pravilo "red po stupac":

  • ako množite matricu vektorom kolone, broj kolona u matrici mora odgovarati broju redova u vektoru kolone;
  • Rezultat množenja vektora stupca je samo vektor stupca:

A B = a 11 a 12 ⋯ a 1 n a 21 a 22 ⋯ a 2 n ⋯ ⋯ ⋯ ⋯ a m 1 a m 2 ⋯ a m n b 1 b 2 ⋯ b 1 n = a 11 × b 1 + ⋯ 1 n × b n a 21 × b 1 + a 22 × b 2 + ⋯ + a 2 n × b n ⋯ ⋯ ⋯ ⋯ a m 1 × b 1 + a m 2 × b 2 + ⋯ + a m n × b n = c 1 s ⋯ 1 m

  • ako množite matricu vektorom reda, tada matrica koja se množi mora biti isključivo vektor stupca, a broj stupaca mora odgovarati broju stupaca u vektoru reda:

A B = a a ⋯ a b b ⋯ b = a 1 × b 1 a 1 × b 2 ⋯ a 1 × b n a 2 × b 1 a 2 × b 2 ⋯ a 2 × b n ⋯ ⋯ ⋯ ⋯ a n × b 1 a n × b ⋯ a n × b n = c 11 c 12 ⋯ c 1 n c 21 c 22 ⋯ c 2 n ⋯ ⋯ ⋯ ⋯ c n 1 c n 2 ⋯ c n n

Primjer 5

Nađimo proizvod matrice A i vektora stupca B:

A B = 2 4 0 - 2 1 3 - 1 0 1 1 2 - 1 = 2 × 1 + 4 × 2 + 0 × (- 1) - 2 × 1 + 1 × 2 + 3 × (- 1) - 1 × 1 + 0 × 2 + 1 × (- 1) = 2 + 8 + 0 - 2 + 2 - 3 - 1 + 0 - 1 = 10 - 3 - 2

Primjer 6

Nađimo proizvod matrice A i vektora reda B:

A = 3 2 0 - 1 , B = - 1 1 0 2

A B = 3 2 0 1 × - 1 1 0 2 = 3 × (- 1) 3 × 1 3 × 0 3 × 2 2 × (- 1) 2 × 1 2 × 0 2 × 2 0 × (- 1) 0 × 1 0 × 0 0 × 2 1 × (- 1) 1 × 1 1 × 0 1 × 2 = - 3 3 0 6 - 2 2 0 4 0 0 0 0 - 1 1 0 2

Odgovor: A B = - 3 3 0 6 - 2 2 0 4 0 0 0 0 - 1 1 0 2

Ako primijetite grešku u tekstu, označite je i pritisnite Ctrl+Enter