CATEGORII DOCUMENTE |
Matrici, vectori si polinoame
Pentru a lucra usor si bine cu limbajul MATLAB trebuie in primul rand sa se invete manipularea matricilor. In MATLAB, o matrice este un tablou dreptunghiular de numere. Scalarii de exemplu sunt matrici 1 x 1, iar matricile cu o singura linie sau coloana sunt de fapt vectori.
Un exemplu celebru de matrice apare in gravura renascentista Melancholia realizata de marele artist si matematician amator Albrecht Drer. Gravura este incarcata de simbolism matematic si la o atenta observare a acesteia se poate distinge in coltul din dreapta sus o matrice.
Matricea respectiva este cunoscuta sub numele de patrat magic si in timpul lui Drer se considera ca are proprietati magice.
Introducerea matricilor
Matricile se pot introduce in mai multe moduri.
Introducerea unei liste explicite cu elementele matricei.
Incarcarea unor date din fisere externe de date.
Generarea de matrici utilizand functii built-in.
Crearea de matrici in fisierele M-files.
Vom introduce matricea lui Drer mai intai ca o lista de elemente.
Trebuie respectate cateva conventii simple:
Elementele unei linii sunt separate prin virgule sau spatii.
Sfarsitul unei linii se marcheaza cu punct si virgula.
Lista de elemente care formeaza matricea se delimiteaza cu paranteze drepte:
[ ]
Pentru introducerea matricii lui Drer tastam:
A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1]
MATLAB-ul va afisa matricea:
A =
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1
O data introdusa,
matricea este memorata in workspace si poate
fi apelata simplu, ca A
.
Sa vedem acum: de ce este magica?
sum, transpose, diag
Caracterul magic deriva din faptul ca prin efectuarea unor operatii asupra elementelor matrici rezulta numere interesante si surprinzatoare.
Daca de exemplu insumam elementele pe orice linie sau coloana sau de pe cele doua diagonale, vom obtine acelasi numar.
Sa verificam acest lucru cu MATLAB-ul. Suma elementelor de pe cele 4 coloane se calculeaza rapid cu:
sum(A)
ans =
34 34 34 34
Pentru calcularea sumelor pe linii, efectuam intai transpunerea matricii si apoi aplica din nou comanda sum.
Transpusa se calculeaza cu:
A'
ans =
16 5 9 4
3 10 6 15
2 11 7 14
13 8 12 1
si apoi
sum(A')'
ans =
34
34
34
34
Suma elementelor de pe
diagonala se calculeaza cu tot cu functia sum, dar dupa ce in prealabil vom sorta cu functia diag
elementele de pe diagonala
principala:
diag(A)
ans =
16
10
7
1
sum(diag(A))
ans =
34
Un anume element al
matricii, de exemplu elementul din linia i
coloana j
se noteaza A(
i,j)
.
Prin urmare o alta cale (mai putin rapida) de a calcula suma de pe patra coloana de exemplu este urmatoarea:
A(
1,4) + A(2,4) + A(3,4) + A(4,4)
ans =
34
Daca specificam un element care nu exista in matrice, primim un mesaj de eroare:
t = A(4,5)
Index exceeds matrix dimensions.
Operatorul :
Operatorul :
este
foarte important. De exemplu, expresia
1:10
este un vector linie
ans =
1 2 3 4 5 6 7 8 9 10
Alte exemple:
100:-7:50
ans =
100 93 86 79 72 65 58 51
0:pi/4:pi
ans =
0 0.7854 1.5708 2.3562 3.1416
Expresia
A(1:k,j)
Se refera la primele k
elemente ale coloanei j
a lui A
.
Daca este utilizat in paranteze operatorul : atunci inseamna ca ne referim la toate elementele unei linii sau coloane
sum(A(:,3))
calculeaza suma elementelor din
coloana a treia a lui A
:
ans =
34
O alta proprietate interesanta a patratului magic este ca suma magica 34 este obtinuta si prin insumarea elementelor matricii si prin impartirea la dimensiunea matricii (4):
sum(1:16)/4
ans =
34
Observatie: suma magica pentru orice patrat magic n x n este (n3 + n)/2 (se poate calcula cu ajutorul Symbolic Math Toolbox).
Functia magic
MATLAB-ul are o functie built-in care creeaza patrate magice de orice dimensiune (functie pe care deja am utilizat-o):
B = magic(4)
B =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
Aceasta matrice este aproape identica cu matricea lui Drer singura
diferenta fiind ca cele doua coloane din mijloc sunt
schimbate intre ele. Pentru obtinerea din B
a matricii lui Drer se
poate utiliza urmatoarea comanda MATLAB:
A = B(:,[1 3 2 4])
A =
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1
Polinoame
Polinoamele sunt descrise in MATLAB prin vectori linie ale caror elemente sunt de fapt coeficientii polinoamelor in ordinea descrescatoare a puterilor.
Exemplu: polinomul p(x)=x3+5x+6 este reprezentat in MATLAB astfel:
p = [1 0 5 6]
Un polinom poate fi evaluat pentru o valoare a lui x cu ajutorul functiei polyval:
polyval(p,1)
ans=
12
In exemplul de mai sus este evaluat polinomul p in punctul x =1.
Se pot afla cu usurinta radacinile polinomului folosind functia roots:
r=roots(p)
r =
0.5000 + 2.3979i
0.5000 - 2.3979i
-1.0000
Exista numeroase alte functii si comenzi care se ocupa cu operatii asupra polinoamelor, functii care vor fi abordate intr-un capitol special. Dintre acestea amintim comanda care permite inmultirea a doua polinoame, si anume conv:
p1=[1 3 5]
p1 =
1 3 5
p2=[2 0 1 0 5]
p2 =
2 0 1 0 5
p3=conv(p1,p2)
p3 =
2 6 11 3 10 15 25
Operatiuni elementare cu matrici si functii
MATLAB-ul opereaza cu matricile cu aceeasi usurinta cu care lucreaza cu scalarii. Pentru adunarea a doua matrici de exemplu se foloseste pur si simplu semnul + ca la o adunare obisnuita. Bineinteles ca matricile trebuie sa aiba aceleasi dimensiuni pentru a putea fi adunate.
Exemplu:
A=[2 3;15 -3]
A =
2 3
15 -3
B=[11 -21; 12 4]
B =
11 -21
12 4
C=A+B
C =
13 -18
1
Pentru inmultirea a doua matrici se foloseste operatorul * , valabil de altfel si pentru operatiile cu scalari. Exemplu:
D=A*B
D =
58 -30
-327
Daca dimensiunile matricilor care se inmultesc nu sunt corespunzatoare, atunci va fi furnizat un mesaj de eroare:
E=[1 23; -12 2;1 2]
E =
1 23
-12 2
1 2
F=A*E
??? Error using ==> *
Inner matrix dimensions must agree.
Pentru "depanarea" programului in cazul unor astfel de greseli se poate utiliza comanda size care ne da informatii despre dimensiunile matricilor respective si permite corectarea erorilor:
size(A)
ans =
2 2
size(E)
ans =
2
MATLAB-ul include multe alte functii care opereaza cu matrici si care vor fi descrise si utilizate intensiv in capitolele urmatoare. Amintim aici cateva: det, inv, rank, eig etc.
O facilitate interesanta a MATLAB-ului este aceea ca lucreaza cu matricile cu operatori logici si relationali intr-un mod asemanator acestor operatii efectuate cu scalari.
De exemplu, pentru operatiunea scalara
r=17>55
r =
0
MATLAB-ul raspunde cu r = 0, adica fals. Daca dorim de exemplu sa comparam fiecare element al matricii A cu elementul corespunzator din matricea B, procedam asemanator:
L=A<=B
L =
1 0
1
Operatorii logici, adica & pentru SI (AND), | pentru SAU (OR), ~ pentru NU (NOT), vor returna valoarea 1 pentru ADEVARAT si 0 pentru FALS. Exemplu:
A&B
ans =
1 1
1 1
~A
ans =
0 0
0 0
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 2503
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved