Înmulțiți matricea cu vector. Înmulțirea matricei: exemple, algoritm de acțiuni, proprietăți ale produsului

Curs 6. Algoritmi numerici paraleli pentru rezolvarea problemelor tipice de matematică computaţională: înmulţirea matriceală.

Înmulțirea unei matrice cu un vector. Obținerea celor mai înalte performanțe posibile. Exploatarea paralelismului de nivel mediu. Organizarea calculului paralel la p = n. Utilizarea unui set limitat de procesoare. Înmulțirea matricei. Analiza macro-operațională a algoritmilor de rezolvare a problemelor. Organizarea paralelismului bazat pe partajarea datelor.

Înmulțirea unei matrice cu un vector

Problema înmulțirii unei matrice cu un vector este definită de relații

Astfel, obținerea vectorului rezultat presupune repetarea unor operații similare de înmulțire a rândurilor matricei și a vectorului. Obținerea fiecărei astfel de operații implică înmulțirea în funcție de elemente a elementelor unui rând al unei matrice și a unui vector și însumarea ulterioară a produselor rezultate. Numărul total de operații scalare necesare este estimat prin cantitate

Din acțiunile efectuate la înmulțirea unei matrice și a unui vector, se pot obține metode paralele de rezolvare a problemei bazate pe algoritmi de însumare paralelă (vezi paragraful 4.1). ÎN această secțiune analiza metodelor de paralelizare va fi completată prin luarea în considerare a problemelor de organizare a calculului paralel în funcție de numărul de procesoare disponibile pentru utilizare. În plus, folosind exemplul problemei înmulțirii unei matrice cu un vector, se va atrage atenția asupra necesității de a selecta cea mai potrivită topologie a sistemului de calcul (canalele de comunicație existente între procesoare) pentru a reduce costurile de organizare a interacțiunii interprocesoare.

Atingerea celor mai înalte performanțe posibile ()

Să analizăm dependențele de informații din algoritmul de multiplicare matrice-vector pentru a selecta posibilele metode de paralelizare. După cum puteți vedea, operațiile de înmulțire a rândurilor individuale ale unei matrice cu un vector efectuate în timpul calculelor sunt independente și pot fi efectuate în paralel;



Înmulțirea fiecărui rând cu un vector implică operații independente de înmulțire pe elemente și poate fi efectuată și în paralel;

Însumarea produselor rezultate în fiecare operație de înmulțire a unui rând de matrice cu un vector poate fi efectuată folosind una dintre variantele discutate anterior ale algoritmului de însumare (algoritm secvenţial, scheme convenționale și modificate în cascadă).

Astfel, numărul maxim necesar de procesoare este determinat de valoare

Utilizarea unui astfel de număr de procesoare poate fi reprezentată după cum urmează. Multe procesoare sunt împărțite în grupuri

,

fiecare dintre acestea reprezintă un set de procesoare pentru efectuarea operației de înmulțire a unui rând individual al unei matrice cu un vector. La începutul calculelor, un element rând al matricei și un element corespunzător al vectorului sunt trimise fiecărui procesor din grup. În continuare, fiecare procesor efectuează o operație de multiplicare. Calculele ulterioare sunt apoi efectuate folosind o schemă de însumare în cascadă. Pentru ilustrare în fig. 6.1 prezintă schema de calcul pentru procesoarele unui grup cu dimensiunea matricei de .

Orez. 6.1. Schema de calcul pentru înmulțirea unui rând de matrice cu un vector

Timpul de execuție al unui algoritm paralel la utilizarea procesoarelor este determinat de timpul de execuție al operației de multiplicare în paralel și timpul de execuție al circuitului în cascadă

Ca urmare, indicatorii de eficiență ai algoritmului sunt determinați de următoarele relații:

, ,

Pentru problema înmulțirii matrice-vector luată în considerare, cele mai potrivite topologii sunt structurile care asigură o transmisie rapidă a datelor (căi de lungime unitară) într-un circuit de însumare în cascadă (vezi Fig. 4.5). Astfel de topologii sunt o structură cu un sistem complet de conexiuni ( grafic complet) Și hipercub. Alte topologii duc la creșterea timpului de comunicare datorită rutelor mai lungi de transfer de date. Astfel, cu o ordonare liniară a procesoarelor cu un sistem de conexiuni numai cu cei mai apropiați vecini din stânga și din dreapta ( riglă sau inel) pentru o schemă în cascadă, lungimea căii de transmisie a fiecărei sume parțiale primite la iterație , , este egală cu . Dacă presupunem că transmisia de date de-a lungul unei lungimi de cale în topologiile cu structură liniară necesită operațiuni de transmisie de date, numărul total de operații paralele (durata totală a căilor) de transmisie a datelor este determinat de valoarea

(excluzând transferurile de date pentru încărcarea inițială a procesoarelor).

Aplicarea unui sistem de calcul cu topologie dreptunghiulară rețea bidimensională dimensiunea conduce la o interpretare simplă și clară a calculelor efectuate (structura rețelei corespunde structurii datelor prelucrate). Pentru o astfel de topologie, este cel mai indicat să plasați rândurile matricei de-a lungul grilelor orizontale; în acest caz, elementele vectorului trebuie să fie distribuite de-a lungul verticalelor sistemului de calcul. Calculele cu această aranjare a datelor pot fi efectuate în paralel de-a lungul liniilor grilei; ca urmare, numărul total de transferuri de date se potrivește cu rezultatele pentru ruler().

Acțiunile de comunicare efectuate la rezolvarea unei sarcini date constau în transferul de date între perechi de procesoare MCS. O analiză detaliată a duratei de implementare a unor astfel de operațiuni este efectuată în paragraful 3.3.

4. Recomandări pentru implementarea unui algoritm paralel. La implementarea unui algoritm paralel, este recomandabil să se evidențieze stadiu inițial la încărcarea procesoarelor uzate cu datele inițiale. Cel mai simplu, o astfel de inițializare este prevăzută cu o topologie a unui sistem informatic cu o topologie sub formă grafic complet(descărcarea este furnizată folosind o operație de transfer de date paralel). La organizarea mai multor procesoare în formular hipercub Poate fi util să existe un control pe două niveluri al procesului de bootstrap, în care procesorul de control central se asigură că matricea și rândurile vectoriale sunt trimise procesoarelor de control ale grupurilor de procesoare, care, la rândul lor, trimit elementele matricei. și rânduri vectoriale către procesoarele executive. Pentru topologii în formă conducători sau inele necesită operațiuni secvențiale de transfer de date cu o cantitate în scădere succesivă de date transferate de la către elemente.

Utilizarea paralelismului de nivel mediu()

1. Alegerea unei metode de calcul paralel. Când numărul disponibil de procesoare utilizate () scade, schema obișnuită de însumare în cascadă la efectuarea operațiunilor de înmulțire a rândurilor matricei cu vector devine inaplicabilă. Pentru a simplifica prezentarea materialului, să presupunem și să folosim o schemă în cascadă modificată. În acest caz, sarcina inițială a fiecărui procesor crește și procesorul este încărcat () de părți ale rândurilor matricei și vectorului. Timpul de execuție al operației de multiplicare matrice-vector poate fi estimat ca

Atunci când se utilizează numărul de procesoare necesare pentru implementarea schemei în cascadă modificată, de ex. la , această expresie oferă o estimare a timpului de execuție (la ).

Când numărul de procesoare este , când timpul de execuție al algoritmului este estimat ca , se poate propune o nouă schemă de execuție paralelă a calculelor, în care pentru fiecare iterație a însumării în cascadă seturi de procesoare care nu se suprapun. Cu această abordare, numărul disponibil de procesoare se dovedește a fi suficient pentru a implementa o singură operație de înmulțire a unui rând de matrice și a unui vector. În plus, atunci când se efectuează următoarea iterație a însumării în cascadă, procesoarele responsabile cu executarea tuturor iterațiilor anterioare sunt libere. Cu toate acestea, acest dezavantaj al abordării propuse poate fi transformat într-un avantaj prin utilizarea procesoarelor inactive pentru a procesa următoarele rânduri ale matricei. Ca rezultat, se poate forma următoarea schemă transportor efectuarea înmulțirii matrice și vectoriale:

Un set de procesoare este împărțit în grupuri de procesoare disjunse

,

în acest caz, grupul , , este format din procesoare și este utilizat pentru a efectua iterații ale algoritmului în cascadă (grupul este folosit pentru a implementa multiplicarea element-wise); numărul total de procesoare;

Inițializarea calculelor constă în încărcarea element cu element a procesoarelor grupului cu valorile unui rând de matrice și vector; după încărcarea inițială, se efectuează o operație paralelă de multiplicare element cu element și implementarea ulterioară a circuitului obișnuit de însumare în cascadă;

La efectuarea calculelor, de fiecare dată după finalizarea unei operații de multiplicare pe elemente, procesoarele grupului sunt încărcate cu elemente din rândul următor al matricei și se inițiază procesul de calcul pentru datele nou încărcate.

Ca rezultat al aplicării algoritmului descris, multe procesoare implementează o conductă pentru efectuarea operației de înmulțire a unui rând de matrice cu un vector. Pe un astfel de transportor pot exista simultan mai multe rânduri separate ale matricei în diferite etape de procesare. Deci, de exemplu, după înmulțirea în funcție de elemente a elementelor primului rând și a vectorului, procesoarele grupului vor efectua prima iterație a algoritmului în cascadă pentru primul rând al matricei, iar procesoarele grupului vor efectuați înmulțirea în funcție de elemente a valorilor celui de-al doilea rând al matricei etc. Pentru ilustrare în fig. 6.2 arată situația procesului de calcul după 2 iterații ale conductei la .

Orez. 6.2. Starea conductei pentru operația de înmulțire a unui rând de matrice cu un vector după finalizarea a 2 iterații

2. Evaluarea indicatorilor de performanță a algoritmului. Înmulțirea primului rând cu vector conform schemei în cascadă se va finaliza ca de obicei după executarea () operațiilor paralele. Pentru alte rânduri - în conformitate cu schema conductei de organizare a calculelor - apariția rezultatelor înmulțirii fiecărui rând următor va avea loc după finalizarea fiecărei iterații ulterioare a conductei. Ca rezultat, timpul total de execuție al operației de multiplicare matrice-vector poate fi exprimat ca

Această estimare este puțin mai mare decât timpul de execuție al algoritmului paralel descris în paragraful anterior (), cu toate acestea, metoda nou propusă necesită mai puține date transmise (vectorul este trimis o singură dată). În plus, utilizarea unei scheme pipeline are ca rezultat apariția mai devreme a unora dintre rezultatele computaționale (care pot fi utile într-o serie de situații de prelucrare a datelor).

Ca urmare, indicatorii de eficiență ai algoritmului sunt determinați de următoarele relații:

3. Selectarea topologiei sistemului de calcul. Topologia adecvată a unui sistem de calcul este complet determinată de circuitul de calcul - acesta este un complet arbore binarînălţime Numărul de transferuri de date cu o astfel de topologie de rețea este determinat de numărul total de iterații efectuate de conductă, adică

.

Inițializarea calculelor începe cu frunzele copacului, rezultatele însumării sunt acumulate în procesorul rădăcină.

Analiza complexității acțiunilor de comunicare efectuate pentru sistemele de calcul cu alte topologii de comunicații interprocesoare se presupune a fi efectuată ca o sarcină independentă (vezi și clauza 3.4).

Organizarea calculului paralel în

1. Alegerea unei metode de calcul paralel. Când se utilizează procesoare pentru a înmulți o matrice cu un vector, se poate folosi algoritmul de multiplicare paralelă rând cu rând discutat anterior în manual, în care rândurile matricei sunt distribuite între procesoare rând cu rând și fiecare procesor implementează operația de înmulțire a oricărui rând individual al matricei cu un vector. Un alt mod posibil de a organiza calculul paralel ar putea fi construirea circuit de conducte pentru operația de înmulțire a unui rând de matrice cu un vector(produsul scalar al vectorilor) prin aranjarea tuturor procesoarelor disponibile într-o secvență liniară ( conducători).

O astfel de schemă de calcul poate fi definită după cum urmează. Să ne imaginăm setul de procesoare ca o secvență liniară (vezi Fig. 4.7):

Fiecare procesor, , este folosit pentru a multiplica elementele unei coloane matrice și a unui element vectorial. Executarea calculelor pe fiecare procesor , , este după cum urmează:

Se solicită următorul element al coloanei matricei;

Elementele și sunt înmulțite;

Se solicită rezultatul calculelor procesorului anterior;

Se adaugă valorile;

Rezultatul rezultat este trimis la următorul procesor.

Orez. 6.3. Starea conductei liniare pentru operația de înmulțire a unui rând de matrice cu un vector după efectuarea a două iterații

Când inițializați schema descrisă, trebuie să efectuați o serie de acțiuni suplimentare:

La efectuarea primei iterații, fiecare procesor solicită suplimentar un element al vectorului;

Pentru a sincroniza calculele (la efectuarea următoarei iterații a circuitului, se solicită rezultatul calculului procesorului anterior) în etapa de inițializare, procesorul, , realizează () o buclă de așteptare.

În plus, pentru omogenitatea schemei descrise pentru primul procesor, care nu are un procesor anterior, este recomandabil să se introducă o operație de adăugare goală ( ).

Pentru ilustrare în fig. Figura 6.3 arată starea procesului de calcul după a doua iterație a conductei la .

2. Evaluarea indicatorilor de performanță a algoritmului. Înmulțirea primului rând cu vector conform schemei de conducte descrise va fi finalizată după executarea () operațiilor paralele. Rezultatul înmulțirii următoarelor linii va apărea după finalizarea fiecărei iterații următoare a conductei (reamintim că iterația fiecărui procesor include executarea operațiilor de înmulțire și adunare). Ca rezultat, timpul total de execuție al unei operații de multiplicare matrice-vector poate fi exprimat astfel:

Această estimare este, de asemenea, mai mare decât timpul minim posibil de execuție al algoritmului paralel la . Utilitatea utilizării unei scheme de calcul pipeline este, așa cum sa menționat în paragraful anterior, în reducerea cantității de date transmise și în apariția mai timpurie a unora dintre rezultatele calculului.

Indicatorii de eficiență ai acestei scheme de calcul sunt determinați de relațiile:

, ,

3. Selectarea topologiei sistemului de calcul. Topologia necesară a sistemului de calcul pentru executarea algoritmului descris este determinată în mod unic de schema de calcul propusă - acesta este un set de procesoare ordonate liniar ( riglă).

Utilizarea unui set limitat de procesoare ()

1. Alegerea unei metode de calcul paralel. Când numărul de procesoare este redus la o valoare, o schemă de calcul paralelă pentru multiplicarea matrice-vector poate fi obținută prin adaptarea algoritmului de multiplicare rând cu rând. În acest caz, circuitul în cascadă pentru însumarea rezultatelor înmulțirii în funcție de elemente degenerează și operația de înmulțire a unui rând de matrice cu un vector este realizată complet pe un singur procesor. Schema de calcul obținută cu această abordare poate fi specificată după cum urmează:

Un vector și rânduri matrice sunt trimise la fiecare dintre procesoarele disponibile;

Efectuarea unei operații de multiplicare a rândurilor matrice-vector se realizează folosind un algoritm secvenţial convenţional.

Trebuie remarcat faptul că dimensiunea matricei poate să nu fie un multiplu al numărului de procesoare și atunci rândurile matricei nu pot fi împărțite în mod egal între procesoare. În aceste situații, puteți abate de la cerința încărcării uniforme a procesoarelor și, pentru a obține o schemă de calcul mai simplă, să acceptați regula conform căreia datele sunt plasate pe procesoare doar rând cu rând (adică, elementele unui rând ale matricei nu pot să fie împărțit între mai multe procesoare). Un număr inegal de rânduri duce la o sarcină de calcul diferită pe procesoare; Astfel, finalizarea calculelor (durata totală de rezolvare a problemei) va fi determinată de timpul de funcționare al procesorului cel mai încărcat (în acest caz, o parte din acest timp total, procesoarele individuale pot fi inactive din cauza epuizării cotei lor). de calcule). Sarcina neuniformă a procesorului reduce eficiența utilizării MCS și, ca urmare a luării în considerare acest exemplu putem concluziona că problema de echilibrare

3. Selectarea topologiei sistemului de calcul. În conformitate cu natura interacțiunilor interprocesoare efectuate în schema de calcul propusă, organizarea procesoarelor sub formă de stele(vezi Fig. 1.1). Un procesor de control al unei astfel de topologii poate fi folosit pentru a încărca procesoarele de calcul cu date inițiale și pentru a primi rezultatele calculelor efectuate.

Înmulțirea matricei

Problema înmulțirii matrice-matrice este definită de relații

.

(pentru simplitatea prezentării, vom presupune că matricele înmulțite și sunt pătrate și au ordine).

O analiză a metodelor posibile pentru executarea în paralel a acestei sarcini poate fi efectuată prin analogie cu luarea în considerare a problemei înmulțirii unei matrice cu un vector. Lăsând o astfel de analiză pentru studiu independent, vom folosi exemplul problemei înmulțirii matriceale pentru a arăta utilizarea mai multor abordări generale care ne permit să formăm metode paralele pentru rezolvarea problemelor complexe.

În sistemul MatLab, este destul de simplu să efectuați operații matematice pe matrice și vectori. Să luăm în considerare mai întâi operațiile simple de adunare și înmulțire a matricelor și vectorilor. Să fie dați doi vectori

a = ; % vector rând
b = ; % vector coloană

atunci multiplicarea acestor doi vectori se poate scrie astfel

c = a*b; % c=1+2+3+4+5=16
d = b*a; % d – matrice de 5x5 elemente

Conform operațiilor pe vectori, înmulțirea unui vector rând cu un vector coloană dă un număr, iar înmulțirea unui vector coloană cu un vector rând oferă o matrice bidimensională, care este rezultatul calculelor din exemplul de mai sus, adică.

Adunarea și scăderea a doi vectori se scrie după cum urmează:

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

Rețineți că operațiile de adunare și scădere pot fi efectuate între doi vectori coloană sau doi vectori rând. În caz contrar, MatLab va afișa un mesaj de eroare, deoarece Nu se pot adăuga vectori de diferite tipuri. Acesta este cazul tuturor operațiunilor aritmetice ilegale: dacă nu pot fi calculate, MatLab va raporta o eroare și programul se va termina pe linia corespunzătoare.

Operațiile de înmulțire și adunare între matrici sunt efectuate într-un mod similar:

A = ;
B = cele (3);
C = A+B; % adăugare a două matrice de aceeași dimensiune
D = A+5; % adaos de matrice și număr
E = A*B; % multiplicarea matricei A cu B
F = B*A; % multiplicarea matricei B cu A
G = 5*A; % înmulțind o matrice cu un număr

Operațiile de calcul a matricei inverse, precum și de transpunere a matricelor și vectorilor, se scriu astfel:

a = ; % vector rând
b = a’; % vector coloană format din
% prin transpunerea vectorului rând a.
A = ; % matrice de elemente 3x3
B = a*A; %B = – vector rând
C = A*b; %C = – vector coloană
D = a*A*a’; % D = 45 – număr, suma elementelor matricei A
E = A'; % E – matricea transpusă A
F = inv(A); % F – matricea inversă A
G = A^-1; % G – matricea inversă A

Din exemplul de mai sus reiese clar că operația de transpunere a matricelor și vectorilor este indicată prin simbolul ‘ (apostrof), care este plasat după numele vectorului sau al matricei. Calcularea inversului unei matrice se poate face apelând funcția inv() sau ridicând matricea la puterea -1. Rezultatul în ambele cazuri va fi același, iar două metode de calcul sunt realizate pentru ușurință în utilizare la implementarea unor algoritmi diferiți.

Dacă în procesul de calcule este necesară înmulțirea, împărțirea sau ridicarea elementelor unui vector sau matrice element cu element, atunci următorii operatori sunt utilizați pentru aceasta:

.* - înmulțirea în funcție de elemente;
./ și.\ - împărțiri element cu element;
.^ - exponentiație în funcție de elemente.

Să ne uităm la modul în care acești operatori funcționează folosind următorul exemplu.

a = ; % vector rând
b = ; % vector rând
c = a.*b; %c=
A = cele (3); % matrice 3x3 formată din unele
B = ; % matrice 3x3
C = A.*B; % matrice 3x3 formată din
D = A./B; % matrice 3x3 formată din
E = A.\B; % matrice 3x3 formată din
F = A.^2; % la pătrat elementele matricei A

Pentru a încheia această secțiune, vom lua în considerare câteva funcții utile atunci când lucrați cu vectori și matrice.

Pentru a găsi valoarea maximă a unui element vectorial, utilizați funcția standard max(), care returnează valoarea maximă găsită a elementului și poziția (indexul):

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

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

Exemplul de mai sus arată două moduri diferite de a apela funcția max(). În primul caz, se determină atât valoarea maximă a elementului, cât și indicele acestuia în vector, iar în al doilea - doar valoarea maximă a elementului.

În cazul matricelor, această funcție determină valorile maxime aflate în coloane, așa cum se arată în exemplul de mai jos:

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

Sintaxa completă a funcției max() poate fi găsită tastând comanda în fereastra de comandă MatLab

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

Funcția min() funcționează într-un mod similar, care determină valoarea minimă a unui element al unui vector sau matrice și indicele acestuia.

Altul functie utila lucrul cu matrice și vectori este funcția sum(), care calculează suma valorilor elementelor vectoriale sau coloanelor matriceale:

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

La calcularea sumei S2, suma valorilor elementelor matricei A este mai întâi calculată în coloane, apoi în rânduri. Ca rezultat, variabila S2 conține suma valorilor tuturor elementelor matricei A.

Pentru a sorta valorile elementelor unui vector sau matrice în ordine crescătoare sau descrescătoare, utilizați funcția sort() după cum urmează:

a = ;

b1 = sort(a); %b1=
b2 = sort(a, ‘coborâre’); %b2=
b3 = sort(a, ‘ascende’); %b3=

pentru matrice

A = ;
B1 = sortare(A); %B1=
B2 = sortare(A, 'coborâre'); %B2=

În multe probleme practice, deseori trebuie să găsiți un element specific într-un vector sau o matrice. Acest lucru se poate face folosind funcția standard find(), care ia ca argument o condiție conform căreia sunt găsite elementele necesare, de exemplu:

a = ;
b1 = găsi (a == 2); % b1 = 4 – indicele elementului 2
b2 = find(a ~= 2); % b2 = – indici fără 2
b3 = find(a > 3); % b3 =

În exemplul dat, simbolul „==” înseamnă verificarea egalității, iar simbolul „~=” verifică inegalitatea valorilor elementelor vectorului a. Acești operatori vor fi descriși mai detaliat în secțiunea Operatori condiționali.

O altă funcție utilă pentru lucrul cu vectori și matrice este funcția mean() pentru calcularea mediei aritmetice, care funcționează după cum urmează:

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

Deci, în lecția anterioară ne-am uitat la regulile de adunare și scădere a matricelor. Acestea sunt operații atât de simple, încât majoritatea studenților le înțeleg literalmente de la bun început.

Cu toate acestea, te bucuri devreme. Freebie-ul s-a terminat - să trecem la înmulțire. Vă avertizez imediat: înmulțirea a două matrici nu înseamnă deloc înmulțirea numerelor în celule cu aceleași coordonate, așa cum ați putea crede. Totul este mult mai distractiv aici. Și va trebui să începem cu definiții preliminare.

Matrici potrivite

Una dintre cele mai importante caracteristici ale unei matrice este dimensiunea acesteia. Am vorbit deja despre asta de o sută de ori: notația $A=\left[ m\times n \right]$ înseamnă că matricea are exact $m$ rânduri și $n$ coloane. Am discutat deja despre cum să nu confundăm rândurile cu coloanele. Altceva este important acum.

Definiţie. Matrici de forma $A=\left[ m\times n \right]$ și $B=\left[ n\times k \right]$, în care numărul de coloane din prima matrice coincide cu numărul de rânduri în al doilea, sunt numite consistente.

Încă o dată: numărul de coloane din prima matrice este egal cu numărul de rânduri din a doua! De aici obținem două concluzii simultan:

  1. Ordinea matricilor este importantă pentru noi. De exemplu, matricele $A=\left[ 3\times 2 \right]$ și $B=\left[ 2\times 5 \right]$ sunt consistente (2 coloane în prima matrice și 2 rânduri în a doua) , dar invers — matricele $B=\left[ 2\times 5 \right]$ și $A=\left[ 3\times 2 \right]$ nu mai sunt consistente (5 coloane din prima matrice nu sunt 3 rânduri în al doilea).
  2. Consistența poate fi verificată cu ușurință notând toate dimensiunile una după alta. Folosind exemplul din paragraful anterior: „3 2 2 5” - la mijloc aceleasi numere, deci matricele sunt consistente. Dar „2 5 3 2” nu sunt consecvenți, deoarece există numere diferite la mijloc.

În plus, Captain Obviousness pare să sugereze că matricele pătrate de aceeași dimensiune $\left[ n\times n \right]$ sunt întotdeauna consistente.

În matematică, când ordinea de enumerare a obiectelor este importantă (de exemplu, în definiția discutată mai sus, ordinea matricelor este importantă), vorbim adesea despre perechi ordonate. I-am întâlnit la școală: cred că este o idee deloc că coordonatele $\left(1;0 \right)$ și $\left(0;1 \right)$ definesc puncte diferite pe plan.

Deci: coordonatele sunt și perechi ordonate care sunt formate din numere. Dar nimic nu te împiedică să faci o astfel de pereche din matrice. Apoi putem spune: „O pereche ordonată de matrice $\left(A;B \right)$ este consecventă dacă numărul de coloane din prima matrice se potrivește cu numărul de rânduri din a doua.”

Şi ce dacă?

Definiţia multiplication

Luați în considerare două matrici consistente: $A=\left[ m\times n \right]$ și $B=\left[ n\times k \right]$. Și definim operația de înmulțire pentru ei.

Definiţie. Produsul a două matrice potrivite $A=\left[ m\times n \right]$ și $B=\left[ n\times k \right]$ este noua matrice $C=\left[ m\times k \ dreapta] $, ale căror elemente sunt calculate folosind formula:

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

Un astfel de produs este notat în modul standard: $C=A\cdot B$.

Cei care văd această definiție pentru prima dată au imediat două întrebări:

  1. Ce fel de joc aprig este acesta?
  2. De ce este atât de greu?

Ei bine, primul lucru. Să începem cu prima întrebare. Ce înseamnă toți acești indici? Și cum să nu faceți greșeli când lucrați cu matrici reale?

În primul rând, observăm că linia lungă pentru calcularea $((c)_(i;j))$ (am pus în special un punct și virgulă între indici pentru a nu încurca, dar nu este nevoie să le pun la toate - eu însumi m-am săturat să scriu formula în definiție) de fapt se rezumă la o regulă simplă:

  1. Luați $i$-lea rând din prima matrice;
  2. Luați $j$-a coloană din a doua matrice;
  3. Obținem două șiruri de numere. Înmulțim elementele acestor secvențe cu aceleași numere și apoi adăugăm produsele rezultate.

Acest proces este ușor de înțeles din imagine:


Schema de înmulțire a două matrici

Încă o dată: fixăm rândul $i$ în prima matrice, coloana $j$ în a doua matrice, înmulțim elemente cu aceleași numere și apoi adunăm produsele rezultate - obținem $((c)_(ij))$ . Și așa mai departe pentru toți $1\le i\le m$ și $1\le j\le k$. Aceste. Vor fi de $m\ori k$ de astfel de „perversiuni” în total.

De fapt, am întâlnit deja înmulțirea matriceală în programa școlară, doar într-o formă mult redusă. Să fie dați vectorii:

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

Apoi produsul lor scalar va fi exact suma produselor pe perechi:

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

Practic, când copacii erau mai verzi și cerul mai strălucitor, am înmulțit pur și simplu vectorul rând $\overrightarrow(a)$ cu vectorul coloană $\overrightarrow(b)$.

Nimic nu s-a schimbat astăzi. Doar că acum există mai mulți dintre acești vectori rând și coloană.

Dar destulă teorie! Să ne uităm la exemple reale. Și să începem cu cel mai simplu caz - matrici pătrate.

Înmulțirea cu matrice pătrată

Sarcina 1. Faceți înmulțirea:

\[\left[ \begin(array)(*(35)(r)) 1 & 2 \\ -3 & 4 \\\end(array) \right]\cdot \left[ \begin(array)(* (35)(r)) -2 și 4 \\ 3 și 1 \\\end(matrice) \right]\]

Soluţie. Deci, avem două matrice: $A=\left[ 2\times 2 \right]$ și $B=\left[ 2\times 2 \right]$. Este clar că sunt consistente (matricele pătrate de aceeași dimensiune sunt întotdeauna consistente). Prin urmare, efectuăm înmulțirea:

\[\begin(align) & \left[ \begin(array)(*(35)(r)) 1 & 2 \\ -3 & 4 \\\end(array) \right]\cdot \left[ \ begin(array)(*(35)(r)) -2 & 4 \\ 3 & 1 \\\end(array) \right]=\left[ \begin(array)(*(35)(r)) 1\cdot \left(-2 \right)+2\cdot 3 & 1\cdot 4+2\cdot 1 \\ -3\cdot \left(-2 \right)+4\cdot 3 & -3\cdot 4+4\cdot 1 \\\end(array) \right]= \\ & =\left[ \begin(array)(*(35)(r)) 4 & 6 \\ 18 & -8 \\\ sfârşit(matrice)\dreapta]. \end(align)\]

Asta este!

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

Sarcina 2. Faceți înmulțirea:

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

Soluţie. Din nou, matrici consistente, deci efectuăm următoarele acțiuni:\[\]

\[\begin(align) & \left[ \begin(matrix) 1 & 3 \\ 2 & 6 \\\end(matrix) \right]\cdot \left[ \begin(array)(*(35)( ) r)) 9 & 6 \\ -3 & -2 \\\end(array) \right]=\left[ \begin(array)(*(35)(r)) 1\cdot 9+3\cdot \ stânga(-3 \right) & 1\cdot 6+3\cdot \left(-2 \right) \\ 2\cdot 9+6\cdot \left(-3 \right) & 2\cdot 6+6 \ cdot \left(-2 \right) \\\end(array) \right]= \\ & =\left[ \begin(matrix) 0 & 0 \\ 0 & 0 \\\end(matrix) \right ] . \end(align)\]

După cum puteți vedea, rezultatul este o matrice plină cu zerouri

Răspuns: $\left[ \begin(matrix) 0 & 0 \\ 0 & 0 \\\end(matrix) \right]$.

Din exemplele de mai sus este evident că înmulțirea matricelor nu este o operație atât de complicată. Cel puțin pentru matrici pătrate 2 pe 2.

În procesul de calcule, am compilat o matrice intermediară, în care am descris direct ce numere sunt incluse într-o anumită celulă. Este exact ceea ce trebuie făcut atunci când rezolvați probleme reale.

Proprietățile de bază ale produsului matricei

Pe scurt. Înmulțirea matricei:

  1. Necomutativ: $A\cdot B\ne B\cdot A$ în cazul general. Există, desigur, matrice speciale pentru care egalitatea $A\cdot B=B\cdot A$ (de exemplu, dacă $B=E$ este matricea de identitate), dar în marea majoritate a cazurilor acest lucru nu funcționează ;
  2. Asociativ: $\left(A\cdot B \right)\cdot C=A\cdot \left(B\cdot C \right)$. Nu există opțiuni aici: matricele adiacente pot fi multiplicate fără să vă faceți griji cu privire la ceea ce este în stânga și în dreapta acestor două matrici.
  3. Distributiv: $A\cdot \left(B+C \right)=A\cdot B+A\cdot C$ și $\left(A+B \right)\cdot C=A\cdot C+B\cdot C $ (din cauza necomutativității produsului, este necesar să se specifice separat distributivitatea la dreapta și la stânga.

Și acum - totul este la fel, dar mai detaliat.

Înmulțirea prin matrice este în multe privințe similară cu înmulțirea clasică a numerelor. Dar există diferențe, dintre care cea mai importantă este aceea Înmulțirea prin matrice este, în general, necomutativă.

Să ne uităm din nou la matricele din problema 1. Știm deja produsul lor direct:

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

Dar dacă schimbăm matricele, obținem un rezultat complet diferit:

\[\left[ \begin(array)(*(35)(r)) -2 & 4 \\ 3 & 1 \\\end(array) \right]\cdot \left[ \begin(array)(* (35)(r)) 1 & 2 \\ -3 & 4 \\\end(array) \right]=\left[ \begin(matrix) -14 & 4 \\ 0 & 10 \\\end(matrix) )\corect]\]

Se pare că $A\cdot B\ne B\cdot A$. În plus, operația de înmulțire este definită doar pentru matricele consistente $A=\left[ m\times n \right]$ și $B=\left[ n\times k \right]$, dar nimeni nu a garantat că acestea vor rămâne consistente dacă sunt schimbate. De exemplu, matricele $\left[ 2\times 3 \right]$ și $\left[ 3\times 5 \right]$ sunt destul de consistente în ordinea specificată, dar aceleași matrici $\left[ 3\times 5 \right] $ și $\left[ 2\time 3 \right]$ scrise în ordine inversă nu mai sunt consecvente. Trist.:(

Printre matricele pătrate de o mărime dată $n$ vor exista întotdeauna acelea care dau același rezultat atât atunci când sunt înmulțite direct, cât și în ordine inversă. Cum să descrii toate astfel de matrici (și câte există în general) este un subiect pentru o lecție separată. Nu vom vorbi despre asta azi :)

Cu toate acestea, înmulțirea matriceală este asociativă:

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

Prin urmare, atunci când trebuie să înmulțiți mai multe matrici la rând simultan, nu este deloc necesar să o faceți imediat: este foarte posibil ca unele matrici adiacente, atunci când sunt înmulțite, să dea un rezultat interesant. De exemplu, o matrice zero, ca în problema 2 discutată mai sus.

În problemele reale, cel mai adesea trebuie să înmulțim matrici pătrate de dimensiune $\left[ n\times n \right]$. Setul tuturor acestor matrici este notat cu $((M)^(n))$ (adică, intrările $A=\left[ n\times n \right]$ și \ înseamnă același lucru) și va conțin în mod necesar matricea $E$, care se numește matrice de identitate.

Definiţie. O matrice de identitate de mărimea $n$ este o matrice $E$ astfel încât pentru orice matrice pătrată $A=\left[ n\times n \right]$ egalitatea este valabilă:

O astfel de matrice arată întotdeauna la fel: există unele pe diagonala sa principală și zerouri în toate celelalte celule.

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

Cu alte cuvinte, dacă trebuie să înmulțiți o matrice cu suma altor două, puteți să o înmulțiți cu fiecare dintre aceste „alte două” și apoi să adăugați rezultatele. În practică, de obicei trebuie să facem operația opusă: observăm aceeași matrice, o scoatem din paranteze, facem adunări și astfel ne simplificăm viața :)

Notă: pentru a descrie distributivitatea, a trebuit să scriem două formule: unde suma este în al doilea factor și unde suma este în primul. Acest lucru se întâmplă tocmai pentru că înmulțirea matricelor este necomutativă (și, în general, în algebra necomutativă există o mulțime de lucruri distractive care nici măcar nu-ți vin în minte când lucrezi cu numere obișnuite). Și dacă, de exemplu, trebuie să notați această proprietate într-un examen, atunci asigurați-vă că scrieți ambele formule, altfel profesorul se poate supăra puțin.

Bine, toate acestea au fost basme despre matrici pătrate. Dar cele dreptunghiulare?

Cazul matricelor dreptunghiulare

Dar nimic - totul este la fel ca la cele pătrate.

Sarcina 3. Faceți înmulțirea:

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

Soluţie. Avem două matrice: $A=\left[ 3\times 2 \right]$ și $B=\left[ 2\times 2 \right]$. Să notăm numerele care indică dimensiunile pe rând:

După cum puteți vedea, cele două numere centrale coincid. Aceasta înseamnă că matricele sunt consistente și pot fi multiplicate. Mai mult, la ieșire obținem matricea $C=\left[ 3\times 2 \right]$:

\[\begin(align) & \left[ \begin(matrix) \begin(matrix) 5 \\ 2 \\ 3 \\\end(matrix) & \begin(matrix) 4 \\ 5 \\ 1 \\ \end(matrice) \\\end(matrice) \right]\cdot \left[ \begin(array)(*(35)(r)) -2 & 5 \\ 3 & 4 \\\end(array) \right]=\left[ \begin(array)(*(35)(r)) 5\cdot \left(-2 \right)+4\cdot 3 & 5\cdot 5+4\cdot 4 \\ 2 \cdot \left(-2 \right)+5\cdot 3 & 2\cdot 5+5\cdot 4 \\ 3\cdot \left(-2 \right)+1\cdot 3 & 3\cdot 5+1 \cdot 4 \\\end(array) \right]= \\ & =\left[ \begin(array)(*(35)(r)) 2 & 41 \\ 11 & 30 \\ -3 & 19 \ \\end(matrice) \dreapta]. \end(align)\]

Totul este clar: matricea finală are 3 rânduri și 2 coloane. Destul de $=\left[ 3\times 2 \right]$.

Răspuns: $\left[ \begin(array)(*(35)(r)) \begin(array)(*(35)(r)) 2 \\ 11 \\ -3 \\\end(array) & \begin(matrix) 41 \\ 30 \\ 19 \\\end(matrix) \\\end(matrice) \right]$.

Acum să ne uităm la una dintre cele mai bune sarcini de antrenament pentru cei care abia încep să lucreze cu matrice. În ea, nu trebuie doar să înmulțiți vreo două tăblițe, ci mai întâi să determinați: este permisă o astfel de înmulțire?

Problema 4. Găsiți toate produsele posibile în perechi ale matricelor:

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

Soluţie. Mai întâi, să notăm dimensiunile matricelor:

\;\ B=\left[ 4\times 2 \right];\ C=\left[ 2\times 2 \right]\]

Constatăm că matricea $A$ poate fi reconciliată doar cu matricea $B$, deoarece numărul de coloane al lui $A$ este 4 și numai $B$ are acest număr de rânduri. Prin urmare, putem găsi produsul:

\\cdot \left[ \begin(array)(*(35)(r)) 0 & 1 \\ 2 & 0 \\ 0 & 3 \\ 4 & 0 \\\end(array) \right]=\ stânga[ \begin(array)(*(35)(r))-10 & 7 \\ 10 & 7 \\\end(array) \right]\]

Sugerez cititorului să parcurgă pașii intermediari în mod independent. Voi observa doar că este mai bine să determinați dimensiunea matricei rezultate în avans, chiar înainte de orice calcul:

\\cdot \left[ 4\times 2 \right]=\left[ 2\times 2 \right]\]

Cu alte cuvinte, pur și simplu înlăturăm coeficienții de „tranzit” care asigurau consistența matricelor.

Ce alte variante sunt posibile? Desigur, se poate găsi $B\cdot A$, deoarece $B=\left[ 4\times 2 \right]$, $A=\left[ 2\times 4 \right]$, deci perechea ordonată $\ left(B ;A \right)$ este consecvent, iar dimensiunea produsului va fi:

\\cdot \left[ 2\times 4 \right]=\left[ 4\times 4 \right]\]

Pe scurt, rezultatul va fi o matrice $\left[ 4\times 4 \right]$, ai cărei coeficienți pot fi calculați cu ușurință:

\\cdot \left[ \begin(array)(*(35)(r)) 1 & -1 & 2 & -2 \\ 1 & 1 & 2 & 2 \\\end(array) \right]=\ stânga[ \begin(array)(*(35)(r))1 & 1 & 2 & 2 \\ 2 & -2 & 4 & -4 \\ 3 & 3 & 6 & 6 \\ 4 & -4 & 8 și -8 \\\end(matrice) \right]\]

Evident, puteți fi de acord și cu $C\cdot A$ și $B\cdot C$ - și asta este tot. Prin urmare, notăm pur și simplu produsele rezultate:

A fost usor :)

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

În general, vă recomand să faceți singur această sarcină. Și încă o sarcină similară care este în temele pentru acasă. Aceste gânduri aparent simple vă vor ajuta să exersați toate etapele cheie ale înmulțirii matriceale.

Dar povestea nu se termină aici. Să trecem la cazuri speciale de înmulțire :)

Vectori rând și vectori coloană

Una dintre cele mai comune operații cu matrice este înmulțirea cu o matrice care are un rând sau o coloană.

Definiţie. Un vector coloană este o matrice de dimensiune $\left[ m\times 1 \right]$, adică. format din mai multe rânduri și o singură coloană.

Un vector rând este o matrice de dimensiune $\left[ 1\times n \right]$, adică. format dintr-un rând și mai multe coloane.

De fapt, am întâlnit deja aceste obiecte. De exemplu, un vector tridimensional obișnuit din stereometrie $\overrightarrow(a)=\left(x;y;z \right)$ nu este altceva decât un vector rând. Din punct de vedere teoretic, nu există aproape nicio diferență între rânduri și coloane. Trebuie doar să fiți atenți atunci când vă coordonați cu matricele multiplicatoare din jur.

Sarcina 5. Faceți înmulțirea:

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

Soluţie. Aici avem produsul matricelor potrivite: $\left[ 3\times 3 \right]\cdot \left[ 3\times 1 \right]=\left[ 3\times 1 \right]$. Haideti sa gasim aceasta piesa:

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

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

Sarcina 6. Faceți înmulțirea:

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

Soluţie. Din nou totul este consecvent: $\left[ 1\times 3 \right]\cdot \left[ 3\times 3 \right]=\left[ 1\times 3 \right]$. Numărăm produsul:

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

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

După cum puteți vedea, atunci când înmulțim un vector rând și un vector coloană cu o matrice pătrată, rezultatul rezultă întotdeauna într-un rând sau coloană de aceeași dimensiune. Acest fapt are multe aplicații - de la rezolvare ecuații liniare la tot felul de transformări de coordonate (care în cele din urmă se reduc și la sisteme de ecuații, dar să nu vorbim despre lucruri triste).

Cred că totul era evident aici. Să trecem la ultima parte a lecției de astăzi.

Exponentiarea matricei

Dintre toate operațiile de înmulțire, exponentiația merită o atenție specială - atunci înmulțim același obiect de mai multe ori. Matricele nu fac excepție, de asemenea, pot fi ridicate la diferite puteri.

Astfel de lucrări sunt întotdeauna convenite:

\\cdot \left[ n\times n \right]=\left[ n\times n \right]\]

Și sunt desemnate exact în același mod ca grade obișnuite:

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

La prima vedere, totul este simplu. Să vedem cum arată asta în practică:

Sarcina 7. Ridicați matricea la puterea indicată:

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

Soluţie. Ei bine, hai să construim. Mai întâi să-l pătram:

\[\begin(align) & ((\left[ \begin(matrix) 1 & 1 \\ 0 & 1 \\\end(matrix) \right])^(2))=\left[ \begin(matrix ) 1 & 1 \\ 0 & 1 \\\end(matrice) \right]\cdot \left[ \begin(matrix) 1 & 1 \\ 0 & 1 \\\end(matrice) \right]= \\ & =\left[ \begin(array)(*(35)(r)) 1\cdot 1+1\cdot 0 & 1\cdot 1+1\cdot 1 \\ 0\cdot 1+1\cdot 0 & 0\cdot 1+1\cdot 1 \\\end(array) \right]= \\ & =\left[ \begin(array)(*(35)(r)) 1 & 2 \\ 0 & 1 \ \\end(matrice) \right] \end(align)\]

\[\begin(align) & ((\left[ \begin(matrix) 1 & 1 \\ 0 & 1 \\\end(matrix) \right])^(3))=((\left[ \begin (matrice) 1 & 1 \\ 0 & 1 \\\end(matrix) \right])^(3))\cdot \left[ \begin(matrix) 1 & 1 \\ 0 & 1 \\\end( matrice) \right]= \\ & =\left[ \begin(array)(*(35)(r)) 1 & 2 \\ 0 & 1 \\\end(array) \right]\cdot \left[ \begin(matrix) 1 & 1 \\ 0 & 1 \\\end(matrix) \right]= \\ & =\left[ \begin(array)(*(35)(r)) 1 & 3 \\ 0 și 1 \\\end(matrice) \right] \end(align)\]

Asta e tot. :)

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

Problema 8. Ridicați matricea la puterea indicată:

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

Soluţie. Nu plânge acum de faptul că „diploma este prea mare”, „lumea nu este corectă” și „profesorii și-au pierdut complet țărmurile”. De fapt, este ușor:

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

Observați că în a doua linie am folosit asociativitatea înmulțirii. De fapt, l-am folosit în sarcina anterioară, dar era implicit acolo.

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

După cum puteți vedea, nu este nimic complicat în ridicarea unei matrice la o putere. Ultimul exemplu poate fi rezumat:

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

Acest fapt este ușor de demonstrat prin inducție matematică sau înmulțire directă. Cu toate acestea, nu este întotdeauna posibil să prindem astfel de modele atunci când ridicați la o putere. Prin urmare, fiți atenți: adesea înmulțirea mai multor matrici „la întâmplare” se dovedește a fi mai ușoară și mai rapidă decât a căuta un fel de tipare.

În general, nu căutați un sens mai înalt acolo unde nu există. În concluzie, să luăm în considerare exponențiarea unei matrice mai mari - cât $\left[ 3\times 3 \right]$.

Problema 9. Ridicați matricea la puterea indicată:

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

Soluţie. Să nu căutăm modele. Lucrăm înainte:

\[((\left[ \begin(matrix) 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\\end(matrix) \right])^(3))=(( \left[ \begin(matrix) 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\\end(matrix) \right])^(2))\cdot \left[ \begin (matrice)0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\\end(matrice) \right]\]

Mai întâi, să punem la pătrat această matrice:

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

Acum hai să-l cubăm:

\[\begin(align) & ((\left[ \begin(matrix) 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\\end(matrix) \right])^( 3))=\left[ \begin(array)(*(35)(r)) 2 & 1 & 1 \\ 1 & 2 & 1 \\ 1 & 1 & 2 \\\end(array) \right] \cdot \left[ \begin(matrix) 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\\end(matrix) \right]= \\ & =\left[ \begin( matrice)(*(35)(r)) 2 și 3 și 3 \\ 3 și 2 și 3 \\ 3 și 3 și 2 \\\end(matrice) \right] \end(align)\]

Asta este. Problema este rezolvată.

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

După cum puteți vedea, volumul calculelor a devenit mai mare, dar sensul nu s-a schimbat deloc.

Aceasta încheie lecția. Data viitoare vom avea în vedere operația inversă: folosind produsul existent vom căuta factorii originali.

După cum probabil ați ghicit deja, vom vorbi despre matrice inversăși metodele de a-l găsi.

Definiția 1

Produsul matriceal (C = AB) este o operație numai pentru matricele potrivite A și B, în care numărul de coloane ale matricei A este egal cu numărul de rânduri ale matricei B:

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

Exemplul 1

Matrici date:

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

Matricea C, ale cărei elemente c i j sunt calculate folosind următoarea formulă:

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

Exemplul 2

Să calculăm produsele AB=BA:

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

Rezolvare folosind regula de înmulțire a matricei:

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

Produsul A B și B A se găsesc, dar sunt matrici dimensiuni diferite: A B nu este egal cu B A.

Proprietățile înmulțirii matriceale

Proprietățile înmulțirii matriceale:

  • (A B) C = A (B C) - asociativitatea înmulțirii matriceale;
  • A (B + C) = A B + A C - distributivitatea înmulțirii;
  • (A + B) C = A C + B C - distributivitatea înmulțirii;
  • λ (A B) = (λ A) B
Exemplul 1

Să verificăm proprietatea nr. 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.

Exemplul 2

Să verificăm proprietatea nr. 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.

Produsul a trei matrici

Produsul a trei matrici A B C se calculează în două moduri:

  • găsiți A B și înmulțiți cu C: (A B) C;
  • sau mai întâi găsiți B C și apoi înmulțiți A (B C).
Exemplul 3

Înmulțiți matrice în 2 moduri:

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

Algoritmul acțiunilor:

  • găsiți produsul a 2 matrici;
  • apoi găsiți din nou produsul a 2 matrici.

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 .

Folosim formula 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

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

Înmulțirea unei matrice cu un număr

Definiția 2

Produsul matricei A cu numărul k este matricea B = A k de aceeași dimensiune, care se obține din cea originală prin înmulțirea tuturor elementelor sale cu un număr dat:

b i, j = k × a i, j

Proprietățile înmulțirii unei matrice cu un număr:

  • 1 × A = A
  • 0 × A = matrice zero
  • k (A + B) = k A + k B
  • (k + n) A = k A + n A
  • (k × n) × A = k (n × A)
Exemplul 4

Să găsim produsul matricei A = 4 2 9 0 prin 5.

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

Înmulțirea unei matrice cu un vector

Definiția 3

Pentru a găsi produsul dintre o matrice și un vector, trebuie să înmulțiți folosind regula „rând cu coloană”:

  • dacă înmulțiți o matrice cu un vector coloană, numărul de coloane din matrice trebuie să se potrivească cu numărul de rânduri din vectorul coloană;
  • Rezultatul înmulțirii unui vector coloană este doar un vector coloană:

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 + ⋯ a 12 × b + 2 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

  • dacă înmulțiți o matrice cu un vector rând, atunci matricea înmulțită trebuie să fie exclusiv un vector coloană, iar numărul de coloane trebuie să se potrivească cu numărul de coloane din vectorul rând:

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

Exemplul 5

Să găsim produsul dintre matricea A și vectorul coloană 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

Exemplul 6

Să găsim produsul dintre matricea A și vectorul rând 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

Răspuns: A B = - 3 3 0 6 - 2 2 0 4 0 0 0 0 - 1 1 0 2

Dacă observați o eroare în text, vă rugăm să o evidențiați și să apăsați Ctrl+Enter


Fiecare vector poate fi gândit ca o matrice cu o singură coloană sau cu un singur rând. Vom numi o matrice cu o singură coloană un vector coloană, iar o matrice cu un singur rând un vector rând.

Dacă A este o matrice de mărimea m*n, atunci vectorul coloană b are dimensiunea n, iar vectorul rând b are dimensiunea m.

Astfel, pentru a înmulți o matrice cu un vector, trebuie să considerăm vectorul ca un vector coloană. Când înmulțiți un vector cu o matrice, acesta trebuie tratat ca un vector rând.

Matricea de multiplicare

la un vector complex

Obținem rezultatul

După cum puteți vedea, cu dimensiunea vectorială neschimbată, putem avea două soluții.

Aș dori să vă atrag atenția asupra faptului că matricea în prima și a doua versiune, în ciuda aceleasi valori, complet diferit (au dimensiuni diferite)

În primul caz, vectorul este considerat ca o coloană și apoi este necesar înmulțiți matricea cu vector, iar în al doilea caz avem un vector rând și apoi avem produsul dintre un vector și o matrice.

Acest bot înmulțește, de asemenea, vectori și matrice care au valori complexe. Bazat pe un calculator mai complet: Înmulțirea matricei cu valori complexe online

Proprietăți ale înmulțirii matrice-vector

Matrice

Coloană vectorială

Vector rând

Număr arbitrar

1. Produsul unei matrice prin suma vectorilor coloanei este egal cu suma produselor matricei prin fiecare dintre vectori

2. Produsul sumei vectorilor rând și a matricei este egal cu suma produselor vectorilor și a matricei

3. Factorul comun al unui vector poate fi luat în afara produsului unei matrice de un vector/vector de o matrice

4. Produsul unui vector rând și produsul dintre o matrice și un vector coloană este echivalent cu produsul dintre produsul unui vector rând și o matrice și un vector coloană.



Publicații pe această temă