Sunteți pe pagina 1din 11

Geometrie computaţională Laborator 2

Lucrul cu matrici şi vectori

Generarea vectorilor cu pas liniar


Pentru a genera un vector cu pas liniar MATLAB-ul oferă două metode:
• Dacă se cunosc limitele intervalului (amin şi amax) şi pasul (pas) dintre două elemente, se
generează vectorul cu instrucţiunea: x = amin : pas : amax
Dacă pasul e negativ atunci e necesar ca amin > amax. Dacă se omite specificarea valorii pasului,
atunci acesta va fi luat implicit egal cu unitatea.
• Dacă se cunosc limitele intervalului (amin şi amax) şi numărul de elemente (N) ale vectorului
generat cu pas liniar, atunci se foloseşte instrucţiunea: x = linspace(amin, amax, N)
Dacă valoarea lui N este omisă, implicit se va lua 100.

Simbolul : este foarte important în MATLAB. Declaraţia: x=1:5


generează un vector conţinând elementele de la 1 la 5, cu incrementul 1: x=[1 2 3 4 5]
Dacă se doreşte un alt increment (pozitiv sau negativ), atunci declaraţia va fi de tipul:
y=0:pi/4:pi
O altă posibilitate de a genera vectori este utilizarea funcţiilor linspace sau logspace, care
determină generarea unui număr de puncte într-un interval considerat. De exemplu,
k=linspace(-pi,pi,4) conduce la:
k= -3.1416 -1.0472 1.0472 3.1416

Matrici vide
Declaraţia x=[ ]
determină generarea unei matrici de dimensiune 0 x 0. Utilizarea acestei comenzi nu va conduce
la o eroare. Matricile vide există în spaţiul de lucru (deci declaraţia anterioară este diferită de
declaraţia clear x, care şterge pe x din lista variabilelor curente) dar au dimensiunea 0. Funcţia
exist poate fi utilizată pentru verificarea existenţei unei matrici, iar isempty indică dacă o matrice
este vidă.
O posibilitatea de a şterge rânduri sau coloane ale unei matrici este de a le declara vide.
Astfel,
A(:,[2 4])=[ ]

1
Geometrie computaţională Laborator 2

va şterge coloanele 2 şi 4 ale matricii A.

Operaţii cu matrici
Adunarea şi scăderea
În cazul operaţiilor de adunare şi scădere, operatorul nu va mai fi precedat de punct.
Exemplu:
Fie: A = [2 2 5;1 4 7], B = [3 4 1;2 5 3], p = 2.
Să se calculeze: C = A + B, D = B - A, E = p - A, F = B - p, G = p + A
Secvenţa MATLAB va fi:
A = [2 2 5;1 4 7]; B=[3 4 1;2 5 3]; p=2;
C=A+B
D=B-A
E=p-A
F=B-p
G=p+A
Rezultatul returnat va fi:
C=5 6 6
3 9 10
D=1 2 -4
1 1 -4
E=0 0 -3
1 -2 -5
F=1 2 -1
031
G=4 4 7
369

Înmulţirea tablourilor
Pentru a preciza că înmulţirea se efectuează element cu element, între componentele a două
matrici de aceleaşi dimensiuni, se utilizează operatorul de înmulţire precedat de punct (.*).
Instrucţiunea este de forma:

2
Geometrie computaţională Laborator 2

C = A .* B
Exemplu: Fie A = [1 3 2], B = [3 4 6] , p = 3.
Să se calculeze, folosind calculul element cu element, înmulţirea matricelor A şi B, înmulţirea
scalarului p cu matricea A şi înmulţirea matricei B cu scalarul p.
Secvenţa MATLAB va fi:
A = [1 3 2] ; B = [3 4 6] ; p = 3;
C = A.*B
D = p .*A
E = B .* p
Rezultatul returnat va fi:
C = [3 12 12]
D = [3 9 6]
E = [9 12 18]

Împărţirea la dreapta
Operaţia de împărţire element cu element, între două tablouri este simbolizată cu operatorul
punct–slash (./).
Instrucţiunea este de forma:
C = A ./ B
şi reprezintă împărţirea element cu element, a tablourilor A şi B, cu aceleaşi dimensiuni, rezultând
elementele:
C (i,j) = A(i,j) / B(i,j)

Ridicarea la putere
Operaţia de ridicare la putere, element cu element, într-un tablou este simbolizată cu operatorul
punct-^ (.^).
Instrucţiune este de forma:
C = A.^B
şi reprezintă ridicarea fiecărui element din tabloul A la puterea indicată de valoarea elementului din
aceeaşi poziţie a tabloului B, adică:
C(i,j)=A(i,j)^B(i,j)

3
Geometrie computaţională Laborator 2

Dacă A e un scalar, se lasă un blanc între scalar şi operatorul de ridicare la putere.

Transpunerea tablourilor
Operaţia de transpunere a unui tablou este simbolizată de operatorul punct-apostrof.
Instrucţiunea este de forma:
B=A.'
şi liniile tabloului A vor deveni coloanele tabloului transpus B. Acest lucru face ca un tablou A , cu
dimensiuneam n × , să devină un tablou B cu dimensiunean m × .

Caracterul special ‘ (apostrof) semnifică transpusa unei matrici. Declaraţiile:


A=[1 2 3; 4 5 6; 7 8 0];
B=’A
conduc la:
B=
1 4 7
2 5 8
3 6 0
iar:
x=[-1 0 2]’
produce:
x=
-1
0
2

In principal, utilizându-se ‘, are loc o transpunere formală a matricii. Dacă matricea este complexă,
atunci A’ este conjugata complexă transpusă. Acest lucru poate conduce uneori la rezultate
eronate, mai ales în cazul lucrului cu numere complexe. Pentru transpusa neconjugată se va utiliza
A.’ sau conj(A’).

4
Geometrie computaţională Laborator 2

Determinantul unei matrice

Calculul determinantului unei matrice se face cu funcţia det, se apelează cu sintaxa:


D=det(X)
Exemplul.1.1.Calculaţi determinanţii următoarelor matrice:

1 2 3
1 2 4 5 6
A= 3 4 B= 7 8 9 .
Cu secvenţa MATLAB:
A=[1 2; 3 4]; B=[1 2 3; 4 5 6; 7 8 9];
A1=det(A)
B1=det(B)
se obţine rezultatele:
A1= -2 B1= 0

Inversa unei matrice


Inversa unei matrice se calculează cu funcţia inv, se apelează cu sintaxa:
Y=inv(X)
2 1
Exemplul 2.1. Calculaţi inversa matricei:A= - 1 1 .
Cu secvenţa MATLAB:
A=[2 1; -1 1];
B=inv(A)
se obţine rezultatul: B=
-0.3333
0.6667

În continuare vom mai prezenta câteva comenzi utile:


>>size(A) returnează numărul de linii şi de coloane ale matricei A
>>length(v) returnează dimensiunea unui vector v. Dacă argumentul este o matrice A, length(A)
returnează cea mai mare dimensiune.

5
Geometrie computaţională Laborator 2

Şirurile de text pot fi introduse prin plasarea lor între apostrof. Un şir de text poate fi afişat folosind
comanda:
>>disp(’şir text’)
>>plot(x,y) plotează vectorul y versus vectorul x. Vectorii trebuie să aibă aceeaşi lungime. Dacă
unul din argumentele de intrare este o matrice vectorul se plotează versus liniile sau coloanele
matricei.
În cazul când ambele argumente sunt matrici, coloanele lui y se plotează versus coloanele lui x.
Dacă y este un vector complex, atunci plot(y) va plota partea imaginară versus partea reală.
>>subplot(211) împarte ecranul în două ferestre şi pune plotul curent în prima fereastră.
>>subplot(212) împarte ecranul în două ferestre şi pune plotul curent în a doua fereastră.

Manipularea matricelor
MATLAB-ul oferă următoarele funcţii pentru manipularea matricelor:
diag creează sau extrage diagonalele matricei;
fliplr roteşte matricea în jurul axei verticale (inversează ordinea coloanelor);
flipud roteşte matricea în jurul axai orizontale (inversează ordinea linilor);
reshape schimbă dimensiunile matricei (redimensionează matricea);
rot90 roteşte 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 decuplează o submatrice.

Rorirea matricei în jurul unei coloane sau linii


Funcţiile fliplr şi flipud inversează ordinea liniilor sau coloanelor matricelor. Practic, ele
realizează o rotire a matricei în jurul unei coloane sau a unei linii. Se apelează cu sintaxele:
Y=fliplr(X) Z=flipud(X)
⎡ 1 2 3⎤
⎢ 4 5 6⎥
⎢ ⎥
⎢⎣7 86 9⎥⎦
Exemplul.1.2. Să se rotească matricea A= în jurul unei coloanei şi în jurul unei
linii.
Cu secvenţa MATLAB:

6
Geometrie computaţională Laborator 2

A=[1 2 3; 4 5 6; 7 8 9];
B=fliplr(A)
C=flipud(A)
⎡3 2 1 ⎤ ⎡7 8 9 ⎤
⎢6 5 4 ⎥ ⎢ 4 5 6⎥
⎢ ⎥ ⎢ ⎥
⎢⎣9 8 7 ⎥⎦ ⎢⎣1 2 3⎥⎦
se obţin rezultate: B= ; C= .

Rotirea matricei cu multipli de 90 de grade în jurul unui element


Rotirea unei matrice cu multipli de 90 de grade, în sens trigonometric (contrar sensului orar)
se face cu funcţia rot90; se apelează cu una dintre sintaxele:
B=rot90(A) B=rot90(A,k)
⎡1 2 3 ⎤
⎢ 4 5 6⎥
⎢ ⎥
⎢⎣7 8 9⎥⎦
Exemplul.1.3. Să se rotească în jurul unui element, matricea A=
cu 90 de grade în sens trigonometric şi cu 180 de grade în sens orar.

Cu secvenţa MATLAB:
A=[1 2 3; 4 5 6; 7 8 9];
B=rot90(A,1)
C=rot90(A,-2)

⎡3 6 9⎤ ⎡9 8 7 ⎤
⎢2 5 8⎥ ⎢6 5 4 ⎥
⎢ ⎥ ⎢ ⎥
⎢⎣1 4 7 ⎥⎦ ⎢⎣3 2 1 ⎥⎦
Se obţin rezultatele: B= ; C=

Extragerea submatricelor prin indici


Elementele individuale ale unei matrice se apelează cu numerele acesteia, urmat de doi
indici, cuprinşi între paranteze rotunde şi separaţi de virgulă. Primul indice semnifică linia, iar al
doilea coloana în care se găseşte elementul apelat.
Pentru extragerea vectorilor cu elemente decupate din alţi vectori, se folosesc formele:

7
Geometrie computaţională Laborator 2

j:k -selectează elementele [j, j+1,…., k] ale unui vector, dacă j>k,vectorul rezultat este gol.
j:i:k -selectează elementele [j, j+i, j+2i,…., k] ale unui vector; vectorul rezultat este gol dacă i>0;
şi j>k sau dacă i<0 şi j<k.
În cazul selectării liniilor sau coloanelor matricelor, se folosec formele:
A(:,j) -selectează coloana j a matricei A;
A(i,:) -selectează linia i a matricei A;
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 elementele 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ă (începând cu prima).
⎡1 2 3 4 5 6⎤
⎢2 3 4 5 6 1 ⎥⎥

⎢3 4 5 6 1 2⎥
⎢ ⎥
⎢4 5 6 1 2 3⎥
⎢ 4⎥⎦
Exemplul 1.1. Fie A = ⎣5 6 1 2 3

Să se scrie instrucţiunile 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;
Cu secvenţa MATLAB:
A=[1 2 3 4 5 6; 2 3 4 5 6 1; 3 4 5 6 1 2;…
4 5 6 1 2 3; 5 6 1 2 3 4; 6 1 2 3 4 5]
B=A(2,:)
C=A(:,3)
D=A(1:2,4:6)
E=A( [1,4],[2,4:5] )
⎡ 4 5 6⎤
⎢ ⎥
Se obţin rezultatele: B=[2 3 4 5 6 1] D= ⎣5 6 1⎦

8
Geometrie computaţională Laborator 2

⎡ 3⎤
⎢ 4⎥
⎢ ⎥
⎢5 ⎥
⎢ ⎥
⎢6 ⎥
⎢1 ⎥ ⎡2 4 5⎤
⎢ ⎥ ⎢ ⎥
C= ⎢⎣2⎥⎦ ; E= ⎣5 1 2⎦

Matrici speciale
Anumite matrici des utilizate sunt disponibile în MATLAB ca funcţii utilitare:
>>eye(n), unde n este un număr natural, returnează o matrice identitate de dimensiune nxn. Dacă
n este un număr întreg negativ, va fi returnată o matrice nulă. Dacă sintaxa este de forma eye(A) ,
unde A este o matrice, atunci va fi returnată o matrice identitate de dimensiune egala cu
dimensiunea matricei A. Dacă avem sintaxa eye(m,n), va fi creată o matrice identitate de
dimensiunea maximă posibilă, iar restul va fi completat cu zerouri până se ajunge la o matrice
dimensiuneam n × .
>>ones(n), unde n este un număr natural, returnează o matrice de dimensiune nxn cu toate
elementele egale cu 1. Dacă n este un număr întreg negativ, va fi returnată o matrice nulă.
Dacă sintaxa este de forma ones(A) , unde A este o matrice, atunci va fi returnată o matrice cu
toate elementele egale cu 1, de dimensiune egala cu dimensiunea matricei A. Dacă avem sintaxa
ones(m,n), va fi creată o matrice dimensiunea m n × , având toate elementele egale cu 1.
>>zeros(n) , unde n va fi un număr natural, returnează o matrice de dimensiune nxn cu toate
elementele egale cu zero. Restul observaţiilor de la matricea anterioară sunt valabile şi aici, cu
diferenţa că de fiecare dată matricea generată va avea toate elementele egale cu
zero.
>>rand(n) , unde n va fi un număr natural, returnează o matrice de dimensiune nxn având ca
elemente numere aleatoare uniform distribuite între 0 şi 1.
>>g=[] va genera o matrice g de dimensiune 0, dar care va exista în spaţiul de lucru.

9
Geometrie computaţională Laborator 2

MATLAB Commands for Vectors and Matrices


• Vectors
– v = [2 4 6] yields a row vector.
– v = [2;4;6] or v = [2 4 6]’ yields a column vector.
– v(2) yields the second element in v.
– v(2:3) = yields elements 2 through 3 of v.
– v(1) = 0 replaces the 2 with a zero
– v(4) = 0 appends a zero to v now: v = [2 4 6 0]
– [m,n] = size(v) yields (m = 1 and n = 3) or (m = 3 and n = 1)
– v = 0:0.5:2 yields v = [0 0.5 1 1.5 2]
• Matrices
– A = [1 2 3; 4 5 6; 7 8 9] or [1,2,3;4,5,6;7,8,9] (semicolon seperates rows)
– [m,n] = size(A) yields m = number of rows in A and n = the number of columns in A.
– A(1,2) yields the element in row 1 and column 2 of A.
– A(:,2) yields the second column of A.
– A(2,:) yields teh second row of A.
– A(1:2,3:4) = yields rows 1 to 2 and columns 3 to 4 of A.
– A([1 3 2],[1 3]) = yields rows 1 3 2 and columns 1 3 of A.
– A + B yields term by term addition (appropriate dimensions reguired)
– A * B yields normal matrix multiplication (appropriate dimensions required)
– A^2 = A * A
– A.^2 squares each entry in A.
– A./2 divides each entry in A by 2.
– cos(A) takes the cosine of each term in A.
– eye(n) yields the n x n identity matrix
– zeros(n,m) yields an n x m zero matrix
– ones(n,m) yields an n x m matrix of all ones.
– transpose(A) yields the transpose of A.
– A’ = conjugate transpose (or just transpose if real)
– inv(A) yields the inverse of A if one exists.
– det(A) yields the determinent of A.

10
Geometrie computaţională Laborator 2

– eig(A) yields a column vector of the eigenvalues of A.


– [V,D] = eig(A) yields V a matrix with columns equal to ± the normalized eigenvectors of A,
and D is a diagonal matrix with the eigenvalues in decreasing size from upper left.
– x = A\b produces a solution to Ax = b. (forward slash).
– Matrix Factorizations
_ [L,U] = lu(A) returns and upper triangular matrix U and a (psychologically) lower triangular
matrix L (ones on the diagonal) such that LU = A. (L is actually a permutation of a
lower triangular matrix).
_ [L,U,P] = lu(A) returns and upper triangular matrix U and lower triangular matrix L (ones
on the diagonal) such that LU = P A. So that to solve Ax = b use LU x = Pb.
_ R = chol(A) returns upper triangular R such that R*R’=A. Restrictions: A must be positive
definite and hermitian (symmetric if real). An error is returned if either of these restrictions
is violated.
_ [V,D] = eig(A) yields V a matrix with columns equal to ± the normalized eigenvectors
of A, and D is a diagonal matrix with the eigenvalues in decreasing size from upper left.
Note: AV = VD or A = VDV−1.
– Vector Norms: V is a vector.
_ norm(V,P) = sum(abs(V).^P)^(1/P).
_ norm(V) = norm(V,2).
_ norm(V,inf) = max(abs(V)).
_ norm(V,-inf) = min(abs(V)).
– Matrix Norms: X is a matrix.
_ norm(X) is the largest singular value of X, max(svd(X)).
_ norm(X,2) is the same as norm(X).
_ norm(X,1) is the 1-norm of X, the largest column sum, = max(sum(abs((X)))).
_ norm(X,inf) is the infinity norm of X, the largest row sum, = max(sum(abs((X’)))).
_ norm(X,’fro’) is the Frobenius norm, sqrt(sum(diag(X’*X))).
_ norm(X,P) is available for matrix X only if P is 1, 2, inf or ’fro’.
– Condition Numbers: X is a matrix.
- cond(X,p) is the condition number of a matrix X using the p-norm. Values of p can be 1, 2,
inf, or ’fro’.

11

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