Sunteți pe pagina 1din 10

CURS 11

CURS 11 ECNI
CALCULE CU MATRICI
1. MANIPULAREA MATRICELOR
n multe domenii formularea matriceal a problemelor a condus la simplificarea metodelor de rezolvare
i a fcut posibil extinderea unor soluii deja cunoscute la domenii noi.
1.1. Manipularea matricelor
MATLAB-ul ofer urmtoarele funcii pentru manipularea matricelor:
diag

Creeaz sau extrage diagonalele matricei;

fliplr

Rotete matricea n jurul axei verticale (inverseaz ordinea coloanelor);

flipud

Rotete matricea n jurul axei orizontale (inverseaz ordinea liniilor);

reshape

Schimb dimensiunile matricei (redimensioneaz matricea);

rot90

Rotete matricea cu un multiplu de 90 de grade;

tril

Extrage matricea inferior triunghiular dintr-o matrice;

triu

Extrage matricea superior triunghiular dintr-o matrice;

Specific indicii, rearanjeaz sau decupeaz o submatrice.

1.1.1. Extragerea submatricelor prin indici


Elementele individuale ale unei matrice se apeleaz cu numele acesteia, urmat de doi indici, cuprini
ntre paranteze rotunde i separai de virgul. Primul indice semnific linia, iar al doilea coloana n care
se gsete elementul apelat. De exemplu instruciunea:
A(3,3) = A(1,3) + A(3,1)
are ca rezultat nlocuirea elementului din linia 3 i coloana 3, A(3,3), al matricei A, cu suma dintre
elementul liniei 1 - coloanei 3, A(1,3), si elementul din linia 3 - coloana 1.
Indicii pot fi scalari sau vectori; indicii vectori permit definirea unor submatrice, procedeu prin care se
pot referi pri disparate dintr-o matrice. Spre exemplu, instruciunea:
B=M(1:5,3)
extrage subrnatricea B de dimensiunea 5x1, constnd din primele 5 elemente din coloana a 3-a a
matricei M. De asemenea, instruciunea:
C=M(1:5,7:10)
1

Elemente de calcul numeric ingineresc

extrage submatricea C cu dimensiunea 5x4, constituit din elementele primelor 5 linii (liniile 1-5) i ale
ultimelor 4 coloane (coloanele 7-10) ale matricei M.
Utilizarea numai a semnului dou puncte :" n locul indicilor pentru linii sau pentru coloane,
presupune considerarea tuturor elementelor pe linii sau respectiv pe coloane. Astfel, instruciunea:
D=M(:,3) extrage din matricea M, o submatrice D care conine toate liniile (datorit semnului dou
puncte) din coloana a 3-a, n timp ce instruciunea: E=M(1:5,:) extrage submatricea E care conine
liniile de la 1 la 5 ale tuturor coloanelor matricei M.
Crearea matricelor mari, precum i manipularea acestora se face cu mult flexibilitate dac se
utilizeaz indici vectori. Spre exemplu, instruciunea A(:,[3,5,7] = B(:,1:3) nlocuiete coloanele 3, 5 i
10 ale matricei A cu primele 3 coloane ale matricei B. }n general, dac indicii x i y sunt vectori cu
componente ntregi, atunci instruciunea:
B=A(x,y)
creeaz o submatrice B, care conine elementele din liniile x ale coloanelor y ale matricei A. Inversarea
coloanelor unei matrice A se face cu instruciunea : A=A(:,n:-1:1)
iar inversarea liniilor se face cu instruciunea : A=A(n:-1:1,:)
De o mare importan este utilizarea fr indici, care are ca efect transformarea matricei ntr-un vector
coloan, citind coloanele una dup alta. Astfel:
A = [1 2;3 4]; b = A(:) are ca rezultat transformarea unei matrice A ntr-un vector coloan:
Dac n partea stng a expresiei este asignat o instruciune de forma A(:), matricea A trebuie deja s
existe dintr-o utilizare anterioar. Spre exemplu, secvena:
A = [1 2;3 4] ; A(:) = 11:14
returneaz matricea:
A=
11

13

12

14

Pentru extragerea vectorilor cu elemente decupate din ali vectori, se folosesc formele:
j:k
j:i:k

- selecteaz elementele [j, j+1,.....,k] ale unui vector; dac j>k vectorul returnat este gol.
- selecteaz elementele [j, j+i, j+2i, ...,k] ale unui vector; vectorul rezultat este gol dac i>0 si
j>k sau dac i<0 i j<k.

n cazul selectrii liniilor sau coloanelor matricelor, se folosesc formele:


A(:,j)

- selecteaz coloana j a matricei A;

A(i,:)

- selecteaz linia i a matricei A;

CURS 11

A(:,:)

- selecteaz ntreaga matrice A;

A(j:k)

- selecteaz elementele A(j), A(j+1),..., A(k) ale vectorului A;

A(:,j:k) - selecteaz toate liniile i coloanele de la j la k, A(:,j), A(:,j+1),...,A(:,k), ale matricei A;


A(:)

- selecteaz toate elementele matricei A, privite ca o singur coloan (ncepnd cu prima).

Exemplul 1. S se selecteze elementele din poziiile 3-5 i 2,4,6 ale vectorului: A=[2 4 7 3 5 1 0]. Cu
secvena MATLAB:
A=[2 4 7 3 5 l 0]; B=A(3:5) ; C=A(2:2:6)
Exemplul 2. Generai un vector C prin ntreeserea elementelor vectorilor A=[1 3 5 7] i B=[2 4 6 8].
Cu secvena MATLAB:
A=[l 3 5 7] ; B=[2 4 6 8];
n=length(A) +length(B); C(l:2:n)=A; C(2:2:n)=B se obine rezultatul:
C=[1

1
2

Exemplul 3. Fie A = 3

4
5

8]

2 3 4 5 6
3 4 5 6 1
4 5 6 1 2

5 6 1 2 3
6 1 2 3 4

S se scrie instruciunile care permit selectarea din matricea A a:


- liniei a 2-a;
- coloanei a 3-a;
- submatricei format din liniile 1-2 i coloanele 4-6;
- submatricei format din liniile 1, 4 i coloanele 2, 4,5.

1.1.2. Extragerea submatricelor prin vectori cu elemente 0-1


Vectorii cu elemente 0 i 1, creai de operatorii logici sau relaionali, au proprieti deosebite, care pot
conduce la scrierea unor programe foarte compacte.
Dac A este o matrice mxn i L un vector de lungime m, cu elemente 0 i 1, instruciunea:
B=A(L,:)
returneaz n matricea B toate elementele din liniile matricei A pentru care elementul corespunztor ca
3

Elemente de calcul numeric ingineresc

poziie din vectorul L este 1. Prin acest procedeu se extrage o submatrice cu un vector returnat de
funciile logice. De exemplu, dac:
L=[0 1 0 1 1] instruciunea B=A(L,:) elimin liniile 1 si 3 ale matricei A.
Pentru eliminarea coloanelor expresia de mai sus se transform n:
C=A(:,L). Numrul de elemente ale lui L trebuie s fie egale cu numrul de coloane ale matricei A.
Exemplul 4. S se extrag dintr-o matrice X toate liniile care au elementul din coloana a 3-a mai mare
sau egal cu 1. Cu secvena MATLAB:
X=[0 1 1;7 0 -5;0 5 8]; L = X(:,3}>=1; Y = X (L, :)
1.1.3. Asamblarea matricelor mari
O matrice poate fi definit pe baza unor alte matrice de dimensiuni inferioare, ca n exemplul:
C = [A eye(4);ones(A) A^2]
Matricea C este compus din matricea A de dimensiunea 4x4, matricea identitate 4x4, matricea unitate
de dimensiunile matricei A i matricea A ridicat la ptrat. Matricele folosite n asamblare trebuie s fie
consistente ca dimensiuni, adic s determine blocuri care se integreaz compact n tabloul matricei
rezultat; n caz contrar se obin mesaje de eroare.
1.1.4. Redimensionarea unei matrice
Funcia reshape redimensioneaz o matrice A cu dimensiunea l x p ntr-o alt matrice B, cu
dimensiunea m x n. Pentru ca operaia de redimensionare s fie posibil este necesar ca matricea A s
aib acelai numr de elemente cu matricea B (l x p = m x n).
Se apeleaz cu sintaxa:
B=reshape(A, m, n)
Elementele matricei B - n ordinea succesiv a coloanelor i pe fiecare coloan de sus n jos - sunt
elementele matricei argument A (citite de sus n jos i de la stnga la dreapta).
Exemplul 5. S se redimensioneze matricea A cu dimensiunea 3x4 n matricea B cu dimensiunea 2x6.

1 4 7 10
A = 2 5 8 11 . Cu secvena MALAB:
3 6 9 12
A=[l 4 7 10;2 5 8 11;3 6 9 12]; B = reshape(A,2,6).
1.1.5. Rotirea matricei n jurul unei coloane sau linii
Funciile fliplr i flipud inverseaz ordinea liniilor sau coloanelor rnatricelor. Practic, ele realizeaz o
rotire a matricei n jurul unei coloane sau a unei linii. Se apeleaz cu sintaxele:
4

CURS 11

Y=flplr{X}

Z=flipud(X)

Funcia fliplr(X) returneaz matricea Y rezultat prin pivotarea matricei argument n jurul ultimei
coloane, operaie prin care aceasta devine prima coloan.
Funcia fiipud(X) returneaz matricea Z rezultat prin pivotarea matricei argument n jurul ultimei linii,
operaie prin care aceasta devine prima linie.
Exemplul 6. S se roteasc matricea A =[l 2 3; 4 5 6; 7 8 9]

n jurul unei coloane;

n jurul unei linii. Cu secvena MALAB:

1 .1 .6. Rotirea matricei cu multipli de 90 de grade n jurul unul element


Rotirea unei matrice cu multipli de 90 de grade, n sens trigonometric (contrar sensului orar) se face cu
funcia rot90; se apeleaz cu una dintre sintaxele:
B=rot90(A)

B=rot90(A,k)

Argumentul opional k este multiplul de 90 grade cu care se rotete matricea, n sens trigonometric,
dac este pozitiv i n sens contrar, dac este negativ.
1 2 3
Exemplul 7. S se roteasc n jurul unui element, matricea A = 4 5 6 cu 90 de grade n sens
7 8 9
trigonometric i cu 180 de grade n sens orar.
Cu secvena MALAB:
A=[l 2 3;4 5 6;7 8 9]; B=rot90(A,1);C=rot90(A,-2).
1.1.7. Matrice diagonale l triunghiulare
Crearea unei matrice diagonale se face cu funcia diag; se apeleaz cu una dintre sintaxele:
Y=diag(X)

Y=diag(X,k)

X este vectorul sau matricea asupra creia se opereaz, iar argumentul opional k indic diagonala
acesteia, cu urmtoarea semnificaie:
k=0, diagonala principal;
k>0, indic diagonala k de deasupra celei principale;
k<0, indic diagonala k de sub cea principal.
Crearea unei matrice superior i inferior triunghiulare, folosete funciile MATLAB tril i triu, apelate
cu una dintre sintaxele:
5

Elemente de calcul numeric ingineresc

Y=tril(X) Y=tril(X,k) Y=triu(X) Y=triu(X,k)


unde argumentele au aceeai semnificaie ca mai sus.
Dac X este un vector cu n componente, funcia diag(X,k) genereaz o matrice ptrat de ordinul
n+abs(k), cu elementele lui X pe diagonala k. Instruciunea diag(X) genereaz o matrice cu elementele
lui X pe diagonala principal.
Dac X este o matrice, funcia diag(X,k) extrage un vector coloan format din elementele diagonalei k
a matricei X. Apelat fr argumentul k, diag(X) extrage elementele diagonalei principale din matricea
X.
Funcia triu(X) extrage matricea superior triunghiular din matricea X, n timp ce triu(X,k) nlocuiete
cu zero toate elementele matricei X de sub diagonala k.
Funcia tril(X) extrage matricea inferior triunghiular din matricea X, n timp ce triu(X,k) nlocuiete
cu zero toate elementele matricei X de deasupra diagonalei k.
1 2 3
Exemplul 8. S se aplice funciile diag, tril i triu matricei X = 4 5 6
7 8 9
1.2. ANALIZ MATRICEAL
Acest subcapitol face referire la funciile MATLAB;
det

Calculeaz determinantul unei matrice;

inv

Calculeaz inversa unei matrice;

rank

Calculeaz rangul matricei;

trace

Calculeaz urma unei matrice;

cond

Estimeaz numrul de condiionare al matricei;

condest

Estimeaz numrul de condiionare al matricei;

norm

Calculeaz norma vectorului sau matricei;

rcond

Estimeaz numrul de condiionare al matricei;

1.2.1. Determinantul unei matrice


Calculul determinantului unei matrice se face cu funcia det, se apeleaz cu sintaxa:
D=det(X)
Exemplul 9. Calculai determinanii matricelor A=[1 2;3 4]; B=[1 2 3;4 5 6;7 8 9]

CURS 11

1.2.2.Inversa unei matrice


Prin definiie, inversa unei matrice ptrate A, este matricea A-1, care satisface relaia:
A*A-1 =A-1*A= I
unde I este matricea unitate. O matrice este inversabil numai dac determinantul acesteia este diferit
de zero, adic dac este nesingular.
Inversa unei matrice se calculeaz cu funcia inv, se apeleaz cu sintaxa: Y=inv(X)
Funcia se utilizeaz frecvent pentru rezolvarea sistemelor de ecuaii liniare Ax=b. Soluia sistemului
este x=inv(A)*b.
Exemplul 10. Calculai inversa matricei: A =[2 1;-1 1]
1.2.3. Rangul unei matrice
O matrice X nenul cu m linii i n coloane are rangul k, dac X are un minor nenul de ordin k, iar toi
minorii de ordin mai mare dect k (dac exist) sunt nuli. Rangul unei matrice este un scalar
1 k min ( m, n ) .
Rangul unei matrice reprezint numrul de linii sau coloane liniar independente ale acesteia i se
determin cu funcia rank ; se apeleaz cu una dintre sintaxele: r= rank(X), r= rank(X,tol)
Apelat cu sintaxa r=rank(X,tol), funcia rank returneaz numrul de valori singulare ale lui X, mai
mari dect parametrul opional tol.
Exemplul 11. S se determine rangul matricei A=[3 2 -5 4 ;3 -1 3 -3 ;3 5 -13 11]
1.2.4. Urma unei matrice
Urma matricei - suma elementelor de pe diagonala principal - se calculeaz cu funcia trace: se
apeleaz cu sintaxa: u=trace(A)
Exemplul 12. S se calculeze urma matricei A =[1 2 3; 4 5 6; 7 8 9]

Elemente de calcul numeric ingineresc

1.2.5. Calculul normelor vectorilor i matricelor


Norma este un scalar care d o msur a mrimir1 elementelor unei matrice sau vector. Normele
vectoribr i matricelor se calculeaz cu funcia norm; se apeleaz cu una dintre sintaxele:
n=nom?(X)

n=nomi(X,p)

n=no/m(X,'fro')

Pentru matrice sunt definite urmtoarele tipuri de norme:

norm(X) sau no/m(X,2) - retumeaz norma 2 (cea mai mare valoare singular a lui X):
||X||2=Vp(X*X)= max W
11. Calcule cu matrice
121
unde mulimea valorilor proprii ale matricei X - spectrul acesteia - s-a notat cu o(X), iar p(X) i A, sunt
raza spectral l valorile singulare ale matricei X. - retumeaz norma 1 a lui X (cea mai mare sum a
elementelor de pe coloan):
noim(X,ini) - retumeaz norma infinit a lui X (cea rnai mare sum a elementelor de pe linie):
fn
||XL= max V ~ KkN r?
\N
no/m(X,fro') - retumeaz norma-F (Frobenius), calculat cu relaia:
14= =
Pentru vectori sunt definite urmtoarele tipuri de norme:-no/m(V,p);
no/m(V)=norm(V,2);
/7o/m(V)/sqrt(N) - retumeaz valoarea rdcinii medii ptratice (RMS - valoarea efectiv);
V%
+...N
no/m(V,inf) - retumeaz valoarea maxim n modul;
UsksN
l - retumeaz valoarea minim n modul;
lV|L=minV,
8

CURS 11

ISksN
11.2.6. Condiionarea unei matrice
Importana cunoaterii'condiionrii unei matrice decurge din faptul c rezultatele obinute prin calcul
numeric corespund ntotdeauna unei probleme perturbate, ca urmare a efectelor erorilor de rotunjire.
Determinarea condiionrii are la baz teoria matematic a perturbaiilor. Se spune c o funcie f (x)
este ru-condiionat dac pentru un x' apropiat" de x, funcia f(x) difer mult" de f(x). Invers, o
funcie se spune c este bine-condiionat dac pentru un" x" apropiat" de x, funcia f (x") este
apropiat" de f(x). Trebuie remarcat c
Ax =
unde A i B sunt matrice ptratice de ordinul n, iar X este un scalar. Valorile lui X care satisfac ecuaia
se numesc valori proprii generalizate si valorile x corespunztoare sunt vectorii proprii generalizai.
Dac B este o matrice nesingular (det B * O, adic matricea este inversabil), problema calculului
valorilor i vectorilor proprii se reduce la la o problem standard de vabri proprii prin nlocuirea lui A
cu B"1 A, deoarece ecuaia este echivalent cu:
B'1 Ax =Xx
Calculul vectorilor i valorilor proprii generalizate se face cu funcia MATLAB eig; se apeleaz cu
sintaxa: V=e/g(A,B) - retumeaz un vector cane conine valorile proprii generalizate, dac A si B sunt
matrice ptratice,.
[V,Dj=eig(A1B) - retumeaz o matrice diagonal D ce conine valorile proprii generalizate si o matrice
V ale crei coloane sunt vectorii proprii corespunztori, astfel nct
Exemplul 11.3.1. Valorile i vectorii proprii ai matricei A =
O

O
l
-2
Cu secvena MATLAB:
A=[-2 l '0; l -[V, D]-eig (A) ' se obin rezultatele: V =
0.5000 -0.7071 -0.5000 0.7071 0.0000 0.7071 0.5000 0.7071 -0.5000
2 1; O l -2];
-0.5858

OO

-2.0000 O

Elemente de calcul numeric ingineresc

O
-3.4142
11.3.2. Calculul valorilor singulare
Funcia svd retumeaz valorile singulare ale unei matrice. Calculul acestor valori este un mijloc sigur
de determinare a rangului unei matrice de form general. Funcia svd se apeleaz cu una dintre
sintaxele:
d=svd(X) - retumeaz un vector care conine valorile singulare;
[U,S,V] = svd(X) - retumeaz o matrice diagonal S cu aceleai dimensiuni ca X, avnd elementele
diagonale nenegative (care sunt i valorile singulare) n ordine descresctoare i matricele U i V care
satisfac relaia:
X = U*S*V [U.S.V] = svd(X,0) - efectueaz un calcul mai rapid al valorilor singulare.
Exemplu! 11.3.2. S se descompun n valori singulare matricea A =
Cu secvena MATLAB:
A=[l 5;4 3];
d=svd(A)
[U,S,V]=svd(A)
l

54

11. Calcule cu matrice


125
se obin rezultatele: d =
954/143 3435/1348
3177/4435

464/665 464/665

-3177/4435

S=
V=
954/143
521/991

10

OO

3435/1348

-3725/4379 3725/4379

521/991c

S-ar putea să vă placă și