ALTE DOCUMENTE
|
||||||||||
Introducere
Pornirea Matlab-ului
Pe o platforma Windows, Matlab-ul de porneste printr-un dublu click pe pictograma shortcut-ul de pe desktop dau din orice alta locatie
Pe o platforma Linux, Matlab-ul de porneste prin scrierea comenzii "matlab" in promterul sistemului de operare.
Modificarea parametrilor cu privire la directorului din care Matlab porneste sau executa in mod automat comenzile, se poate face prin crearea fisierului startup.m.
Inchiderea aplicatiei Matlab
Pentru a inchide sesiunea lucru din Matlab, selectam File -> Exit MATLAB sau se poate scrie comanda quit in Command Window. De asemenea se poate scrie un script finish.m ce va executa de fiecare data cand matlabul este inchis, functiile de salvare a workspace-ului sau de afisare a unei ferestre de dialog de confirmare.
Desktopul Matlab-ului
Desktopul matlab-ului contine in interfata grafica cu utilizatorul, instrumente de management al fisierelor, variabilelor sau a aplicatiilor asociate matlab-ului.
In figura de mai jos este prezentat desktopul implicit. Acesta poate fi customizat in functie de dorinta utilizatorului
Introducerea functiilor se face dupa promterul
ferestrei Command Window
Fereastra Command History
memoreaza Functiile rulate |
Matrici si siruri (arrays)
In matlab, matricile sunt definit ca un tabel dreptunghiular de numere sau mai general de elemente de acelasi tip. Mat 313c24d ricile pot fi scalari: matrici cu un singur element, matrice 1 la 1, sau vectori: matrici cu 1 coloana sau 1 rand. In matalb, datele numerice sau nenumerice pot fi memorate si in alte moduri dar pentru inceput vom considera matricea singura posibilitate de reprezentare a datelor.
Avantajul folosirii matricilor este dat defaptul ca in acest fel numerele pot fi folosite toate odata si nu pe rand.
Un exemplu de matrice, exemplu ce tot va fi folosit pe parcursul cursului apare in gravura renascentista Melancholia I (1514), de artistul si matematicianul (amator) Albrecht Dürer.
( 21 mai 1471, Nürnberg - 6 aprilie 1528, Nürnberg, al treilea fiu din cei 18 copii ai lui Albrecht si Barbara, a fost un pictor, grafician si teoretician al artei german, una din personalitatile de seama ale istoriei universale a artei. Opera sa impregnata de ideile Renasterii, Umanismului si Reformei a exercitat o deosebita influenta in special asupra artistilor germani si olandezi de mai tarziu. Cu cele ca. 350 de gravuri in lemn si 100 gravuri in cupru a contribuit in mod hotaritor la dezvoltarea gravurii ca forma de arta de sine statatoare.)
|
|
|
|
Patratul magic al lui Albrecht Dürer, sculptat in opera sa Melancolía este considerat ca fiind primul din artele europene. In patratul de ordinul patru se obtine constanta magica (34) in randuri, coloane, diagonale principale, si in cele patru submatricii de ordinul (2) in care se poate imparti patratul, adaugand numerele din colturi, cele patru numere centrale, numerele centrale ale primelor si ultimelor randuri (sau coloane) etc. si cifrele centrale ale ultimului rand. |
Introducerea matricilor
In Matlab matricile pot fi introduse in urmatoarele moduri:
Introducerea unei liste explicite de elemente
Incarcarea dintr-un fisier extern
Generarea de matrici folosind functiile de generare interne (matlab)
Generarea de matrici folosind functiile de generare create de utilizator
Introducem matricea lui Durer respectand urmatoarele reguli:
Elementele dintr-un rand vor fi despartite de virgula sau spatiu
Se foloseste ";" la terminarea fiecarui rand
Intreaga lista de elemente se pune intre "[ ]".
Pentru a introduce matricea vom tasta in Command Window urmatoarele
A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1]
Matlab va afisa matricea introdusa sub forma:
A =
3 2 13
5 10 11 8
9 6 7 12
4 15 14 1
Odata matricea introdusa aceasta va fi memorata in workspace si se va putea apela prin tastarea numelui matricii "A". In continuare vom vedea de ce acest patrat (matrice) este magic.
Suma (sum), transpusa (trans) si digonala (diag) matricei
Proprietatile magice ale "patratului magic" sunt date de faptul ca se obtine acelasi rezultat la insumarea elementelor patratului dupa anumite reguli: de-a lungul oricarui rand coloane sau diagonale. Sa verificam!
Prima comanda ce se poate da este:
sum(A)
Matlab-ul va afisa:
ans =
34 34 34
In cazul in care nu se specifica variabila de iesire, Matlabul va utiliza denumirea generica:"ans" - prescurtarea de la answer pentru a memora valoarea calculata.
Aplicand comanda sum asupra matricii A, matlab-ul a retunat un vector rand ce contine rezultatele sumelor celor 4 coloane, obtinandu-se suma magica 34.
Deoarece Matlabul prefera sa lucreze cu coloanele matricilor, pentru a putea face suma randurilor matricii va trebui sa folosim transpusa acesteia (schimbarea randurilor cu coloanele). Transpusa matricii A se obtine prin urmatoarea comanda:
A'
Ce va determina:
ans =
16 5 9 4
10 6 15
2 11 7 14
13 8 12 1
Iar comanda sum(A') va produce un vector coloana ce va contine suma randurilor matricii.
ans =
Suma elementelor diagonalei principale se obtine din comanda sum aplicata functiei diag(A).
diag(A)
produce
ans =
si
sum(diag(A))
produce
ans =
Suma elementelor celelaltei diagonale nu se poate face in mod direct deoarece matlab nu a implemntat o functie directa de selectare a elementelor. Totusi prin folosirea functiei de interschimbare de la stanga la dreapta a elementelor matricii, fliplr, si aplicand functia de selectare a elementelor de diagonalei principale, pot fi selectate elementele diagonalei secundare.
sum(diag(fliplr(A)))
ans =
In acest mod am putut verifica daca matricea lui Durer este intradevar magica.
Indici
Elementul din randul i si coloana j a matricei A poate fi apelat prin A(i,j). De exemplu A(4,2) este elementul din randul 4 si coloana 2. In cazul nostru A(4,2) este 15. Pentru a calcula suma elementelor coloanei 4 vom scrie:
A(1,4) + A(2,4) + A(3,4) + A(4,4)
ce produce
ans =
Este de asemenea posibil sa ne referim la elementul unei matrici printr-un indice A(k). Acesta este modul obisnuit ce referire in cadrul vectorilor rand sau coloana. Daca ne referim in acelasi mod in cazul unei matrici bidimensionale atunci sirul de elementele va fi considerat ca un singur vector coloana format din coloanele matricei originale. Astfel in cazul matricei Durer, A(8) este o alta modalitate de a ne referila la valoarea 15 din locatia A(4,2).
Daca se incearca apelarea unei locatii din afara matricei matlab-ul va returna un mesaj de eroare:
t = A(4,5)
Index exceeds matrix dimensions.
Pe de alta parte daca se incearca memorarea unei valori la o locatie din afara matricii, atunci matlab-ul va creste numarul de coloane pentru a permite meorarea valorii la adresa specificata.
X = A;
X(4,5) = 17
X =
16 3 2 13 0
5 10 11 8 0
9 6 7 12 0
4 15 14 1 17
Operatorul doua puncte (:)
Operatorul doua puncte (:), este unul dintre cei mai importanti operatori ai matlabului..Acest operator se poate regasi in una din urmatoarele situatii.
Expresia:
1 : 10
genereaza un vector rand ce contine numerele intregi de la 1 la 10
2 3 4 5 6 7 8 9 10
Pentru a obtine o incrementare neunitara a sirului, va trebui specificata valoarea incrementului:
100 : -7 : 50
Genereaza valorile:
100 93 86 79 72 65 58 51
iar 0: pi/4: pi
determina sirul
0 0.7854 1.5708 2.3562 3.1416
Expresie ce foloseste un indice de referire la o anumita coloana a unei matrici:
A(1:k,j)
face referire la primele k elemente din coloana j a matricei A
Deci
sum(A(1:4,4))
va calcula suma primelor 4 elemente ale coloanei 4.
Operatorul doua puncte se refera la toate elementele unei coloane sau ale unui rand iar cuvantul cheie and se refera la ultima coloana sau rand ale matricii A.
sum(A(:,end))
va calcula suma elementelor ultimei coloane ale matricii A.
ans =
Functia magica
Matlab-ul are o functie ce creeaza patrate magice de aproape orice marime. Functia se numeste magic.
B = magic(4)
B =
2 3 13
11 10 8
9 7 6 12
4 14 15 1
Aceasta matrice este aproape la fel ca cea gravata de Durer si are aceleasi proprietati "magice" doar ca doua coloane din mijloc sunt inversate .
Pentru a obtine matricea lui Durer vom inversa coloanele din mijloc
A = B(:,[1 3 2 4])
ceea ce spune ca matricea A va avea coloanele matricei B in ordinea 1, 3, 2, 4. Ceea ce va determina:
A =
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1
De ca a schimbat Durer coloanele 2 si 3 intre ele? Probabil ca a vrut sa sublinieze anul gravarii 1514.
Expresii
Ca si alte programe, Matlabul, pune la dispozitia utilizatorului expresii matematice , dar spre deosebire de alte limbaje de programare, aceste expresii vor implica intrega matrice si nu doar un singur element.
Aceste expresii pot fi regasite sub forma de:
variabile
numere
operatori
functii
Variabilele
Matlab nu cere ca tipul sau dimensiunea variabilelor sa fie definite. Atunci cand un nume nou de variabila este declarat, aceasta este creata in mod automat si i se va aloca o anumita memorie. Daca variabila a mai fost declarata , Matlab ii va modifica valoarea continuta si daca este cazul si marimea memoriei alocate.
De exemplu pentru:
num_students = 25
se va crea o matrice 1 la 1 numita num_students si va memora valoarea 25 in locatia singurului element continut.
Numele unei variabile incepe cu o litera si este urmata de o serie de litere, numere sau underscor-uri. Numarul maxim de caractere recunoscut intr-un nume este de 31 de caractere. Matlab face distinctia intre litere mici si mari = case sensitive: A si a nu sunt aceleasi variabile. Pentru a vedea valorile asignate fiecarei variabile trebuie doar introdus numele variabilei.
Numerele
Reprezentarea numerelor in Malab se face in baza zece, cu optiunea de punct zecimal si semn negativ sau pozitiv. In notatia stiintifica se foloseste litera e pentru a specifica puterea lui zece. Numerele imaginare folosesc literele i sau j ca sufixe. Mai jos sunt prezentate cateva din numerele corect reprezentate:
-99 0.0001
1.60210e-20 6.02252e23
1i -3.14159j 3e5i
Toate numerele sunt memorate intern folosind o reprezentare specificata de standardul IEEE in virgula mobila. Numerele rerezentate in virgula mobila au o precizie finita de 16 digiti zecimali si un domeniu de reprezentare cuprins intre 10-308 si 10308.
Operatori
Matlab foloseste operatorii aritmetici clasici:
+ adunare
scadere
inmultire
impartire
impartire la stinga
^ ridicare la putere
' transpusa complex conjugate
( ) specifica o evaluare a expresiei
Functii
Matlab contine un numar de functii matematice standard: abs, sqrt, exp, si sin si unu numar de functii avansate ca si functia Bassel sau gama. Daca se aplica radacina patrata unui numar negativ Matlab nu va returna o eroare ci va calcula rezultatul complex. O lista completa a functiilor matematice elementare se gaseste scriind:
help elfun
Pentru o lista a matricilor si a functiilor matematice ceva mai avansate se tasteaza:
help specfun
help elmat
Cateva functii, ca sqrt si sin sunt functii incorporate.Aceste functii sunt parte din mediul Matlab, sunt calculate foarte rapid dar detaliile (algoritmul de calcul) de implementare nu sunt accesibile utilizatorului. Alte functii, ca si gamma sau sinh, sunt implementate (este descris algoritmul de calcul) prin intermediul unui fisier M. Astefel ca exista functii carora li se poate accesa (modifica) codul de implementarea a algoritmului iar altora nu.
Unele dintre functii genereaza valori unor constante:
pi 3.14159265.
i unitea imaginara,
j la fel ca i
eps precizia la reprezentarea in virgula mobila, ε =
realmin cel mai mic numar reprezentat in virgula mobila, 2-1022
realmax cel mai mare numar reprezentat in virgula mobila, (2-ε)21023
inf infinit
NaN Not-a-number, nu este un numar.
Valoarea infinit se obtine la impartirea unui numar diferit de zero la zero sau la evaluarea unui numar mai mare decat realmax.
NaN este generat atunci cand se evalueaza o expresie de tipul 0/0 sau inf - inf.
Deoarece numele variabilelor exemplificate nu este rezevata acestora li se poate redefini orice alta valoare:
eps = 1.e-6
Valoarea originala se poate reseta prin:
clear eps
Exemple de expresii
Mai jos sunt prezentate cateva expresii si rezultatele lor:
rho = (1+sqrt(5))/2
rho =
1.6180
a = abs(3+4i)
a =
5
z = sqrt(besselk(4/3,rho-i))
z =
0.3730+ 0.3214i
huge = exp(log(realmax))
huge =
1.7977e+308
toobig = pi*huge
toobig =
Inf
Matrici
Vor fi explicitate modurile de definire a matricilor:
Functii de generare a matricilor
Functii de incarcare
Fisiere M
Concatenarea
Stergerea de randuri sau coloane
Functii de generare a matricilor
zeros toate elementele matricei sunt egale cu 0
ones toate elementele matricei sunt egale cu 1
rand valori aleatoare uniform distribuite
randn valori aleatoare nornal distribuite (medie 0 si dispersie 1)
Cateva expresii
Z = zeros(2,4)
Z =
F = 5*ones(3,3)
F =
N = fix(10*rand(1,10))
N =
2 6 4 8 7 4 0 8 4
R = randn(4,4)
R =
0.0860 -0.3210 -1.2316
-0.6014 -2.0046 1.2366 1.0556
0.5512 -0.4931 -0.6313 -0.1132
-1.0998 0.4620 -2.3252 0.3792
Functii de incarcare
Functia de incarcare citeste fisierele ce contin matricile
|