C za množenje matrice i vektora. Množenje kompleksnog vektora matricom. Umnožak triju matrica

Definicija 1

Umnožak matrica (C=AB) je operacija samo za konzistentne matrice A i B, u kojima je broj stupaca matrice A jednak broju redaka matrice B:

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

Primjer 1

Podaci matrice:

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

Matrica C čiji se elementi c i j izračunavaju sljedećom formulom:

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 umnoške AB=BA:

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

Rješenje pomoću 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

Umnožak A B i B A su pronađeni, ali su to matrice različitih veličina: A B nije jednako B A.

Svojstva množenja matrica

Svojstva množenja matrice:

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

Provjerite svojstvo #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

Provjeravamo svojstvo br. 2: A (B + C) \u003d 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 \u003d 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 .

Umnožak triju matrica

Umnožak tri matrice A B C izračunava se na 2 načina:

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

Množenje matrica na 2 načina:

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

Algoritam akcije:

  • pronaći umnožak 2 matrice;
  • zatim opet pronađite umnožak 2 matrice.

jedan). A B \u003d 4 3 7 5 × - 28 93 38 - 126 \u003d 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 \u003d (A B) C:

jedan). 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 \u003d (A B) C \u003d 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 s brojem k je matrica B \u003d A k iste veličine, koja se dobiva iz izvornika množenjem zadanim brojem svih njegovih elemenata:

b i , j = k × a i , j

Svojstva množenja matrice brojem:

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

Pronađite umnožak matrice A \u003d 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 umnožak matrice i vektora, morate množiti prema pravilu redak po stupac:

  • ako pomnožite matricu s vektorom stupcem, broj stupaca u matrici mora odgovarati broju redaka u vektoru stupca;
  • 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 + a 12 × b 2 + ⋯ + a 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 c 2 ⋯ c 1 m

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

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 2 ⋯ 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

Pronađite umnožak matrice A i vektora stupca B:

A B \u003d 2 4 0 - 2 1 3 - 1 0 1 1 2 - 1 \u003d 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đite umnožak matrice A i vektora retka B:

A \u003d 3 2 0 - 1, B \u003d - 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 \u003d - 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


Svaki se vektor može promatrati kao matrica s jednim stupcem ili jednim redom. Matrica s jednim stupcem naziva se vektor stupac, a matrica s jednim redom vektor retka.

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

Dakle, da bi se matrica pomnožila vektorom, vektor se mora tretirati kao vektor stupca. Kada se vektor množi s matricom, on se mora tretirati kao vektor retka.

množenje matrica

na kompleksni vektor

Dobivamo rezultat

Kao što vidite, s nepromijenjenom dimenzijom vektora, možemo imati dva rješenja.

Želio bih vam skrenuti pozornost na činjenicu da matrica u prvoj i drugoj verziji, unatoč iste vrijednosti, potpuno drugačiji (imaju različite dimenzije)

U prvom slučaju vektor se smatra stupcem i tada je potrebno množenje matrice vektorom, au drugom slučaju imamo vektor red i tada imamo umnožak vektora i matrice.

Ovaj bot također množi vektore i matrice koje imaju složene vrijednosti. Na temelju potpunijeg kalkulatora Množenje matrica sa složenim vrijednostima na mreži

Svojstva množenja matrice-vektora

Matrica

Vektorski stupac

Vektor retka

Proizvoljni broj

1. Umnožak matrice i zbroja vektora stupaca jednak je zbroju umnožaka matrice po svakom od vektora

2. Proizvod zbroja vektora retka po matrici jednak je zbroju proizvoda vektora po matrici

3. Zajednički faktor vektora može se izvući iz umnoška matrice s vektorom / vektora s matricom

4. Umnožak vektora retka s umnoškom matrice i vektora stupca ekvivalentan je umnošku vektora retka s matricom i vektorom stupcem.

Sustav MatLab jednostavno izvodi matematičke operacije na matricama i vektorima. Razmotrimo najprije jednostavne operacije zbrajanja i množenja matrica i vektora. Neka su dana dva vektora

a = ; % retka vektora
b = ; % vektor stupca

tada se množenje ova dva vektora može napisati kao

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

Prema operacijama na vektorima, množenje vektora retka vektorom stupca daje broj, a množenje vektora stupca vektorom retka daje dvodimenzionalnu matricu, koja je rezultat izračuna u gornjem primjeru, tj.

Zbrajanje i oduzimanje dvaju vektora zapisuje se kao

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

Imajte na umu da se operacije zbrajanja i oduzimanja mogu izvoditi između dva vektora stupca ili dva vektora reda. U suprotnom, MatLab će izdati poruku o pogrešci, jer ne mogu se dodavati vektori različitih tipova. To je slučaj sa svim nevažećim aritmetičkim operacijama: ako ih nije moguće izračunati, MatLab sustav će prijaviti pogrešku i program će prekinuti na odgovarajućem retku.

Slično se izvode operacije množenja i zbrajanja između matrica:

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

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

a = ; % retka vektora
b = a'; % vektor stupca formiran od
% transponirati vektor retka a.
A = ; % matrica 3x3 elementa
B = a*A; %b= - vektor reda
C=A*b; % C = - vektor stupac
D = a*A*a'; % D = 45 – broj, zbroj matrice A
E = A'; % E je transponirana matrica A
F = inv(A); % F - inverzna matrica A
G = A^-1; % G - inverzna matrica A

Iz gornjeg primjera vidljivo je da je operacija transponiranja matrica i vektora označena simbolom ‘ (apostrofom) koji se stavlja iza naziva vektora ili matrice. Izračun inverzne matrice može se izvršiti pozivom funkcije inv() ili podizanjem matrice na potenciju -1. Rezultat će u oba slučaja biti isti, a napravljene su dvije metode izračuna radi lakšeg korištenja pri implementaciji različitih algoritama.

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

.* - množenje po elementima;
./ i .\ - elementarne podjele;
.^ - elementno potenciranje.

Razmotrite rad ovih operatora u sljedećem primjeru.

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

Za kraj ovog odjeljka, razmotrite nekoliko funkcija koje su korisne pri radu s vektorima i matricama.

Za pronalaženje maksimalne vrijednosti vektorskog elementa koristi se standardna funkcija max() koja vraća pronađeno maksimalna vrijednost element i njegov položaj (indeks):

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

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

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

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

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

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

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

Funkcija min() radi na sličan način, koja određuje minimalnu vrijednost vektora ili elementa matrice i njegov indeks.

Još jedna korisna funkcija za rad s matricama i vektorima je funkcija sum(), koja izračunava zbroj vrijednosti elemenata vektora ili stupaca matrice:

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

Pri izračunavanju zbroja S2, zbroj vrijednosti elemenata matrice A prvo se izračunava po stupcima, a zatim po redovima. Kao rezultat toga, varijabla S2 sadrži zbroj vrijednosti svih elemenata matrice A.

Za sortiranje vrijednosti elemenata vektora ili matrice uzlaznim ili silaznim redoslijedom, koristite funkciju sort() na sljedeći način:

a = ;

b1 = sortiraj(a); %b1=
b2 = sort(a, 'silazi'); %b2=
b3 = sort(a, 'uzlaz'); %b3=

za matrice

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

U mnogim praktičnim problemima često je potrebno pronaći određeni element u vektoru ili matrici. To se može učiniti pomoću standardne funkcije find(), koja kao argument uzima uvjet prema kojem se traženi elementi pronalaze, na primjer:

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

U gornjem primjeru simbol '==' označava provjeru jednakosti, a simbol '~=' vrši provjeru nejednakosti vrijednosti elemenata vektora a. Više detalja o ovim operatorima bit će opisano u odjeljku o uvjetnim operatorima.

Još jedna korisna funkcija za rad s vektorima i matricama je mean() funkcija 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 vrijednost (srednja vrijednost (A)); % M2 = 4,333

Dakle u prethodna lekcija Analizirali smo pravila za zbrajanje i oduzimanje matrica. To su tako jednostavne operacije da ih većina učenika razumije doslovno odmah.

Međutim, rano se raduješ. Gratis je gotov - idemo na množenje. Odmah ću vas upozoriti: množenje dviju matrica uopće nije množenje brojeva u ćelijama s istim koordinatama, kao što možda mislite. Ovdje je sve mnogo zabavnije. I morate početi s preliminarnim definicijama.

Konzistentne matrice

Jedna od najvažnijih karakteristika matrice je njena veličina. O tome smo već stotinu puta govorili: $A=\left[ m\times n \right]$ znači da matrica ima točno $m$ redaka i $n$ stupaca. Već smo razgovarali o tome kako ne brkati retke sa stupcima. Sada je važno nešto drugo.

Definicija. Matrice oblika $A=\left[ m\times n \right]$ i $B=\left[ n\times k \right]$, u kojima je broj stupaca u prvoj matrici isti kao broj redaka u drugom, nazivaju se dosljednim.

Još jednom: broj stupaca u prvoj matrici jednak je broju redaka u drugoj! Iz ovoga dobivamo dva zaključka odjednom:

  1. Zanima nas redoslijed matrica. Na primjer, matrice $A=\left[ 3\times 2 \right]$ i $B=\left[ 2\times 5 \right]$ su konzistentne (2 stupca u prvoj matrici i 2 retka 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 je, kao bilo je, a ne 3 reda u drugom ).
  2. Dosljednost je lako provjeriti ispisujete li sve dimenzije jednu za drugom. Koristeći primjer iz prethodnog paragrafa: "3 2 2 5" - isti brojevi su u sredini, tako da su matrice konzistentne. Ali "2 5 3 2" nije dogovoreno, jer postoje različiti brojevi u sredini.

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

U matematici, kada je bitan redoslijed nabrajanja objekata (na primjer, u gornjoj definiciji bitan je redoslijed matrica), često se govori o uređenim parovima. Upoznali smo ih u školi: mislim da nije pametno da koordinate $\left(1;0 \right)$ i $\left(0;1 \right)$ određuju različite točke na ravnini.

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

Pa što onda?

Definicija množenja

Razmotrimo dvije konzistentne matrice: $A=\lijevo[ m\times n \right]$ i $B=\lijevo[ n\times k \right]$. I definiramo im operaciju množenja.

Definicija. Umnožak dviju konzistentnih matrica $A=\left[ m\times n \right]$ i $B=\left[ n\times k \right]$ nova je matrica $C=\left[ m\times k \ desno] $, čiji se elementi izračunavaju prema formuli:

\[\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$.

Za one koji prvi put vide ovu definiciju, odmah se postavljaju dva pitanja:

  1. Kakva je ovo divlja divljač?
  2. Zašto je tako teško?

Pa, prvo o svemu. Krenimo od prvog pitanja. Što znače svi ti indeksi? I kako ne pogriješiti pri radu s pravim matricama?

Prije svega, napominjemo da je dugačak redak za izračun $((c)_(i;j))$ (posebno stavite točku i zarez između indeksa da se ne zabunite, ali ih ne morate stavljati općenito - i sam 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$-ti stupac u drugoj matrici;
  3. Dobivamo dva niza brojeva. Elemente tih nizova množimo s istim brojevima, a zatim zbrajamo dobivene umnoške.

Ovaj proces je lako razumjeti sa slike:


Shema za množenje dviju matrica

Još jednom: fiksiramo redak $i$ u prvoj matrici, stupac $j$ u drugoj matrici, množimo elemente s istim brojevima, a zatim zbrajamo dobivene umnoške - dobivamo $((c)_(ij ))$. I tako za sve $1\le i\le m$ i $1\le j\le k$. Oni. ukupno će biti $m\puta k$ takvih "perverzija".

Zapravo, već smo se susreli s množenjem matrice u školski plan i program, samo u znatno smanjenom obliku. Neka su dati vektori:

\[\begin(align) & \vec(a)=\left(((x)_(a));((y)_(a));((z)_(a)) \desno); \\ & \desna strelica(b)=\lijevo(((x)_(b));((y)_(b));((z)_(b)) \desno). \\ \end(align)\]

Tada će njihov skalarni umnožak biti točno zbroj umnožaka parova:

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

Zapravo, u tim dalekim godinama, kada je drveće bilo zelenije, a nebo svjetlije, jednostavno smo pomnožili vektor reda $\overrightarrow(a)$ s vektorom stupca $\overrightarrow(b)$.

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

Ali dosta teorije! Pogledajmo pravi primjeri. I počnimo s najjednostavnijim slučajem - kvadratnim matricama.

Množenje kvadratnih matrica

Zadatak 1. Izvršite množenje:

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

Riješ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 uvijek su konzistentne). Dakle, radimo množenje:

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

To je sve!

Odgovor: $\lijevo[ \begin(niz)(*(35)(r))4 & 6 \\ 18 & -8 \\\end(niz) \desno]$.

Zadatak 2. Izvršite množenje:

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

Riješenje. Opet, dosljedne matrice, pa izvodimo sljedeće radnje:\[\]

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

Kao što vidite, rezultat je matrica ispunjena nulama

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

Iz gornjih primjera vidljivo je da množenje matrica nije tako komplicirana operacija. Barem za kvadratne matrice 2x2.

U procesu izračuna sastavili smo međumatricu, gdje smo izravno slikali koji su brojevi uključeni u određenu ćeliju. To je upravo ono što treba učiniti kada se rješavaju pravi problemi.

Osnovna svojstva produkta matrice

U suštini. Množenje matrice:

  1. Nekomutativno: $A\cdot B\ne B\cdot A$ općenito. Postoje, naravno, posebne matrice za koje vrijedi 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: $\lijevo(A\cdot B \desno)\cdot C=A\cdot \lijevo(B\cdot C \desno)$. Ovdje nema opcija: susjedne matrice se mogu množiti bez brige o tome što je lijevo, a što desno od ove dvije matrice.
  3. Distributivno: $A\cdot \lijevo(B+C \desno)=A\cdot B+A\cdot C$ i $\lijevo(A+B \desno)\cdot C=A\cdot C+B\cdot C $

A sada - sve isto, ali detaljnije.

Matrično množenje je slično klasičnom množenju brojeva. Ali postoje razlike, od kojih je najvažnija ta matrično množenje je, općenito govoreći, nekomutativno.

Razmotrimo ponovno matrice iz problema 1. Već znamo njihov izravni umnožak:

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

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

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

Ispada da je $A\cdot B\ne B\cdot A$. Također, operacija množenja je definirana samo za konzistentne matrice $A=\left[ m\times n \right]$ i $B=\left[ n\times k \right]$, ali nitko ne jamči da će one ostati dosljedni, ako su zamijenjeni. Na primjer, matrice $\left[ 2\times 3 \right]$ i $\left[ 3\times 5 \right]$ prilično su dosljedne u ovom poretku, ali iste matrice $\left[ 3\times 5 \ desno] $ i $\left[ 2\times 3 \right]$ napisani obrnutim redoslijedom više se ne podudaraju. tuga :(

Među kvadratnim matricama zadane veličine $n$ uvijek će biti onih koje daju isti rezultat i kad se množe izravnim i obrnutim redoslijedom. Kako opisati sve takve matrice (i koliko ih je uopće) tema je za posebnu lekciju. Danas nećemo o tome. :)

Međutim, množenje matrice je asocijativno:

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

Stoga, kada trebate pomnožiti nekoliko matrica u nizu odjednom, uopće nije potrebno to učiniti unaprijed: 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 razmatran.

U stvarnim problemima najčešće se moraju množiti kvadratne matrice veličine $\left[ n\times n \right]$. Skup svih takvih matrica označen je s $((M)^(n))$ (tj. unosi $A=\left[ n\times n \right]$ i \ znače isto), i to će definitivno 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 glavnoj dijagonali su jedinice, au svim ostalim ćelijama nule.

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

Drugim riječima, ako trebate pomnožiti jednu matricu sa zbrojem druge dvije, onda je možete pomnožiti sa svakom od ove "druge dvije", a zatim zbrojiti rezultate. U praksi obično morate izvesti inverznu operaciju: uočimo istu matricu, izvadimo je iz zagrade, izvršimo zbrajanje i time si pojednostavimo život. :)

Imajte na umu da smo za opis distributivnosti morali napisati dvije formule: gdje je zbroj u drugom faktoru i gdje je zbroj u prvom. To je upravo zbog činjenice da je matrično množenje nekomutativno (i općenito, u nekomutativnoj algebri ima puno svakakvih šala koje vam uopće ne padaju na pamet kada radite s običnim brojevima). A ako, na primjer, trebate zapisati ovo svojstvo tijekom ispita, onda svakako napišite obje formule, inače bi se nastavnik mogao malo naljutiti.

Dobro, sve su to bile bajke o kvadratnim matricama. Što je s pravokutnicima?

Slučaj pravokutnih matrica

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

Zadatak 3. Izvršite množenje:

\[\lijevo[ \begin(matrica) \begin(matrix) 5 \\ 2 \\ 3 \\\end(matrix) & \begin(matrix) 4 \\ 5 \\ 1 \\\end(matrix) \ \\end(matrix) \right]\cdot \left[ \begin(array)(*(35)(r)) -2 & 5 \\ 3 & 4 \\\end(array) \right]\]

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

Kao što vidite, središnja dva broja su ista. To znači da su matrice konzistentne i da se mogu množiti. A na izlazu dobivamo matricu $C=\left[ 3\times 2 \right]$:

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

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

Odgovor: $\lijevo[ \begin(niz)(*(35)(r)) \begin(niz)(*(35)(r)) 2 \\ 11 \\ -3 \\\end(niz) & \početak(matrica) 41 \\ 30 \\ 19 \\\kraj(matrica) \\\kraj(niz) \desno]$.

Sada razmislite o jednom od najboljih zadataka obuke za one koji tek počinju raditi s matricama. U njemu ne trebate samo umnožiti neke dvije tablete, već prvo utvrditi: je li takvo množenje dopušteno?

Zadatak 4. Naći sve moguće umnoške parova matrica:

\\]; $B=\lijevo[ \početak(matrica) \početak(matrica) 0 \\ 2 \\ 0 \\ 4 \\\kraj(matrica) & \početak(matrica) 1 \\ 0 \\ 3 \\ 0 \ \\kraj(matrica) \\\kraj(matrica) \desno]$; $C=\lijevo[ \početak(matrica)0 & 1 \\ 1 & 0 \\\kraj(matrica) \desno]$.

Riješenje. Prvo zapišimo dimenzije matrica:

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

Dobijamo da se matrica $A$ može uskladiti samo s matricom $B$, jer je broj stupaca u $A$ 4, a samo $B$ ima toliki broj redaka. Stoga možemo pronaći proizvod:

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

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

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

Drugim riječima, jednostavno uklanjamo "prijelazne" koeficijente koji su osiguravali konzistentnost matrica.

Koje su druge opcije moguće? Svakako je moguće pronaći $B\cdot A$, budući da je $B=\left[ 4\times 2 \right]$, $A=\left[ 2\times 4 \right]$, pa je uređeni par $\ left(B ;A \right)$ je dosljedan, a dimenzija proizvoda bit će:

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

Ukratko, izlaz će biti matrica $\left[ 4\times 4 \right]$, čije je koeficijente lako izračunati:

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

Očito, također možete spojiti $C\cdot A$ i $B\cdot C$, i to je to. Stoga jednostavno napišemo dobivene proizvode:

Bilo je lako.:)

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

Općenito, toplo preporučujem da ovaj zadatak obavite sami. I još jedan sličan zadatak, koji je in domaća zadaća. Ove naizgled jednostavne misli pomoći će vam razraditi sve ključne korake u matričnom množenju.

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

Vektori redova i vektori stupaca

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

Definicija. Vektor stupac je $\left[ m\times 1 \right]$ matrica, tj. koji se sastoji od nekoliko redaka i samo jednog stupca.

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

Zapravo, već smo se susreli s tim objektima. Na primjer, obični trodimenzionalni vektor iz stereometrije $\overrightarrow(a)=\left(x;y;z \right)$ nije ništa drugo nego vektor reda. S teorijskog gledišta, gotovo da nema razlike između redaka i stupaca. Trebate biti oprezni samo pri koordinaciji s okolnim matricama množitelja.

Zadatak 5. Množenje:

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

Riješenje. Imamo produkt konzistentnih matrica: $\left[ 3\times 3 \right]\cdot \left[ 3\times 1 \right]=\left[ 3\times 1 \right]$. Pronađite ovaj komad:

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

Odgovor: $\lijevo[ \begin(niz)(*(35)(r))-3 \\ 8 \\ 0 \\\end(niz) \desno]$.

Zadatak 6. Izvršite množenje:

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

Riješenje. Opet je sve dosljedno: $\left[ 1\times 3 \right]\cdot \left[ 3\times 3 \right]=\left[ 1\times 3 \right]$. Rad smatramo:

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

Odgovor: $\lijevo[ \begin(matrica) 5 & -19 & 5 \\\end(matrica) \desno]$.

Kao što vidite, pri množenju vektora retka i vektora stupca s kvadratna matrica izlaz je uvijek red ili stupac iste veličine. Ova činjenica ima mnoge primjene, od rješavanja linearne jednadžbe na kojekakve transformacije koordinata (koje se na kraju svedu i na sustave jednadžbi, ali da ne pričamo o tužnim stvarima).

Mislim da je ovdje sve bilo očito. Prijeđimo na završni dio današnje lekcije.

Matrično potenciranje

Među svim operacijama množenja posebnu pozornost zaslužuje potenciranje - to je kada isti predmet množimo samim sobom nekoliko puta. Matrice nisu iznimka, one se također mogu dizati na različite potencije.

Takvi su radovi uvijek koordinirani:

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

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

\[\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(align)\]

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

Zadatak 7. Podignite matricu na zadanu snagu:

$((\lijevo[ \begin(matrica) 1 & 1 \\ 0 & 1 \\\end(matrica) \desno])^(3))$

Riješenje. OK, idemo graditi. Prvo kvadriramo:

\[\begin(align) & ((\left[ \begin(matrix) 1 & 1 \\ 0 & 1 \\\end(matrix) \right])^(2))=\left[ \begin(matrix ) 1 & 1 \\ 0 & 1 \\\end(matrica) \right]\cdot \left[ \begin(matrix) 1 & 1 \\ 0 & 1 \\\end(matrix) \right]= \\ & =\lijevo[ \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) \right]= \\ & =\lijevo[ \begin(niz)(*(35)(r)) 1 & 2 \\ 0 & 1 \ \\end(array) \right] \end(align)\]

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

To je sve.:)

Odgovor: $\lijevo[ \begin(matrica)1 & 3 \\ 0 & 1 \\\end(matrica) \desno]$.

Problem 8. Podići matricu na zadanu snagu:

\[((\lijevo[ \početak(matrica) 1 & 1 \\ 0 & 1 \\\kraj(matrica) \desno])^(10))\]

Riješenje. Samo nemojte sada plakati zbog toga što je “diploma previsoka”, “svijet nije fer” i “profesori su potpuno izgubili banku”. Zapravo, sve je jednostavno:

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

Imajte na umu da smo u drugom retku koristili asocijativnost množenja. Zapravo, koristili smo ga u prethodnom zadatku, ali tamo je bio implicitan.

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

Kao što vidite, nema ništa komplicirano u podizanju matrice na potenciju. Posljednji primjer može se sažeti:

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

Tu je činjenicu lako dokazati matematičkom indukcijom ili izravnim množenjem. Međutim, daleko od toga da je uvijek moguće uhvatiti takve uzorke prilikom podizanja na stupanj. Stoga, budite oprezni: često je lakše i brže pomnožiti nekoliko matrica "prazno" nego tamo tražiti neke uzorke.

Općenito, ne gledajte viši smisao gdje ga nema. Na kraju, razmotrimo stepenovanje veće matrice - koliko je $\left[ 3\times 3 \right]$.

Problem 9. Podignite matricu na zadanu snagu:

\[((\lijevo[ \begin(matrica) 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\\end(matrica) \desno])^(3))\]

Riješenje. Nemojmo tražiti uzorke. Radimo "preko":

\[((\lijevo[ \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(matrix) \right])^(2))\cdot \left[ \begin (matrica)0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\\kraj (matrica) \desno]\]

Počnimo kvadriranjem ove matrice:

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

Sada ga isjecimo na kocke:

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

To je sve. Problem riješen.

Odgovor: $\lijevo[ \begin(matrica) 2 & 3 & 3 \\ 3 & 2 & 3 \\ 3 & 3 & 2 \\\end(matrica) \desno]$.

Kao što vidite, količina izračuna je postala veća, ali se značenje nije nimalo promijenilo. :)

Ova lekcija može završiti. Sljedeći put ćemo razmotriti inverznu operaciju: tražit ćemo izvorne množitelje pomoću postojećeg umnoška.

Kao što ste vjerojatno već pogodili, govorimo o inverzna matrica i metode za njegovo pronalaženje.

Predavanje 6. Paralelni numerički algoritmi za rješavanje tipični zadaci računalna matematika: množenje matrica.

Množenje matrice vektorom. Postignite najveću moguću brzinu. Korištenje paralelizma srednje razine. Organizacija paralelnog računanja za p = n. Korištenje ograničenog skupa procesora. Množenje matrice. Makrooperacijska analiza algoritama za rješavanje problema. Organizacija paralelizma na temelju dijeljenja podataka.

Množenje matrice vektorom

Problem množenja matrice vektorom definiran je relacijama

Dakle, dobivanje rezultirajućeg vektora uključuje ponavljanje iste vrste operacija za množenje redaka matrice i vektora. Dobivanje svake takve operacije uključuje element po element množenje elemenata retka matrice i vektora i naknadno zbrajanje dobivenih proizvoda. Ukupan broj potrebnih skalarnih operacija procjenjuje se vrijednošću

Kao što slijedi iz radnji izvedenih prilikom množenja matrice i vektora, paralelne metode za rješavanje problema mogu se dobiti na temelju algoritama paralelnog zbrajanja (vidi paragraf 4.1). U ovom odjeljku analiza metoda paralelizacije bit će dopunjena razmatranjem organizacije paralelnog računalstva ovisno o broju procesora dostupnih za korištenje. Osim toga, na primjeru problema množenja matrice vektorom skrenut će se pozornost na potrebu odabira najprikladnije topologije računalnog sustava (postojećih komunikacijskih kanala između procesora) kako bi se smanjili troškovi organizacije međuprocesorske interakcije. .

Postizanje najbrže moguće izvedbe ()

Izvršimo analizu informacijskih ovisnosti u algoritmu množenja matrice-vektora kako bismo odabrali moguće načine paralelizacije. Kao što vidite, operacije množenja pojedinačnih redaka matrice s vektorom koje se izvode tijekom izračuna su neovisne i mogu se izvoditi paralelno;



Množenje svakog retka vektorom uključuje nezavisna množenja po elementima i može se izvoditi i paralelno;

Zbrajanje dobivenih produkata u svakoj operaciji množenja retka matrice vektorom može se izvesti pomoću jedne od prethodno razmatranih varijanti algoritma zbrajanja (serijski algoritam, konvencionalne i modificirane kaskadne sheme).

Dakle, najveći potreban broj procesora određen je vrijednošću

Korištenje takvog broja procesora može se prikazati na sljedeći način. Skup procesora podijeljen je u skupine

,

od kojih svaki predstavlja skup procesora za izvođenje operacije množenja jednog retka matrice s vektorom. Na početku izračuna svaki procesor iz grupe prima element retka matrice i odgovarajući element vektora. Zatim svaki procesor izvodi operaciju množenja. Naknadni izračuni se izvode prema shemi kaskadnog zbrajanja. Za ilustraciju na sl. 6.1 prikazuje računsku shemu za procesore grupe s dimenzijom matrice.

Riža. 6.1. Računska shema za množenje retka matrice vektorom

Vrijeme izvođenja paralelnog algoritma kada se koriste procesori određeno je vremenom izvođenja operacije paralelnog množenja i vremenom izvođenja kaskadne sheme.

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

Za razmatrani problem množenja matrice vektorom, najprikladnije topologije su strukture koje omogućuju brzi prijenos podataka (putovi jedinične duljine) u kaskadnoj shemi zbrajanja (vidi sl. 4.5). Takve su topologije struktura sa kompletan sustav kravate ( kompletan graf) i hiperkocka. Druge topologije rezultiraju produljenim komunikacijskim vremenom zbog duljih putova podataka. Dakle, s linearnim redoslijedom procesora sa sustavom veza samo s najbližim susjedima s lijeve i s desne strane ( vladar ili prsten) za kaskadnu shemu, duljina puta prijenosa svakog primljenog parcijalnog zbroja u iteraciji , , jednaka je . Ako prihvatimo da prijenos podataka duž staze duljine u topologijama s linearnom strukturom zahtijeva izvršavanje operacija prijenosa podataka, ukupan broj paralelnih operacija (ukupna duljina staza) prijenosa podataka određen je vrijednošću

(isključujući prijenose podataka za bootstrapping procesore).

Primjena računalnog sustava s pravokutnom topologijom dvodimenzionalna rešetka veličina dovodi do jednostavne i vizualne interpretacije izvedenih izračuna (struktura mreže odgovara strukturi obrađenih podataka). Za takvu topologiju najsvrsishodnije je postaviti redove matrice duž horizontalnih linija rešetke; u ovom slučaju, elementi vektora moraju biti poslani duž vertikala računalnog sustava. Izvršenje izračuna s ovim rasporedom podataka može se provesti paralelno duž linija rešetke; kao rezultat, ukupni broj prijenosa podataka je isti kao rezultati za ruler().

Komunikacijske radnje koje se izvode u rješavanju problema su prijenos podataka između parova MCS procesora. Detaljna analiza trajanja provedbe takvih operacija provedena je u točki 3.3.

4. Preporuke za implementaciju paralelnog algoritma. Kod implementacije paralelnog algoritma preporučljivo je izdvojiti početni stupanj učitavanja korištenih procesora početnim podacima. Takva se inicijalizacija najjednostavnije osigurava za topologiju računalnog sustava s topologijom u obliku kompletan graf(učitavanje je omogućeno jednom operacijom paralelnog prijenosa podataka). Prilikom organiziranja skupa procesora u obliku hiperkocka Može biti korisno imati dvorazinsko upravljanje bootstrap procesom, u kojem središnji upravljački procesor distribuira matrice i vektorske retke kontrolnim procesorima grupa procesora , , koji zauzvrat distribuiraju elemente matrice i vektorske redove izvršnim procesorima. Za topologije u obliku vladarima ili prstenje potrebne su sekvencijalne operacije prijenosa podataka sa sekvencijalno opadajućom količinom podataka koji se prenose s na elemente.

Korištenje paralelizma srednje razine()

1. Izbor metode paralelnog računanja. Sa smanjenjem dostupnog broja korištenih procesora (), uobičajena shema kaskadnog zbrajanja pri izvođenju operacija množenja redaka matrice vektorom postaje neprimjenjiva. Radi jednostavnosti prikaza gradiva pretpostavljamo i koristimo modificiranu kaskadnu shemu. Početno opterećenje svakog procesora u ovom slučaju raste i procesor se opterećuje () dijelovima redaka matrice i vektora. Vrijeme izvršenja operacije množenja matrice vektorom može se procijeniti kao vrijednost

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

S brojem procesora , kada je vrijeme izvršenja algoritma procijenjeno kao , može se predložiti nova shema za paralelno izvođenje izračuna, u kojoj se za svaku iteraciju kaskadnog zbrajanja koriste skupovi procesora koji se ne preklapaju. Ovim pristupom raspoloživi broj procesora dovoljan je za realizaciju samo jedne operacije množenja reda matrice i vektora. Osim toga, prilikom izvođenja sljedeće iteracije kaskadnog zbrajanja, procesori odgovorni za izvođenje 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 redaka matrice. Kao rezultat toga, može se formirati sljedeća shema pokretna traka izvrši množenje matrice i vektora:

Skup procesora je podijeljen u grupe procesora koje se ne preklapaju

,

grupa , , sastoji se od procesora i koristi se za ponavljanje kaskadnog algoritma (grupa se koristi za implementaciju množenja po elementima); ukupan broj procesora;

Inicijalizacija izračuna sastoji se od učitavanja elementa po elementa procesora grupe s vrijednostima 1 retka matrice i vektora; nakon bootstrapa izvodi se paralelna operacija množenja po elementima i naknadne implementacije konvencionalnog kruga kaskadnog zbrajanja;

Prilikom izvođenja izračuna, svaki put nakon završetka operacije elementnog množenja, u procesore grupe se učitavaju elementi sljedećeg retka matrice i pokreće se proces izračuna za novoučitane podatke.

Kao rezultat primjene opisanog algoritma, više procesora implementira cjevovod za izvođenje operacije množenja retka matrice vektorom. Na takvom cjevovodu nekoliko pojedinačnih redova matrice može istovremeno biti u različitim fazama obrade. Tako će, na primjer, nakon elementnog množenja elemenata prvog retka i vektora, grupni procesori izvesti prvu iteraciju kaskadnog algoritma za prvi redak matrice, a grupni procesori izvršiti element - mudro množenje vrijednosti drugog reda matrice i tako dalje. Za ilustraciju na sl. 6.2 prikazuje situaciju procesa računanja nakon 2 iteracije cjevovoda na .

Riža. 6.2. Stanje cjevovoda za operaciju množenja retka matrice vektorom nakon izvođenja 2 iteracije

2. Evaluacija pokazatelja uspješnosti algoritma. Množenje prvog retka vektorom prema kaskadnoj shemi bit će dovršeno, kao i obično, nakon izvršenja () paralelnih operacija. Za ostale retke, u skladu s cjevovodnom shemom organizacije izračuna, rezultati množenja svakog sljedećeg retka pojavit će se 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 odlomku (), međutim, novopredložena metoda zahtijeva manje podataka za prijenos (vektor se šalje samo jednom). Osim toga, korištenje sheme cjevovoda dovodi do ranijeg pojavljivanja nekih rezultata izračuna (što može biti korisno u brojnim situacijama obrade podataka).

Kao rezultat toga, pokazatelji izvedbe algoritma određeni su odnosima sljedeća vrsta:

3. Izbor topologije računalnog sustava. Svrsishodna topologija računalnog sustava u potpunosti je određena računalnom shemom - ovo je potpuna binarno stablo visina . Broj prijenosa podataka s takvom topologijom mreže određen je ukupnim brojem iteracija koje izvodi cjevovod, tj.

Inicijalizacija izračuna počinje od listova stabla, rezultati zbrajanja akumuliraju se u korijenskom procesoru.

Analiza složenosti komunikacijskih radnji koje se izvode za računalne sustave s drugim topologijama međuprocesorskih komunikacija trebala bi se provesti kao neovisna zadaća (vidi također odjeljak 3.4).

Organizacija paralelnog računanja sa

1. Izbor metode paralelnog računanja. Kada se koriste procesori za množenje matrice s vektorom, može se koristiti paralelni algoritam množenja red po red o kojem je već bilo riječi u priručniku, u kojem se redovi matrice distribuiraju red po red između procesora i svaki procesor provodi operaciju množenja bilo kojeg pojedinačnog retka matrice s vektorom. Drugi mogući način organiziranja paralelnog računanja može biti izgradnja shema cjevovoda za operaciju množenja retka matrice s vektorom(točkasti umnožak vektora) raspoređivanjem svih dostupnih procesora u linearni niz ( vladarima).

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

svaki se procesor, , koristi za množenje elemenata stupca matrice i vektorskog elementa. Izvršenje izračuna na svakom procesoru , , sastoji se od sljedećeg:

Traži se sljedeći element stupca matrice;

Elementi i se umnožavaju;

Traži se rezultat izračuna prethodnog procesora;

Vrijednosti se dodaju;

Rezultat se šalje sljedećem procesoru.

Riža. 6.3. Stanje linearnog cjevovoda za operaciju množenja retka matrice vektorom nakon izvođenja dvije iteracije

Prilikom pokretanja opisane sheme potrebno je izvršiti niz dodatnih radnji:

Tijekom prve iteracije, svaki procesor dodatno zahtijeva element vektora;

Za sinkronizaciju izračuna (tijekom izvođenja sljedeće iteracije kruga, traži se rezultat izračuna prethodnog procesora) u fazi inicijalizacije, procesor , , izvršava () petlju čekanja.

Osim toga, radi ujednačenosti opisane sheme za prvi procesor, koji nema prethodni procesor, preporučljivo je uvesti praznu operaciju zbrajanja ( ).

Za ilustraciju na sl. 6.3 prikazuje stanje procesa računanja nakon druge iteracije cjevovoda na .

2. Evaluacija pokazatelja uspješnosti algoritma. Množenje prvog retka vektorom u skladu s opisanom shemom cjevovoda bit će dovršeno nakon izvršenja () paralelnih operacija. Rezultat množenja sljedećih redaka pojavit će se nakon završetka svake sljedeće iteracije cjevovoda (podsjetimo, iteracija svakog procesora uključuje izvođenje operacija množenja i zbrajanja). 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 izvođenja paralelnog algoritma za . Korisnost korištenja cjevovodne računalne sheme je, kao što je navedeno u prethodnom odlomku, u smanjenju količine prenesenih podataka i ranijem pojavljivanju dijela rezultata izračuna.

Pokazatelji izvedbe ove računske sheme određeni su odnosima:

, ,

3. Izbor topologije računalnog sustava. Potrebna topologija računalnog sustava za implementaciju opisanog algoritma jednoznačno je određena predloženom računskom shemom - to je linearno uređen skup procesora ( vladar).

Korištenje ograničenog skupa procesora ()

1. Izbor metode paralelnog računanja. Kada se broj procesora smanji na vrijednost, paralelna računalna shema za množenje matrice-vektora može se dobiti kao rezultat prilagodbe algoritma množenja red po red. U ovom slučaju, kaskadna shema za zbrajanje rezultata množenja po elementima degenerira se i operacija množenja retka matrice vektorom u potpunosti se izvodi na jednom procesoru. Računska shema dobivena ovim pristupom može se specificirati na sljedeći način:

Redovi vektora i matrice šalju se svakom od dostupnih procesora;

Operacija množenja redaka matrice s vektorom izvodi se uobičajenim sekvencijalnim algoritmom.

Treba napomenuti da veličina matrice ne može biti višekratnik broja procesora, a tada se redovi matrice ne mogu jednako podijeliti između procesora. U tim situacijama moguće je odstupiti od zahtjeva ujednačenosti opterećenja procesora i, kako bi se dobila jednostavnija računska shema, prihvatiti pravilo da se podaci na procesore stavljaju samo red po red (tj. elementi jednog retka matrice). ne može se dijeliti između više procesora). Različiti broj redaka rezultira različitim računalnim opterećenjem procesora; tako će završetak izračuna (ukupno trajanje rješavanja problema) biti određen vremenom rada najopterećenijeg procesora (u ovom slučaju neki procesori mogu biti u stanju mirovanja zbog iscrpljenosti svog udjela izračuna). Neravnomjerno opterećenje procesora smanjuje učinkovitost korištenja MCS-a i, kao rezultat razmatranja ovog primjera, možemo zaključiti da problem balansiranja

3. Izbor topologije računalnog sustava. U skladu s prirodom međuprocesorskih interakcija izvedenih u predloženoj računskoj shemi, organizacija procesora u obliku zvijezde(vidi sl. 1.1). Upravljački procesor takve topologije može se koristiti za učitavanje računalnih procesora s početnim podacima i primanje rezultata izvedenih izračuna.

Množenje matrice

Problem množenja matrice matricom definiran je relacijama

.

(radi jednostavnosti, pretpostavit ćemo da su umnožene matrice i kvadratne i imaju red ).

Analiza mogućih načina paralelnog izvođenja ovog zadatka može se provesti analogno razmatranju problema množenja matrice vektorom. Ostavljajući ovu analizu za samostalno istraživanje, pokazat ćemo na primjeru problema množenja matrica korištenje nekoliko općih pristupa koji nam omogućuju formiranje paralelnih metoda za rješavanje složenih problema.