Množenje kvadratne matrice vektorom. Množenje matrice vektorom. Osnovna svojstva produkta matrice

U sustavu MatLab vrlo je jednostavno izvoditi 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 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ž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 piše se na sljedeći način:

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 prikazati poruku o pogrešci, jer Vektori različitih vrsta ne mogu se dodavati. To je slučaj sa svim ilegalnim aritmetičkim operacijama: ako se ne mogu izračunati, MatLab će prijaviti pogrešku i program će prekinuti na odgovarajućem retku.

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

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
% transponiranjem vektora reda a.
A = ; % 3x3 matrica elemenata
B = a*A; %B = – vektor reda
C = A*b; %C = – vektor stupac
D = a*A*a’; % D = 45 – broj, zbroj elemenata matrice A
E = A'; % E – transponirana matrica A
F = inv(A); % F – inverzna matrica A
G = A^-1; % G – inverzna matrica A

Iz gornjeg primjera jasno je da je operacija transponiranja matrica i vektora označena simbolom ‘ (apostrofom) koji se stavlja iza imena vektora ili matrice. Izračunavanje inverzije 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 u procesu izračuna 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.\ - podjela po elementima;
.^ - elementno potenciranje.

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

a = ; % retka vektora
b = ; % retka vektora
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; % kvadriranja elemenata matrice A

Za kraj ovog odjeljka, razmotrit ćemo nekoliko funkcija korisnih pri radu s vektorima i matricama.

Da biste pronašli maksimalnu vrijednost vektorskog elementa, koristite standardnu ​​funkciju max(), koja vraća pronađenu vrijednost maksimalna vrijednost element i njegov položaj (indeks):

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

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

Gornji primjer pokazuje dva različiti putevi pozivanje funkcije max(). 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 naredbeni prozor MatLaba

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

Na sličan način radi i funkcija min(), koja određuje minimalnu vrijednost elementa vektora ili 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 u stupcima, a zatim u 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 morate 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 navedenom primjeru simbol ‘==’ označava provjeru jednakosti, a simbol ‘~=’ provjeru nejednakosti vrijednosti elemenata vektora a. Ovi će operatori biti detaljnije opisani u odjeljku Uvjetni operatori.

Još jedna korisna funkcija za rad s vektorima i matricama je mean() funkcija za izračunavanje prosjeka aritmetička vrijednost, koji radi ovako:

a = ;
m = srednja vrijednost (a); % m = 3
A = ;
M1 = srednja vrijednost (A); % M1 =
M2 = srednja vrijednost (srednja vrijednost (A)); % M2 = 4,333


Svaki se vektor može zamisliti kao matrica s jednim stupcem ili jednim redom. Matricu s jednim stupcem nazvat ćemo vektor stupac, a matricu 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.

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

Množenje matrica

na složeni vektor

Dobivamo rezultat

Kao što vidite, s nepromijenjenom vektorskom dimenzijom, 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 matrice sa složenim vrijednostima na mreži

Svojstva množenja matrice-vektora

Matrica

Vektorski stupac

Vektor retka

Proizvoljni broj

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

2. Umnožak zbroja vektora reda i matrice jednak je zbroju umnožaka vektora i matrice

3. Zajednički faktor vektora može se uzeti izvan produkta matrice s vektorom/vektorom s matricom

4. Umnožak vektora retka i umnoška matrice i vektora stupca ekvivalentan je umnošku vektora retka i matrice i vektora stupca.

Definicija 1

Umnožak matrice (C = AB) je operacija samo za usklađene matrice A i B, u kojoj je broj stupaca matrice A jednak broju redaka matrice B:

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

Primjer 1

Zadane 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 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 BA A su pronađeni, ali su to matrice različitih veličina: A B nije jednako BA A.

Svojstva množenja matrica

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.

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 prvo pronađite 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 radnji:

  • pronaći umnožak 2 matrice;
  • zatim opet pronađite umnožak 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 s brojem k je matrica B = A k iste veličine, koja se dobiva iz izvorne množenjem svih njezinih elemenata zadanim 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 umnožak 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 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 s 2 ⋯ s 1 m

  • ako pomnožite matricu 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

Nađimo umnožak 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 umnožak matrice A i vektora retka 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

Dakle, u prethodna lekcija Ispitali 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 morat ćemo početi s preliminarnim definicijama.

Usklađene matrice

Jedna od najvažnijih karakteristika matrice je njena veličina. O tome smo već govorili sto puta: pisanje $A=\lijevo[ m\times n \desno]$ znači da matrica ima točno $m$ redaka i $n$ stupaca. Također smo već 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 se broj stupaca u prvoj matrici podudara s brojem redaka u drugom, nazivaju se dosljednim.

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

  1. Važan nam je 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 nisu 3 reda u drugom).
  2. Dosljednost se lako može provjeriti ispisivanjem svih dimenzija jednu za drugom. Na primjeru iz prethodnog odlomka: “3 2 2 5” - u sredini su identični brojevi, tako da su matrice konzistentne. Ali "2 5 3 2" nisu dosljedni jer postoje različiti brojevi u sredini.

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

U matematici, kada je redoslijed navođenja objekata važan (na primjer, u definiciji koja je gore razmotrena, redoslijed matrica je važan), često govorimo o uređenim parovima. Upoznali smo ih još u školi: mislim da nije pametno da koordinate $\left(1;0 \right)$ i $\left(0;1 \right)$ definiraju 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 iz 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 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 operaciju množenja za njih.

Definicija. Umnožak dviju usklađenih 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 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 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 sam stavio točku i zarez između indeksa da ne bude zabune, ali ih nema potrebe 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 dalje 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 školski plan i program, samo u jako smanjenom obliku. Neka su zadani 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))\]

Uglavnom, kad je drveće bilo zelenije i nebo svjetlije, jednostavno smo pomnožili vektor retka $\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 kvadratne matrice

Zadatak 1. Izvrši 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). Stoga izvodimo 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ši 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 matrice nije tako komplicirana operacija. Barem za kvadratne matrice 2x2.

U procesu izračuna sastavili smo međumatricu, gdje smo izravno opisali 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$ u općem slučaju. 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 $ (zbog nekomutativnosti umnoška potrebno je posebno navesti desnu i lijevu distributivnost.

A sada - sve je isto, ali s više detalja.

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

Pogledajmo 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$. Osim toga, operacija množenja definirana je samo za konzistentne matrice $A=\left[ m\times n \right]$ i $B=\left[ n\times k \right]$, ali nitko nije jamčio da one ostat će dosljedni.ako se zamijene. Na primjer, matrice $\left[ 2\times 3 \right]$ i $\left[ 3\times 5 \right]$ prilično su dosljedne navedenim redoslijedom, ali iste matrice $\left[ 3\times 5 \right] $ i $\left[ 2\times 3 \right]$ napisani obrnutim redoslijedom više nisu dosljedni. Tužno. :(

Među kvadratnim matricama zadane veličine $n$ uvijek će biti onih koje daju isti rezultat i kada se množe izravnim i obrnutim redoslijedom. Kako opisati sve takve matrice (i koliko ih uopće ima) tema je za zasebnu lekciju. Nećemo danas 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 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 razmatran.

U stvarnim problemima najčešće moramo 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 nužno 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, možete je pomnožiti sa svakom od ove "druge dvije" i zatim dodati rezultate. U praksi obično moramo izvršiti suprotnu operaciju: uočimo istu matricu, izvadimo je iz zagrada, izvršimo zbrajanje i time si pojednostavimo život. :)

Napomena: da bismo opisali distributivnost, morali smo napisati dvije formule: gdje je zbroj u drugom faktoru i gdje je zbroj u prvom. To se događa upravo zato što je množenje matrica nekomutativno (i općenito, u nekomutativnoj algebri postoji mnogo zabavnih stvari koje nam uopće ne padaju na pamet kada se radi s običnim brojevima). A ako, na primjer, trebate zapisati ovo svojstvo na ispitu, 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 pravokutnim?

Slučaj pravokutnih matrica

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

Zadatak 3. Izvrši 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]$. Zapišimo redom brojeve koji označavaju veličine:

Kao što vidite, središnja dva broja se podudaraju. To znači da su matrice konzistentne i da se mogu množiti. Štoviše, 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 \ \\end(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 pogledajmo jedan od najboljih zadataka za obuku za one koji tek počinju raditi s matricama. U njemu ne trebate samo umnožiti neke dvije ploče, već prvo utvrditi: je li takvo umnožavanje 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 veličine matrica:

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

Nalazimo da se matrica $A$ može uskladiti samo s matricom $B$, budući da je broj stupaca $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 čitatelju da samostalno dovrši 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 "tranzitne" koeficijente koji su osiguravali konzistentnost matrica.

Koje su druge opcije moguće? Naravno, može se 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]$, čiji se koeficijenti mogu 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, možete se složiti i oko $C\cdot A$ i $B\cdot C$ - i to je to. Stoga jednostavno zapisujemo 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 da uvježbate sve ključne faze množenja matrice.

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 matrica veličine $\left[ m\times 1 \right]$, 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 više od vektora retka. S teorijskog gledišta, gotovo da nema razlike između redaka i stupaca. Samo trebate biti oprezni pri koordinaciji s okolnim matricama množitelja.

Zadatak 5. Izvrši 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. Ovdje imamo umnožak usklađenih matrica: $\left[ 3\times 3 \right]\cdot \left[ 3\times 1 \right]=\left[ 3\times 1 \right]$. Pronađimo 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ši 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 dogovoreno: $\left[ 1\times 3 \right]\cdot \left[ 3\times 3 \right]=\left[ 1\times 3 \right]$. Računamo proizvod:

\[\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, kada pomnožimo vektor retka i vektor stupca s kvadratnom matricom, rezultat uvijek rezultira retkom ili stupcem iste veličine. Ova činjenica ima mnoge primjene – od rješavanja linearne jednadžbe na kojekakve transformacije koordinata (koje se u konačnici 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 pažnju zaslužuje potenciranje - to je kada isti objekt množimo sam sa sobom nekoliko puta. Matrice nisu iznimka; one se također mogu podići na različite potencije.

Takvi radovi se uvijek 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 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 naznačenu snagu:

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

Riješenje. Pa dobro, 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. Podignite matricu na naznačenu snagu:

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

Riješenje. Samo nemojte sada plakati zbog činjenice da je "diploma prevelika", "svijet nije fer" i "učitelji su potpuno izgubili svoje obale". Zapravo 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)\ ]

Primijetite da smo u drugom retku koristili asocijativnost množenja. Zapravo, koristili smo ga u prethodnom zadatku, ali je tamo 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, nije uvijek moguće uhvatiti takve obrasce prilikom podizanja na stupanj. Stoga, budite oprezni: često se množenje nekoliko matrica "nasumično" ispostavlja lakšim i bržim od traženja nekakvih uzoraka.

Općenito, ne gledajte viši smisao gdje nije. Zaključno, razmotrimo potenciranje veće matrice - koliko je $\left[ 3\times 3 \right]$.

Problem 9. Podignite matricu na naznačenu snagu:

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

Riješenje. Nemojmo tražiti uzorke. Radimo unaprijed:

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

Prvo, kvadrirajmo ovu matricu:

\[\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 je riješen.

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

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

Ovo zaključuje lekciju. Sljedeći put ćemo razmotriti inverznu operaciju: pomoću postojećeg umnoška tražit ćemo izvorne faktore.

Kao što ste vjerojatno već pogodili, razgovarat ćemo o tome 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. Postizanje najvećeg mogućeg učinka. Iskorištavanje paralelizma srednje razine. Organizacija paralelnog računanja pri 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 sličnih operacija množenja redaka matrice i vektora. Dobivanje svake takve operacije uključuje elementno množenje elemenata retka matrice i vektora 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 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 pitanja organiziranja paralelnog računanja 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 najvećeg mogućeg učinka ()

Analizirajmo informacijske ovisnosti u algoritmu množenja matrice i vektora kako bismo odabrali moguće metode 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 nezavisne operacije množenja po elementima i može se izvoditi i paralelno;

Zbrajanje dobivenih produkata u svakoj operaciji množenja retka matrice s vektorom može se izvesti pomoću jedne od prethodno razmatranih varijanti algoritma zbrajanja (sekvencijalni 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. Mnogi procesori su podijeljeni u skupine

,

od kojih svaki predstavlja skup procesora za izvođenje operacije množenja pojedinog retka matrice vektorom. Na početku izračuna, element retka matrice i odgovarajući element vektora šalju se svakom procesoru u grupi. Zatim svaki procesor izvodi operaciju množenja. Naknadni izračuni se zatim izvode pomoću sheme 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 operaciju množenja retka matrice vektorom

Vrijeme izvršenja paralelnog algoritma kada se koriste procesori određeno je vremenom izvršenja operacije paralelnog množenja i vremenom izvršenja kaskadnog kruga

Kao rezultat toga, pokazatelji učinkovitosti algoritma određeni su sljedećim odnosima:

Za problem množenja matrice-vektora koji se razmatra, najprikladnije topologije su strukture koje osiguravaju brzi prijenos podataka (staze jedinične duljine) u kaskadnom sumacijskom krugu (vidi sliku 4.5). Takve su topologije struktura sa kompletan sustav veze ( kompletan graf) I hiperkocka. Druge topologije dovode do produljenog vremena komunikacije zbog duljih ruta prijenosa podataka. Dakle, uz linearni poredak procesora sa sustavom veza samo s najbližim susjedima lijevo i desno ( vladar ili prsten) za kaskadnu shemu, duljina puta prijenosa svakog primljenog parcijalnog zbroja u iteraciji , , jednaka je . Ako pretpostavimo da prijenos podataka duž duljine staze u topologijama s linearnom strukturom zahtijeva operacije prijenosa podataka, ukupni broj paralelnih operacija (ukupno trajanje staza) prijenosa podataka određen je vrijednošću

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

Primjena računalnog sustava s pravokutnom topologijom dvodimenzionalna rešetka veličina dovodi do jednostavne i jasne interpretacije izračuna koji se izvode (struktura mreže odgovara strukturi obrađenih podataka). Za takvu topologiju najpoželjnije je redove matrice postaviti duž vodoravne mreže; u ovom slučaju elementi vektora moraju biti raspoređeni po vertikalama računalnog sustava. Izračuni s ovim rasporedom podataka mogu se provoditi paralelno duž linija mreže; kao rezultat toga, ukupan broj prijenosa podataka odgovara rezultatima za ruler().

Komunikacijske radnje koje se izvode prilikom rješavanja zadanog zadatka sastoje se od prijenosa 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. Prilikom implementacije paralelnog algoritma, preporučljivo je istaknuti početnu fazu učitavanja korištenih procesora s početnim podacima. Najjednostavnije, takva se inicijalizacija osigurava topologijom računalnog sustava s topologijom u obliku kompletan graf(preuzimanje je omogućeno pomoću jedne operacije paralelnog prijenosa podataka). Kod organiziranja više procesora u obliku hiperkocka Može biti korisno imati dvorazinsku kontrolu procesa pokretanja, u kojoj središnji upravljački procesor osigurava da se matrica i vektorski redovi šalju kontrolnim procesorima grupa procesora, koji zauzvrat šalju elemente matrice a vektorske redove izvršnim procesorima. Za topologije u obliku vladarima ili prstenje zahtijeva sekvencijalne operacije prijenosa podataka sa sukcesivno smanjenom količinom podataka koji se prenose s na elemente.

Korištenje paralelizma srednje razine()

1. Odabir metode paralelnog računanja. Kada se raspoloživi broj korištenih procesora () smanji, uobičajena shema kaskadnog zbrajanja pri izvođenju operacija množenja redaka matrice vektorom postaje neprimjenjiva. Kako bismo pojednostavili prezentaciju materijala, pretpostavimo i upotrijebimo 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

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

Kada je broj procesora , kada je vrijeme izvršenja algoritma procijenjeno kao , može se predložiti nova shema za paralelno izvođenje izračuna, u kojoj za svaku iteraciju kaskadnog zbrajanja, skupovi procesora koji se ne preklapaju. Ovim pristupom raspoloživi broj procesora ispada dovoljan za implementaciju samo jedne operacije množenja retka 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 izvođenje množenja matrice i vektora:

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 izračuna sastoji se od učitavanja elementa po elementa procesora grupe s vrijednostima 1 retka matrice i vektora; nakon početnog učitavanja izvodi se paralelna operacija množenja po elementima i naknadna implementacija uobičajenog kruga kaskadnog zbrajanja;

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

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

Riža. 6.2. Stanje cjevovoda za operaciju množenja retka matrice vektorom nakon završetka 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 sa shemom cjevovoda organiziranja izračuna - pojavljivanje rezultata množenja svakog sljedećeg retka dogodit će se nakon završetka svake sljedeće iteracije cjevovoda. Kao rezultat, ukupno vrijeme operacija množenja matrice vektorom može se izraziti količinom

Ova procjena je nešto duže od vremena izvršavanja paralelnog algoritma opisanog u prethodnom odlomku (), 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 računskih rezultata (što može biti korisno u brojnim situacijama obrade podataka).

Kao rezultat toga, pokazatelji učinkovitosti algoritma određeni su odnosima sljedeći tip:

3. Odabir topologije računalnog sustava. Odgovarajuća topologija računalnog sustava u potpunosti je određena računalnim sklopom - ovo je potpun 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 s listovima stabla, rezultati zbrajanja akumuliraju se u korijenskom procesoru.

Analiza složenosti izvedenih komunikacijskih radnji za računalne sustave s drugim međuprocesorskim komunikacijskim topologijama treba se provesti kao samostalan zadatak (vidi također klauzulu 3.4).

Organizacija paralelnog računanja u

1. Odabir 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 prethodno razmatran u priručniku, u kojem se redovi matrice distribuiraju među procesorima red po red i svaki procesor implementira operacija množenja bilo kojeg pojedinačnog retka matrice s vektorom. Drugi mogući način organiziranja paralelnog računalstva mogla bi biti izgradnja cjevovodni sklop za operaciju množenja retka matrice vektorom(skalarni produkt vektora) raspoređivanjem svih dostupnih procesora u linearni niz ( vladarima).

Takva shema izrač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 stupca matrice i vektorskog elementa. Izračuni koji se izvode na svakom procesoru , , su sljedeći:

Traži se sljedeći element stupca matrice;

Elementi i se umnožavaju;

Traži se rezultat proračuna prethodnog procesora;

Vrijednosti se dodaju;

Rezultirajući rezultat šalje se 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 morate izvršiti niz dodatnih radnji:

Prilikom izvođenja prve iteracije svaki procesor dodatno zahtijeva element vektora;

Za sinkronizaciju izračuna (pri izvođenju sljedeće iteracije kruga, traži se rezultat izračuna prethodnog procesora) u fazi inicijalizacije, procesor izvodi () petlju čekanja.

Osim toga, radi homogenosti opisanog sklopa za prvi procesor, koji nema prethodni procesor, preporučljivo je uvesti praznu operaciju zbrajanja ( ).

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

2. Evaluacija pokazatelja uspješnosti algoritma. Množenje prvog retka vektorom prema opisanoj shemi 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 se da iteracija svakog procesora uključuje izvršavanje operacija množenja i zbrajanja). Kao rezultat toga, 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 na . Korisnost korištenja cjevovodne računalne sheme je, kao što je navedeno u prethodnom odlomku, u smanjenju količine prenesenih podataka i ranijem pojavljivanju nekih rezultata izračuna.

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

, ,

3. Odabir topologije računalnog sustava. Potrebna topologija računalnog sustava za izvođenje 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. Odabir metode paralelnog računanja. Smanjivanjem broja procesora na vrijednost, paralelna računalna shema za množenje matrice-vektora može se dobiti prilagodbom algoritma množenja red po red. U ovom slučaju, kaskadni sklop za zbrajanje rezultata množenja po elementima degenerira i operacija množenja retka matrice vektorom se u potpunosti 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;

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

Treba napomenuti da veličina matrice ne mora biti višekratnik broja procesora i tada se redovi matrice ne mogu jednako podijeliti između procesora. U tim situacijama možete odstupiti od zahtjeva jednolikog opterećenja procesora i, kako biste dobili jednostavniju računsku shemu, prihvatiti pravilo da se podaci na procesore postavljaju samo red po red (tj. elementi jednog retka matrice ne mogu podijeliti na nekoliko procesora). Nejednak broj redaka dovodi do različitog računalnog opterećenja procesora; Dakle, završetak izračuna (ukupno trajanje rješavanja problema) bit će određen vremenom rada najopterećenijeg procesora (u ovom slučaju, dio tog ukupnog vremena, pojedini procesori mogu biti u stanju mirovanja zbog iscrpljenosti svog udjela kalkulacija). 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. Odabir topologije računalnog sustava. U skladu s prirodom međuprocesorskih interakcija koje se izvode u predloženoj računskoj shemi, organizacija procesora u obliku zvijezde(vidi sliku 1.1). Upravljački procesor takve topologije može se koristiti za učitavanje računalnih procesora početnim podacima i primanje rezultata izvedenih izračuna.

Množenje matrice

Problem množenja matrica-matrica definiran je relacijama

.

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

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