Documente Academic
Documente Profesional
Documente Cultură
1. Scopul lucrarii
Scopul acestei lucrari de laborator consta în însusirea principalelor facilitati de
configurare a mediului de calcul MATLAB, respectiv fixarea operatiilor de baza de
manipulare a matricelor.
2. Chestiuni de studiat
3.2.1. Comenzi de lansare MATLAB. Exista mai multe variante de lansare a pachetului de
programe MATLAB, printre care :
Varianta A)
Varianta B)
Clic pe butonul START ,
Varianta D)
Dublu-clic pe icoana de tip shortcut ”MATLAB 4.2” din directorul C:/MATLAB42/BIN,
ca în Fig. 1.
3.2.2. Comenzi de iesire din MATLAB. Exista mai multe variante de încheiere a unei
sesiuni de lucru MATLAB, printre care:
Varianta A)
Clic pe meniul File + clic pe Exit MATLAB, ca în Fig. 2.
MEDII DE CALCUL INGINERESC – Îndrumar de laborator 7
Varianta C)
Tastare ”exit” sau ”quit” în Command Window, ca în Fig. 3,
urmat de Enter.
Dupa lansarea programului MATLAB, în prim plan apare fereastra principala MATLAB
Command Window, ce contine meniuri pentru controlul directoarelor, fisierelor, variabilelor
si aplicatiilor MATLAB asociate, Fig. 4.
Fereastra Command Window, permite lansarea comenzilor MATLAB fiind fereastra
principala de comunicare a utilizatorului cu programul, Fig. 4. Aceasta fereastra permite
lansarea de functii si efectuarea de operatii MATLAB.
8 MEDII DE CALCUL INGINERESC – Îndrumar de laborator
Dupa ce ati tastat linia de comanda de mai sus, când apasati tasta Enter sau Return,
MATLAB va afisa continutul matricei pe care tocmai ati introdus-o:
A= (2)
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1
Odata introdusa matricea de mai sus, aceasta este automat memorata în MATLAB
Workspace. Puteti accesa si vizualiza aceasta matrice tastând pur si simplu A la linia de
comanda urmata de Enter.
În mod similar introducerii unei matrice, pentru a lansa o functie, tastati functia inclusiv
toate argumentele si apasati tasta Return sau Enter. MATLAB va afisa rezultatul. De pilda,
tastati:
» det(A) (3)
ans = (4)
0
3.4.2. Definirea matricelor prin încarcarea datelor din fisiere externe. Matricele pot fi
create deasemenea prin încarcarea datelor din fisiere externe folosind functia load. Functia
load citeste fisiere binare continând matrice generate în sesiuni MATLAB anterioare, sau
citeste fisiere text continând date numerice. Fisierul text trebuie organizat sub forma unui
tabel de numere, separate de blancuri, cu numar egal de elemente pe fiecare rând, respectiv
pe fiecare coloana.
De pilda creati un fisier de tip text care contine urmatoarele elemente scrise sub forma
unui tablou:
1 2 3 (5)
2 5 1
3 0 1
» who (7)
» matrice (8)
» Z = zeros(2, 3) (9)
Z= (10)
0 0 0
0 0 0
» F = 5*ones(2, 2) (11)
F= (12)
5 5
5 5
» N = 10*rand(1, 5) (13)
N= (14)
9.5013 2.3114 6.0684 4.8598 8.9130
» R = rand(4, 4) (15)
MEDII DE CALCUL INGINERESC – Îndrumar de laborator 11
R= (16)
0.4447 0.7382 0.9169 0.3529
0.6154 0.1763 0.4103 0.8132
0.7919 0.4057 0.8936 0.0099
0.9218 0.9355 0.0579 0.1389
» S = eye(3, 4) (17)
S= (18)
1 0 0 0
0 1 0 0
0 0 1 0
3.4.4. Definirea matricelor folosind functii scrise în fisiere M. Puteti crea propriile dvs.
matrice folosind fisiere de tip M. Aceste fisiere sunt fisiere text ce contin instructiuni
MATLAB si au extensia .m. Un astfel de fisier M îl puteti crea folosind oricare editor de
text (de pilda Notepad sau Wordpad) si trebuie sa contina aceleasi instructiuni pe care le-ati
tasta la linia de comanda în Command Window. Dupa ce ati creat fisierul acesta trebuie
salvat în format text sub un nume dorit, însa trebuie sa aiba extensia .m.
De pilda, creati un fisier continând urmatoarele patru linii.
Salvati fisierul sub numele matr.m în directorul curent. Tastati în continuare la linia de
comanda în Command Window instructiunea:
» matr (20)
A= (21)
16.0 3.0 2.0 13.0
5.0 10.0 11.0 8.0
9.0 6.0 7.0 12.0
4.0 15.0 14.0 1.0
Elementul din rândul i si coloana j a matricei A este notat cu A(i, j). De pilda, A(4, 2) este
elementul din rândul 4 si coloana 2, adica, în cazul matricei de mai sus, este numarul 15.
Este posibila deasemenea accesarea elementelor elementelor unei matrice folosind un
singur indice, A(k). Acesta este modul uzual de accesare vectorilor tip rând sau coloana.
Aceasta metoda poate fi aplicata si unei matrice bidimensionale, caz în care vectorul este
12 MEDII DE CALCUL INGINERESC – Îndrumar de laborator
privit ca un vector lung de tip coloana format din coloanele matricei originale. Astfel, în
cazul matricei A definite anterior, A(8) este o alta cale de accesare a valorii 15 stocata în
A(4, 2). Daca încercati sa accesati valoarea unui element din afara matricei, apare un mesaj
de eroare. Tastati de pilda:
» t = A(4, 5) (22)
Daca stocati o valoare într-un element din afara matricei, dimensiunea matricei va creste
în mod automat pentru a include noua valoare. Tastati de pilda :
» X = A; (24)
» X(4, 5) = 17 (25)
3.5.1. Operatorul ”:„ este foarte important în MATLAB. Acesta apare în diferite forme. De
pilda expresia 1:10 reprezinta un vector rând continând numerele întregi de la 1 la 10.
Tastati:
» 1:10 (27)
ans = (28)
1 2 3 4 5 6 7 8 9 10
Pentru a obtine un ecart diferit de unitate între elementele vectorului astfel generat,
specificati un increment. De pilda tastati:
ans = (30)
100 93 86 79 72 65 58 51
MEDII DE CALCUL INGINERESC – Îndrumar de laborator 13
Tastati:
» 0: pi/4: pi (31)
ans = (32)
0 0.7854 1.5708 2.3562 3.1416
Expresiile cu indici ce contin operatorul ”:” se refera la portiuni dintr-o matrice. De pilda
A(1:k, j) reprezinta primele k elemente (rânduri) ale coloanei j ale matricei A. Tastati de
pilda:
ans = (34)
2 13
11 8
3.5.2. Indexarea logica. Vectorii logici creati din operatii logice si relationale pot fi folositi
pentru a face referinta la subvectori. Daca presupunem ca X este o matrice clasica si L o
matrice de aceasi dimensiune care este rezultatul unei operatii logice, atunci X(L) furnizeaza
elementele lui X unde elementele lui L sunt diferite de zero.
În Tabelul 2 sunt prezentate functii folosite frecvent la indexarea logica a matricelor. Se
considera M = [1 2 3; 2 3 4].
Tabel 2
Functie Descriere Exemplu
isempty Testeaza daca vectorii sau matricele sunt goale isempty(M) 0
issparse Testeaza daca vectorii sau matricele sunt de tip rar issparse(M) 0
isnan Testeaza daca vectorii sau matricele au elementul NaN isnan(M) 0 0 0
(not a number) 000
isinf Testeaza daca vectorii sau matricele au elementul Inf isinf(M) 0 0 0
(infinity) 000
NaN este un simbol pentru (Not-a-Number). Pentru a elimina aceasta data irelevanta
utilizând indexarea logica, se foloseste functia ~isnan(x), care este falsa pentru toate
valorile numerice de tip NaN. În MATLAB operatorul ”~” înseamna ”nu logic”.
» x = x(~isnan(x)) (36)
14 MEDII DE CALCUL INGINERESC – Îndrumar de laborator
x= (37)
2.1 1.7 1.6 1.5 1.9 1.8 1.5 5.1 1.8 1.4 2.2 1.6 1.8
Tabel 3
Operator Operatie
+ Adunare
- Scadere
* Înmultire
/ Împartire
\ Împartire la stânga
^ Putere
’ Transpusa complex conjugata
() Pentru ordinea operatiilor
Pentru a calcula suma elementelor din coloana a patra a matricei A, puteti tasta:
ans = (42)
34
» A'*A (43)
ans = (44)
378 212 206 360
212 370 368 206
206 368 370 212
360 206 212 378
Matricele si scalarii pot fi combinati în multe feluri. De pilda, în cazul în care un scalar
este adunat sau înmultit cu o matrice, operatia se efectueaza asupra fiecarui element al
matricei. Tastati de pilda:
B= (47)
15 2 1 12
4 9 10 7
8 5 6 11
3 14 13 0
Tabel 4
Operator Operatie
+ Adunare
- Scadere
.* Înmultire element cu element
./ Împartire element cu element
.\ Împartire la stânga element cu element
.^ Putere element cu element
.’ Transpusa matricei cu elementele neconjugate complex
» A.*A (48)
ans = (49)
256 9 4 169
25 100 121 64
81 36 49 144
16 225 196 1
» puteri = (51)
0 0 1
1 1 2
2 4 4
3 9 8
4 16 16
5 25 32
6 36 64
7 49 128
8 64 256
9 81 512
» x = (1:0.1:2)'; (52)
» logaritmi = [x log10(x)]
Tabel 5
Functie Descriere Exemplu
disp Afiseaza vectori sau matrice disp(A)
123
234
length Determina lungimea unui vector si cea mai mare length(A) 3
dimensiune a unei matrice
size Determina dimensiunile vectorilor si matricelor size(A) 23
Pentru a calcula eficient suma elementele unei coloane ale unei matrice se poate folosi
operatorul ”:” si functia de sumare sum. De pilda pentru a calcula suma elementelor
coloanei a patra a matricei A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1] se poate folosi
comanda sum(A(1:4, 4)). Exista însa si o alta cale pentru a efectua acest calcul si anume
utilizând functia sum(A(:, 4)) ce efectueaza suma elementelor de pe ultima coloana a
matricei A. Daca tastati:
ans = (55)
34
De pilda daca efectuati suma elementelor matricei A definita mai sus, de-a lungul oricarui
rând sau coloana, sau de-a lungul oricarei diagonale principale, veti obtine întotdeauna
acelasi numar. Sa verificam aceasta caracteristica a matricei A în MATLAB. Întâi sa
efectuam suma elementelor de pe coloanele matricei. Pentru aceasta vom folosi functia
sum(A) care realizeaza tocmai acest lucru:
» sum(A) (56)
ans = (57)
34 34 34 34
» A’ (58)
MATLAB va afisa raspunsul urmator:
ans = (59)
16 5 9 4
3 10 6 15
2 11 7 14
13 8 12 1
Aplicând functia:
» sum(A')' (60)
MEDII DE CALCUL INGINERESC – Îndrumar de laborator 19
ans = (61)
34
34
34
34
» diag(A) (62)
ans = (63)
16
10
7
1
Tastând:
» sum(diag(A)) (64)
ans = (65)
34
» sum(diag(fliplr(A))) (66)
ans = (67)
34
» size(A) (68)
ans = (69)
4 4
20 MEDII DE CALCUL INGINERESC – Îndrumar de laborator
Functia find gaseste indicii elementelor unui vector care îndeplinesc o conditie logica
data. În forma sa cea mai simpla, find întoarce un vector coloana de indici cu elemente
nenule. Transpunând acel vector se obtine un vector de tip rând de indici. Daca definim
B = [0 1 2; 1 0 3; 1 2 0] si aplicam functia find, gasim locatiile numerelor nenule folosind
indexarea unidimensionala în matricea B:
» k = find(B)' (70)
k= (71)
2 3 4 6 7 8
Pentru a afisa acele numere nenule ca vector rând în ordinea determinata de k, folosim
operatia B(k)
ans = (72)
1 1 1 2 2 3
B= (73)
16 3 2 13 48 35 34 45
5 10 11 8 37 42 43 40
9 6 7 12 41 38 39 44
4 15 14 1 36 47 46 33
64 51 50 61 32 19 18 29
53 58 59 56 21 26 27 24
57 54 55 60 25 22 23 28
52 63 62 49 20 31 30 17
ans = (74)
260 260 260 260 260 260 260 260
ans = (75)
196 196 196 196 324 324 324 324
Puteti sterge rânduri si coloane dintr-o matrice folosind doar o pereche de paranteze
patrate. Începeti cu X = A. Apoi, pentru a sterge cea de-a doua coloana a lui X, folositi
X(:, 2) = [ ]. Astfel X devine:
MEDII DE CALCUL INGINERESC – Îndrumar de laborator 21
X= (76)
16 2 13
5 11 8
9 7 12
4 14 1
Daca stergeti un singur element dintr-o matrice, rezultatul nu mai este o matrice. Deci
expresii ca X(1, 2) = [ ] sunt incorecte si generatoare de erori.
Tabel 7
Functie Descriere Exemplu
cond Numarul de conditionare cond(B) 2.6180
det Calculeaza determinantul unei matrice det(B) 13
eig Calculeaza valorile proprii ale unei matrice eig(B) 5.7321
2.2679
inv Calculeaza inversa unei matrice inv(B) 0.2308 -0.1538
-0.0769 0.3846
norm Calculeaza norma unei matrice sau a unui vector norm(B) 5.8339
rank Calculeaza rangul unei matrice rank(B) 2
trace Calculeaza urma unei matrice sau suma trace(B) 8
elementelor de pe diagonala principala
» X = inv(A) (77)
» e = eig(A) (79)
e= (80)
34.0000
8.0000
0.0000
-8.0000
22 MEDII DE CALCUL INGINERESC – Îndrumar de laborator
3x + 2y – z = 10 (81)
- x + 3y + 2z = 5
x - y - z = -1
3 2 1 x 10
1 3 2 y 5 (82)
1 1 1 z 1
3 2 1 10
A 1 3 2 , B 5 (83)
1 1 1 1
Astfel acest sistem poate fi scris sub forma matriceala AX = B si a carui rezolvare
presupune aflarea vectorului necunoscut:
x
X y (84)
z
Inversarea unei matrice în MATLAB presupune utilizarea functiei specifice inv. Astfel
pentru a rezolva aplicatia numerica de mai sus se face apel la urmatoarea secventa de
comenzi MATLAB:
APLICATIA 1
Generati o matrice 4x4 cu numere reale aleatoare cuprinse între 0 si 100 folosind functia
MATLAB rand.
APLICATIA 2
Generati o matrice 5x5 cu numere reale aleatoare cuprinse între 10 si 20 folosind functia
MATLAB rand.
APLICATIA 3
Generati matricea A =[16 2 3 NaN; NaN 11 10 8; NaN 7 6 12; 4 NaN 15 1].
Identificati elementele de tip NaN ale matricei A folosind functia MATLAB isnan si
calculati numarul lor (NaN – Not a Number).
APLICATIA 4
Creati într-un editor exterior MATLAB-ului (de pilda Notepad) un fisier text matrice.dat
sau matrice.txt continând urmatoarele date:
16.0 3.0 2.0 13.0
5.0 10.0 11.0 8.0
9.0 6.0 7.0 12.0
4.0 15.0 14.0 1.0
Importati fisierul în MATLAB Workspace folosind una din sintaxele functiei ”load”:
load matrice.dat sau load matrice.txt.
APLICATIA 5
Localizati elementele matricei A =[16 2 3 13; 5 11 10 8; 9 7 6 12; 4 14 15 1]
care sunt mai mici decât 10 si afisati-le pe ecran.
APLICATIA 6
Creati matricea A =[16 2 3 13; 5 11 10 8; 9 7 6 12; 4 14 15 1] si determinati
dimensiunile matricei si numarul de elemente folosind functia MATLAB size.
APLICATIA 7
Generati vectorul V = [1 4 7 2 3 6 5] si ordonati-l în sens crescator si apoi descrescator
folosind operatii cu vectori, respectiv comanda MATLAB sort.
MEDII DE CALCUL INGINERESC – Îndrumar de laborator 25
APLICATIA 8
Se dau vectorii x = [1 5 2 8 9 0 1] si y = [5 2 2 6 0 0 2]. Executati comenzile de mai jos
si explicati rezultatele obtinute:
x>y
y<x
y(y<x)
x == y (În MATLAB operatorul ”==” înseamna ”egal” logic si este folosit în operatii
logice. Atentie nu este identic cu operatorul clasic de atribuire ”=”)
x <= y
y >= x
x | y (În MATLAB operatorul ”|” înseamna ”sau” logic)
x & y (În MATLAB operatorul ”&” înseamna ”si” logic)
x & (~y) (În MATLAB operatorul ”~” înseamna ”nu” logic)
(x > y) | (y < 4)
(x > y) & (x < y)
APLICATIA 9
Sa se creeze în directorul curent un fisier script cu numele prog.m care sa genereze o
matrice A de dimensiune 10 x 10 si un vector B de dimensiune 10 x 1, ambele cu elemente
aleatoare cuprinse între 0 si 100. Apoi sa se determine numarul de conditionare al
matricei A si sa se rezolve sistemul AX = B prin doua metode.
APLICATIA 10
Generati matricea A =[16 2 3 13; 5 11 10 8; 9 7 6 12; 4 14 15 1] si apoi creati
matricea B adaugând 16 la fiecare din elementele matricei A. Generati o noua matrice C
având elementele egale cu radacina patrata a elementelelor matricei B. Generati o noua
matrice D având elementele egale cu patratul elementelelor matricei C. Folositi functia
sqrt de extragere a radicalului.
APLICATIA 11
Calculati numeric limita seriei Xn pentru n=1... 8 , în care Xn=1/[n(n+1)].
APLICATIA 12
Creati un vector cu elementele Xn=(-1)n+1/(2n-1) unde n ia valoarea de la 1 la 100.
Calculati suma elementelor acestui vector.
APLICATIA 13
Fie seria S = Xn pentru n=1... 8 , în care Xn=1/[sin(n)+2]. Determinati, folosind
comenzile MATLAB învatate, daca seria S este convergenta.
26 MEDII DE CALCUL INGINERESC – Îndrumar de laborator
APLICATIA 14
Calculati valorile curentilor I1, I2, I3 folosind teoremele lui Kirchoff si operatiile cu
matrice din MATLAB. Cele 3 ecuatii de circuit specifice puneti-le sub forma [R]*[I]=[U],
unde [R] reprezinta o matrice cunoscuta de dimensiune 3x3, [I] reprezinta un vector
coloana necunoscut care contine cei 3 curenti, iar [U] reprezinta un vector coloana
cunoscut.
7V
I1 I2 I3
1 2 3
12 V