Documente Academic
Documente Profesional
Documente Cultură
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
fliplr
flipud
reshape
rot90
tril
triu
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.
A(i,:)
CURS 11
A(:,:)
A(j:k)
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
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]
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
inv
rank
trace
cond
condest
norm
rcond
CURS 11
n=nomi(X,p)
n=no/m(X,'fro')
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
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
464/665 464/665
-3177/4435
S=
V=
954/143
521/991
10
OO
3435/1348
-3725/4379 3725/4379
521/991c