Sunteți pe pagina 1din 25

Facultatea de Energetica

10
Laboratorul nr.1
Sisteme de Programare pentru Modelare si
Simulare
Adrian Stan


2
INTRODUCERE N MATLAB
-parte teoretica-
1. Ce este MATLAB
MATLAB este un pachet de programe de nalt performan, dedicat calculului numeric i
reprezentrilor grafice n domeniul tiinei i ingineriei.
El integreaz analiza numeric, calculul matriceal, procesarea semnalului i reprezentrile grafice,
ntr-un mediu uor de nvat i folosit, n care enunurile problemelor i rezolvrile acestora sunt
exprimate n modul cel mai natural posibil, aa cum sunt scrise matematic, fr a fi necesar
programarea tradiional. Elementul de baz cu care opereaz MATLAB-ul este matricea. Cu acesta
se pot rezolva probleme fr a fi necesar scrierea unui program ntr-un limbaj de programare.
Dezvoltat de-a lungul mai multor ani, acum MATLAB-ul este un standard n mediile universitare,
precum i n domeniile cercetrii i rezolvrii practice a problemelor legate de procesarea
semnalelor, identificarea sistemelor, controlul statistic, prelucrarea datelor experimentale etc.
2. Structura sistemului MATLAB
Structura sistemului MATLAB const n cinci pri principale:
Mediul de dezvoltare. Acesta este alctuit dintr-un set de unelte care faciliteaz folosirea funciilor i
fiierelor MATLAB. Multe dintre acestea reprezint de fapt interfeele grafice i includ fereastra
principal MATLAB sau MATLAB Desktop, fereastra de comenzi sau Command Window, fereastra ce
memoreaz istoria comenzilor sau Command History, i browser-ele de Help, Workspace, Files,
Search Path etc.
Biblioteca de funcii matematice MATLAB. Aceasta const ntr-o vast colecie de algoritmi de calcul,
pornind de la funcii elementare precum sum, sinus, cosinus i aritmetic complex, pan la funcii
mai sofisticate precum inversare de matrici, calcul de valori proprii, funcii Bessel, i transformata
Fourier.
Limbajul MATLAB. Limbajul MATLAB este un limbaj matrice/vector de nalt nivel ce include
instruciuni de control al buclelor, funcii, structuri de date, comenzi de intrare/ieire i instruciuni
de programare orientat pe obiecte. Limbajul MATLAB permite att programarea superficial
pentru crearea rapid a unor mici programe de calcul specifice, ct i "programarea n detaliu" n
vederea dezvoltrii unor programe complexe de nivel superior.
Handle Graphics. Handle Graphics reprezint sistemul de grafic MATLAB i include att comenzi de
nalt nivel pentru vizualizarea 2D i 3D a datelor, procesare de imagini, animaie i grafic, ct i
comenzi de jos nivel ce permit personalizarea complet a reprezentrilor grafice i construirea
integral a interfeelor grafice (GUI) pentru aplicaiile MATLAB.
MATLAB Application Program Interface (API). Aceasta este o bibliotec ce permite scrierea
programelor C i Fortran ce interacioneaz cu MATLAB. Biblioteca conine facilitai de apel de
subrutine din MATLAB (dynamic linking), de apelare a MATLAB-ul ca pe o main de calcul, i de
citire i scriere de fiiere MAT-files.




3
3. Ferestrele de lucru MATLAB
Fereastra principal MATLAB (MATLAB Desktop). Dup lansarea programului MATLAB, n prim plan
apare fereastra principal MATLAB, ce conine unelte de control al directoarelor, fiierelor,
variabilelor i al aplicaiilor asociate MATLAB-ului.

Urmtoarele ferestre sunt supervizate de MATLAB Desktop, dei nu toate apar implicit dup lansare:
Fereastra de comenzi (Command Window), permite lansarea comenzilor MATLAB;
Fereastra Command History, permite memorarea, vizualizarea, editarea i relansarea
funciilor lansate anterior n Command Window.
Fereastra Launch Pad, permite lansarea uneltelor i accesarea documentaiei MATLAB
Fereastra Current Directory Browser, permite controlul asupra fiierelor MATLAB i a celor
asociate
Fereastra Help Browser, permite vizualizarea i cutarea documentaiei MATLAB
Fereastra Workspace Browser permite vizualizarea i schimbarea coninutului spaiului de
lucru
Fereastra Array Editor permite editarea i vizualizarea coninutului variabilelor ntr-un
format tabelar
Fereastra Editor/Debugger permite crearea, editarea i depanarea fiierelor M-files ce
conin funcii MATLAB.
Command Window. Command Window este fereastra principal de comunicare a utilizatorului cu
programul MATLAB. Aceast fereastr permite lansare de funcii i efectuarea de operaii MATLAB.
Pentru vizualizarea ferestrei se selecteaz Command Window din meniul View.

4

Command History. Fereastra Command History apare cnd lansai MATLAB. Fereastra Command
History afieaz o list a funciilor lansate recent n Command Window.

Afiarea funciilor n Command History Window. Lista de comenzi afiate n Command History
include att funcii din sesiunea curenta ct i funcii din sesiuni anterioare. Ora i data pentru
fiecare sesiune apare n partea superioara a listei de funcii aferente acelei sesiuni de lucru. Folosii
scroll-bar-ul sau sgeile up i down pentru a naviga n fereastra Command History. Fiierul specific
uneltei Command History este history.m. Tastai prefdir n Command Window pentru a vedea locaia
acestui fiier. Fiierul history.m este ncrcat odat cu lansarea programului MATLAB i suprascris
cnd ieii din MATLAB.
tergerea funciilor din Command History Window. Se recomand tergerea funciilor din Command
History Window cnd se strng prea multe i navigarea devine dificil. Toate funciile sunt
nregistrate pn cnd alegei opiunea de a le terge. Pentru a terge o funcie, selectai funcia sau
folosii Shift+clic sau Ctrl+clic pentru a selecta mai multe, sau folosii Ctrl+A pentru a le selecta pe
toate. Apoi clic-dreapta i selectai una dintre opiunile de tergere din meniul contextual:
Delete Selection terge funcia selectat
Delete to Selection terge toate funciile anterioare pn la cea selectat
Delete Entire History terge toate funciile din Command History Window

5
O alt cale de tergerea a ntregii liste de funcii const n selectarea comenzii Clear Command
History din meniul Edit.
Lansarea funciilor din Command History Window. Dublu-clic pe orice funcie din Command History
Window pentru a executa acea funcie. De exemplu, dublu-clic pe edit myfile pentru a deschide
fiierul myfile.m n Editor. Putei deasemenea lansa o funcie cu clic-dreapta pe funcie i selectnd
Evaluate Selection din meniul contextual, sau copiind funcia n Command Window.
Copierea funciilor din Command History Window. Selectai o funcie, sau cu Shift+clic sau Ctrl+clic
selectai mai multe funcii, sau folosii Ctrl+A pentru a selecta toate funciile. Apoi putei executa
urmtoarele comenzi.
Launch Pad. Fereasta Launch Pad din MATLAB permite accesul uor la unelte, demo-uri, i
documentaia produselor MathWorks. Pentru lansare selectai Launch Pad din meniul View din
MATLAB Desktop. ndat sunt listate toate produsele MathWorks instalate pe sistemul dvs.

Current Directory Browser. Pentru a cuta, vizualiza, deschide, i pentru a modifica directoare i
fiiere asociate MATLAB-ului, folosii Current Directory browser. Pentru a deschide Current Directory
browser, selectai Current Directory din meniul View din MATLAB Desktop, sau tastai filebrowser la
promptul Command Window.


6
Principalele operaiuni cu directoare i fiiere ce pot fi efectuate folosind Current Directory browser
sunt operaiuni ce folosesc meniurile grafice tip windows, respectiv meniurile contextuale, i anume:
vizualizarea i modificarea directoarelor,
crearea, redenumirea, copierea i tergerea directoarelor i fiierelor,
deschiderea fiierelor,
lansarea i vizualizarea coninutului fiierelor,
cutarea i nlocuirea coninutului fiierelor.
Help Browser. Se folosete Help browser pentru cutarea i vizualizarea documentaiei MATLAB i
produsele MathWorks. Help browser este un Web browser integrat n MATLAB Desktop care
afieaz documente HTML.

Help browser conine dou paneluri:
Panelul Help Navigator din stnga, care se folosete pentru cutarea informaiei. Acesta
include un filtru Product Filter i ferestrele Contents, Index, Search, i Favorites.
Panelul display din dreapta, folosit pentru vizualizarea documentaiei.
Proprietile specifice ferestrei Help Browser pot fi modificate selectnd Preferences din meniul File
al ferestrei MATLAB Desktop. Cutia de dialog se deschide i permite selectarea opiunii Help n urma
creia se deschide fereastra Help Preferences pentru modificarea proprietilor ferestrei Help
Browser. Se pot modifica caracteristicile fontului folosit n ferestrele Help Browser, se poate selecta
locaia documentaiei, etc.
Workspace Browser. Folosii Workspace browser pentru executare de operaiuni n spaiul de lucru
MATLAB.

7

Printre operaiunile ce pot fi executate din Workspace browser sunt:
vizualizarea Current Workspace
salvarea Current Workspace
ncrcarea Saved Workspace
tergerea Workspace Variables
crearea graficelor din Workspace Browser
vizualizarea i editarea Workspace Variables folosind Array Editor
Proprietile specifice ferestrei Workspace Browser pot fi modificate selectnd Preferences din
meniul File al ferestrei MATLAB Desktop. Cutia de dialog se deschide i permite selectarea opiunii
Workspace n urma creia se deschide fereastra Workspace Preferences pentru modificarea
proprietilor ferestrei Workspace. Se pot modifica caracteristicile fontului folosit n Workspace
browser i se poate opiona pentru afiarea unei csue de dialog de confirmare a tergerii
variabilelor.
Array Editor. Array Editor se folosete pentru afiarea i editarea unei reprezentri vizuale 1D i 2D a
vectorilor de tip numere, iruri de caractere etc. Pentru a lansa Array Editor din Workspace browser
se selecteaz n Workspace browser variabila pe care dorii s o afiai (Shift+clic sau Ctrl+clic pentru
a selecta mai multe variabile). Clicai pe butonul open de pe toolbar, sau clic-dreapta i selectai
Open Selection din meniul contextual. Alternativ, n cazul unei singure variabile, putei face dublu-
clic pe aceasta pentru a o deschide. Array Editor se lanseaz, afind valorile variabilelor selectate.
Nu putei deschide un vector cu 10,000 elemente sau mai multe.
Pentru a afia coninutul unei variabile n workspace, tastai numele variabilei la promptul Command
Window.
Pentru a afia o variabil n Array Editor, folosii funcia openvar('nume_variabila') tastat la linia de
comand a ferestrei Command Window i avnd ca argument numele variabilei pe care dorii s o
afiai.

8

Editor/Debugger. Fereastra Editor/Debugger a MATLAB-ului pune la dispoziie o interfa grafic cu
utilizatorul ce permite editarea elementara de text i depanarea (debugging) oricrui tip de fiier M-
file. Editor/Debugger este o unealt care se poate folosi pentru editare, debugging sau ambele.
4. Structura programelor MATLAB
MATLAB lucreaza fie in modul linie de comanda, caz in care fiecare linie este prelucrata imediat si
rezultatele sunt afisate, fie utilizand programe scrise in fisiere. Fisierele care contin instructiuni
MATLAB se numesc fisiere M sau M-files, intrucat au extensia .m. Un fisier M poate fi de doua tipuri,
script sau functie. Ambele tipuri de fisiere sunt scrise in format ASCII, iar algoritmul implementat
poate fi urmarit si modificat cu usurinta daca se cunosc conventiile si sintaxa limbajului de
programare MATLAB. Aceste tipuri de fisiere M permit crearea unor noi functii care le pot completa
pe cele existente. Astfel MATLAB poate fi extins, permitand abordarea anumitor aplicatii specifice
din stiinta si inginerie.
4.1. Fisierele script
Fisierele script sunt fisiere externe de tip text care contin secvente de comenzi MATLAB. Prin
apelarea numelui fisierului, se executa secventele de comenzi MATLAB continute in fisier. Dupa
executia completa a unui fisier script variabilele cu care acesta a operat raman in workspace. Aceste
fisiere nu permit integrarea in programe mari, realizate pe principiul modularizarii. Fisierele script
pot fi folosite la rezolvarea unor probleme care necesita un numar relativ mare de instructiuni a
caror lansare la linia de comanda ar deveni greoaie.
4.2. Fisierele functie
In cazul in care prima linie a unui fisier M contine cuvantul cheie function fisierul respectiv intra in
categoria fisierelor de tip functie. Un fisier de tip functie difera de un fisier de tip script prin faptul ca
accepta argumente de intrare. Astfel, la terminarea executiei unei functii, in memoria calculatorului
nu raman decat variabilele de iesire ale functiei respective. Forma generala a primei linii a unui fisier
functie este:
function [par_iesire] = nume_functie(par_intrare)
unde :
function reprezinta un cuvant cheie obligatoriu care declara ca fisierul este de tip functie
nume_functie reprezinta numele functiei, adica numele sub care este salvat fisierul, insa fara
extensie. Numele functiei nu poate fi identic cu cel al unui fisier M pre-existent.

9
par_iesire1, par_iesire2 reprezinta parametri de iesire care trebuiesc separati prin virgula si
cuprinsi intre paranteze drepte. Daca functia nu are parametri de iesire parantezele drepte si
semnul egal nu mai au sens.
par_intrare1, par_intrare2 reprezinta parametri de intrare care trebuiesc separati prin
virgula si cuprinsi intre paranteze rotunde. Daca functia nu are parametri de intrare
parantezele rotunde nu mai au sens.
Fisierele functie pot fi adaugate ca functii noi in structura MATLAB. Instructiunile si comenzile
utilizate de noua functie sunt inregistrate intr-un fisier cu extensia .m. De pilda fisierul de tip functie
avand numele medie.m calculeaza media aritmetica a elementelor unui vector si are sintaxa de mai
jos:
function m = medie (x)
n = length (x)
m = sum (x)/n
y = [Media numerelor este: num2str(m)];
disp(y)
5. Includerea comentariilor si a help-ului intr-un program
Introducerea unui comentariu intr-un program se realizeaza prin adaugarea caracterului procent (%)
plasat la inceputul liniei. Daca semnul procent (%) apare pe prima pozitie intr-o linie, aceasta va fi
omisa de compilator, iar daca apare in oricare alta pozitie intr-o linie de program, partea de program
care urmeaza dupa acest caracter va fi omisa. Intr-un program un comentariu poate aparea in
oricare pozitie insa este recomandata prezenta unui comentariu dupa prima linie care declara o
functie. In acest caz, comentariul care apare imediat dupa linia de declarare a functiei, constituie
help-ul fisierului respectiv. Daca se apeleaza : help nume_functie se afiseaza liniile care incep cu
semnul procent si sunt situate intre prima linie dupa declararea functiei si prima linie libera sau
prima instructiune ce urmeaza acestui grup compact de linii.
Prin urmare pentru a atasa un help unui program MATLAB se scriu liniile de program incepand cu
semnul procent (%) si sunt situate intre prima linie dupa declararea functiei si prima linie libera sau
prima instructiune ce urmeaza acestui grup compact de linii.
6. Crearea, editarea si depanarea fisierelor M
Exista mai multe metode de creare, editare si depanare a fisierelor M, dupa cum este prezentat in
tabelul de mai jos.
Functie Metoda
Crearea si editarea fisierelor M Folosind MATLAB Editor
Folosind MATLAB Editor de sine statator fara a lansa MATLAB
Folosind oricare editor de text, cum ar fi Notepad, WordPad, etc.
Depanarea fisierelor M Folosind instructiunile generale de depanare
Folosind MATLAB Debugger
Folosind MATLAB Debugging Functions


10
6.1 Crearea si editarea fisierelor M folosind MATLAB Editor.
Crearea si editarea fisierelor M poate fi efectuata eficient folosind MATLAB Editor. MATLAB Editor
pune la dispozitia utilizatorului o interfata grafica performanta de editare clasica de text. Aceasta
aplicatie poate fi folosita atat in cadrul MATLAB-ului, cat si ca o aplicatie de sine statatoare fara a
necesita neaparat lansarea pachetului de programe MATLAB. In afara functiilor de editare obisnuite,
MATLAB Editor prezinta si functii specifice cum ar fi:
Functie Mod de lucru

Transformarea unor linii de cod in comentarii sau
a unor comentarii in linii de cod prin adaugarea
sau eliminarea simbolului %

Se selecteaza liniile respective in MATLAB Editor
si apoi fie se selecteaza meniul Text ->
Comment/Uncomment fie se apasa Ctrl+R/Ctrl+T
fie se selecteaza Comment/Uncomment din
meniul contextual
Alinierea inteligenta a instructiunilor

Se selecteaza liniile respective in MATLAB Editor
si apoi fie se selecteaza meniul Text -> Smart
Indent fie se apasa Ctrl+I fie se selecteaza Smart
Indent din meniul contextual
Identificarea parantezelor si acoladelor Se pozitioneaza cursorul intre doua paranteze
sau acolade ( ), [ ], { }, si apoi fie se selecteaza
meniul Text -> Balance Delimiters, fie se apasa
Ctrl+B. Daca nu exista nici o pereche de
paranteze delimitatoare MATLAB lanseaza un
beep sonor.
Indentare

Se selecteaza liniile respective in MATLAB Editor
si apoi fie se selecteaza meniul Text -> Decrease
Indent/ Increase Indent fie se apasa Ctrl+[/Ctrl+]

Fisierele M pot fi creeate si editate si utilizand editoare exterioare MATLAB-ului, cum ar fi Notepad,
Wordpad etc. Pentru a fi considerate de catre MATLAB drept fisiere M, fisierele create cu aceste
editoare trebuiesc salvate cu extensia .m.
6.2. Depanarea fisierelor M folosind MATLAB Debugger.
Depanarea sau Debugging este procesul prin care sunt identificate si rezolvate problemele din cadrul
codului dvs. MATLAB. In principiu exista doua tipuri de erori:
Erori de sintaxa de pilda, introducerea gresita a unui nume de functie sau omiterea unei
paranteze. Cand lansati un fisier M cu o eroare de sintaxa, in mod normal MATLAB o va
detecta si va afisa un mesaj de eroare in Command Window descriind eroarea si numarul
liniei in fisierul M. Clicati pe portiunea subliniata a mesajului de eroare, sau pozitionati
cursorul pe mesajul de eroare si apasati Ctrl+Enter. Fisierul M ce contine eroarea se deschide
in Editor, cu linia eronata afisata in prim plan.
Erori run-time aceste erori sunt in general de algoritm. Erorile run-time sunt vizibile cand
fisierul M produce rezultate neasteptate.
Identificarea erorilor de sintaxa nu este de regula dificila daca se tine cont de mesajele de eroare
MATLAB. Erorile run-time sunt insa mai dificil de identificat deoarece acestea pot apare in interiorul
anumitor functii. Iata cateva sfaturi pentru identificarea si inlaturarea erorilor run-time:
Stergeti simbolurile ; din instructiunile fisierelor M cu pricina. In urma acestei operatiuni
MATLAB va afisa rezultatelor pe ecran pe durata executiei fisierului M.

11
Adaugati instructiunii keyboard la fisierul M. Instructiunile keyboard opresc executia
fisierului M la un anumit punct unde acestea apar si va permit examinarea si modificarea
workspace-ul local al functiei. Acest mod este indicat de un prompt special: K>> Continuarea
executiei functiei se realizeaza tastand return si apasand tasta Return.
Folositi MATLAB Debugger sau functiile debugging. Acestea sunt folositoare pentru
corectarea erorilor run-time deoarece puteti accesa workspace-ul functiilor si apoi puteti
examina sau schimba valorile pe care le contin. Puteti defini sau sterge puncte de
intrerupere sau breakpoints, pentru oprirea executiei programului la o anumita locatie (la o
anumita linie de program) in interiorul fisierelor M.
CALCULE SIMPLE IN MATLAB. VECTORI SI MATRICI
- teorie si exemplificari-
Operatii standard aritmetice:
>> a=5;
>> b=12;
>> a+b
ans =
17
Ans apare in momentul in care expresiei nu ii este asociata nicio variabila.
>> x=sin(2)
x =
0.9093
Daca nu este necesara afisarea variabilei de iesire, putem folosi semnul ; dupa tastarea expresiei.
Virgula se poate folosi daca avem mai multe expresii pe aceeasi linie de intrare, pentru a le separa:
>> x=sin(22), y=exp(3)
x =
-0.0089
y =
20.0855
Calcule cu numere complexe:
>> (-1)^0.25
ans =
0.7071 + 0.7071i
unde i reprezinta 1 , partea imaginara.
Pentru a memora un sir de numere {1,2,3,4,5} intr-un vector x vom folosi scrierea:
>> x=[1 2 3 4 5];

12
Il putem folosi pentru a rezolva ecuatii:
Sa se rezolve funcia :
1 5 , 0
3 , 6 2
) (
2
2 3
+
+
=
x x
x x x
x f pentru x=2.
>> x=2;
>> M=x^3-2*x^2+x-6.3;
>> N=x^2+0.5*x-1;
>> f=M/N
f =
-1.0750
>> x=2;
>> f=( x^3-2*x^2+x-6.3)/( x^2+0.5*x-1)
f =
-1.0750
Daca dorim sa afisam elementele unei matrici
(


=
3 0
1 2
A vom proceda astfel:
>> A=[2 -1; 0 3];
Identificarea unui anumit element in cazul structurilor uni sau bidimensionale se face prin
specificarea indicilor ce corespund pozitiei elementului respectiv in cadrul structurii:
>> x=[1 2 3 4 5];
>> x(4)
ans =
4
>> A=[2 -1 ;0 3];
>> A(1,2)
ans =
-1
Pentru a genera un vector cu n elemente egal spatiate, intre capetele amax si amin, vom folosi
comanda linspace(amax, amin, N). Pasul n poate fi si negativ. Daca dorim un pas n=0,5 sintaxa este
.5
>> linspace(0, 1, 7)
ans =
0 0.1667 0.3333 0.5000 0.6667 0.8333 1.0000
Explicatie: S-a generat un vector cu pas liniar, cu limitele a=0, b=1 si pasul n=7.
Pentru a afla lungimea unui vector se foloseste functia length(x), iar pentru determinarea
dimensiunilor unei matrici avem functia size(A).
>> length(x)
ans =
5
>> A=[2 -1 ;0 3];
>> size(A)
ans =
2 2
Pentru a genera un vector cu valori distribuite logaritmic se foloseste functia logspace
(x=logspace(amin, amx, N).
>> x = logspace(-2, 2, 5)
x =

13
0.0100 0.1000 1.0000 10.0000 100.0000
Identificarea unei anumite coloane sau linii din cadrul unei matrici:
>> A=[1 2 3; 3 4 -1; 2 1 1; 4 3 1];
>> A(:,2)
ans =
2
4
1
3
>> A(3,:)
ans =
2 1 1
de incercat A(:)!!!!
Operaiile aritmetice cu matrici:
a) Adunarea i scderea
A=[2 5 6]; B=[4 3 2]; p=2
C=A-B
D=A-p
E=p-A
Solutia:
C=[-2 2 4]
D=[0 3 4]
E=[0 -3 4]
b) nmulirea
A=[2 5 6]; B=[4 3 2]; p=2
C=A.*B
D=A.*p
E=p.*A
Soluia:
C=[8 15 12]
D=[4 10 12]
E=[4 10 12]
c) mprirea la dreapta
A=[2 5 6]; B=[4 3 2]; p=2
C=A./B
D=A./p
E=p./A
Soluia:
C=[ 0.5000 1.6667 3.0000]
D=[ 1.0000 2.5000 3.0000]
E=[ 1.0000 0.4000 0.3333]
d) mprirea la stnga
A=[2 5 6]; B=[4 3 2]; p=2
C=A.\B
Soluia:
C=[ 2.0000 0.6000 0.3333]

14
D=A.\p
E=p.\A
D=[ 1.0000 0.4000 0.3333]
E=[ 1.0000 2.5000 3.0000]
e) Ridicarea la putere
A=[2 5 6]; B=[4 3 2]; p=2
C=A.^B
D=A.^p
E=p.^A
Soluia:
C=[ 16 125 36]
D=[ 4 25 36]
E=[ 4 32 64]
f) Inversa matricei
A=[ 1 20 3
4 5 6
7 8 9];
A
-1
sau inv(A) sau A\eye(size(A))
Soluia:
ans =
-0.0278 -1.4444 0.9722
0.0556 -0.1111 0.0556
-0.0278 1.2222 -0.6944
Matlab ofera si posibilitatea vectorizarii operatiilor aritmetice cu matrici utilizand ..
Sa se calculeze valorile functiei
2
1
1
) (
x
y x f
+
= = , unde x reprezinta vectorul valorilor cuprinse intre -
5 si 5 cu pasul 0.1.
>> x=(-5:.1:5);
>> y=x./(1+x.^2)
y =
Columns 1 through 7
-0.1923 -0.1959 -0.1997 -0.2036 -0.2076 -0.2118 -0.2161
Columns 8 through 14
-0.2206 -0.2253 -0.2302 -0.2353 -0.2406 -0.2461 -0.2519
Columns 15 through 21
-0.2579 -0.2642 -0.2707 -0.2775 -0.2847 -0.2922 -0.3000
Columns 22 through 28
-0.3082 -0.3167 -0.3257 -0.3351 -0.3448 -0.3550 -0.3657
Columns 29 through 35
-0.3767 -0.3882 -0.4000 -0.4121 -0.4245 -0.4370 -0.4494
Columns 36 through 42
-0.4615 -0.4730 -0.4833 -0.4918 -0.4977 -0.5000 -0.4972
Columns 43 through 49

15
-0.4878 -0.4698 -0.4412 -0.4000 -0.3448 -0.2752 -0.1923
Columns 50 through 56
-0.0990 0 0.0990 0.1923 0.2752 0.3448 0.4000
Columns 57 through 63
0.4412 0.4698 0.4878 0.4972 0.5000 0.4977 0.4918
Columns 64 through 70
0.4833 0.4730 0.4615 0.4494 0.4370 0.4245 0.4121
Columns 71 through 77
0.4000 0.3882 0.3767 0.3657 0.3550 0.3448 0.3351
Columns 78 through 84
0.3257 0.3167 0.3082 0.3000 0.2922 0.2847 0.2775
Columns 85 through 91
0.2707 0.2642 0.2579 0.2519 0.2461 0.2406 0.2353
Columns 92 through 98
0.2302 0.2253 0.2206 0.2161 0.2118 0.2076 0.2036
Columns 99 through 101
0.1997 0.1959 0.1923
Matlab permite calculul puterilor unei matrici doar in cazul cand acestea sunt patratice. De observat
diferenta dintre A^2 si A.^2, unde A reprezinta o matrice. In primul caz matricea trebuie sa fie
patratica, pe cand in al doilea caz ea poate avea orice dimensiune.
>> A=[1 2 3; 45 6 7; 12 3 4; 1 1 1];
>> A.^2
ans =
1 4 9
2025 36 49
144 9 16
1 1 1
>> A^2
??? Error using ==> mpower
Matrix must be square.
Pentru a calcula transpusa unei matrici folosim simbolul (apostroful):
>> A=[1 2 3; 45 6 7; 12 3 4];
>> A'

16
ans =
1 45 12
2 6 3
3 7 4
Operatorul transpus , poate fi folosit la generarea de tabele de valori din vectori, astfel
>> x=0:4;
>> y=5:5:25;
>> A=[x' y']
A =
0 5
1 10
2 15
3 20
4 25
Putem reprezenta o matrice bidimensionala ca un vector linie cu elemente vectori coloana.
>> B=[[1 2 3]' [2 4 7]' [3 5 8]']
B =
1 2 3
2 4 5
3 7 8
Multe comenzi din Matlab care actioneaza asupra scalarilor, actioneaza si asupra vectorilor sau
matricilor, element cu element.
>> sqrt([1 2 4 6])
ans =
1.0000 1.4142 2.0000 2.4495
Alte comenzi folosite in calculele cu vectori: min(x), max(x) returneaza valoarea minima respectiv
maxima dintr-un vector, sort(x) returneaza un vector ordonat crescator ce contine valorile lui x,
sum(x) returneaza suma elementelor unui vector.
>> x=linspace(0, 1, 7)
x =
0 0.1667 0.3333 0.5000 0.6667 0.8333 1.0000
>> [min(x) max(x)]
ans =
0 1

17
>> sort(x)
ans =
0 0.1667 0.3333 0.5000 0.6667 0.8333 1.0000
>> sum(x)
ans =
3.5000
Pentru generarea aleatoare a elementelor unei matrici avem doua functii importante. Prima, rand,
care genereaza o matrice aleatoare de numere, corespunzatoare distributiei uniforme pe intervalul
[0, 1], a doua radn va produce o matrice de numere aleatoare corespunzatoare distributiei normale.
Sa se genereze o matrice aleatoare cu dimensiunea 2x2 si o matrice aleatoare cu dimensiunea 2x3 cu
elementele distribuite uniform si normal.
>> R2n=rand(2, 3)
R2n =
0.8003 0.4218 0.7922
0.1419 0.9157 0.9595
>> R2u=rand(2, 3)
R2u =
0.6557 0.8491 0.6787
0.0357 0.9340 0.7577
>> R1n=rand(2)
R1n =
0.7431 0.6555
0.3922 0.1712
>> R1u=rand(2)
R1u =
0.7060 0.2769
0.0318 0.0462
Folosind comanda triu(A) putem extrage partea triunghiulara superioara a matricei A, iar ca sa
extragem matricea inferior triunghiulara folosim comanda tril(A).
>> x=[1 2 3; 4 5 6; 7 8 9];
>> A=triu(x)
A =
1 2 3
0 5 6

18
0 0 9
>> B=tril(x)
B =
1 0 0
4 5 0
7 8 9
Comenzile min si max utilizate pentru matrici, returneaza doi vectori ce contin elementele minime,
respectiv maxime pe fiecare coloana a matricei.
>> A=[1 2 3; 4 5 6; 7 8 9];
>> min(A)
ans =
1 2 3
>> max(A)
ans =
7 8 9
O functie utila atat in lucrul cu vectori cat si in cel cu matrici este functia find, care returneaza pozitia
elementului din structura ce satisface o conditie data.
>> x=-2:.05:2;
>> y=sin(3*pi*x).*exp(-x.^2);
>> plot(x,y,':')
>> k=find(y>0.5)
k =
30 31 32 33 43 44 45 46 57
>> hold on
>> plot(x(k),y(k),'o')

19

In cazul matricelor functia find opereaza in acelasi mod.
>> A=[-2 3 4 5; -2 0 3.4 1; 1 1 2 0];
>> k=find(A==0)
k =
5
12
S-au gasit elemente de zero pe pozitiile 5 si 12.
Pentru a sterge ecranul folosim comanda clc.

APLICATII
-parte practica-
1. Afisarea unui text (Seminar1; Nume; Grupa; Data)
Sintaxa MATLAB:
%Afisarea unui text
disp('Test la SPMS');
disp('Nume ...');
disp('Grupa ...');
disp('Data ...');
Cum apare in Command Window:
Test la SPMS
Nume ...
Grupa ...
Data ...
-2 -1.5 -1 -0.5 0 0.5 1 1.5 2
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1

20
2. S se genereze 5 vectori liniari, V1, V2, V3, V4 i V5, pe intervalele 2-7, 3-6, 5-10, 4-10 i respectiv
2-8, fiecare cu 5 elemente.
Sintaxa MATLAB:
% Generararea vectorilor
V1=linspace(2,7,5);disp('V1=');disp(V1);
V2=linspace(3,6,5);disp('V2=');disp(V2);
V3=linspace(5,10,5);disp('V3=');disp(V3);
V4=linspace(4,10,5);disp('V4=');disp(V4);
V5=linspace(2,8,5);disp('V5=');disp(V5);

Cum apare in Command Window:
V1=
2.0000 3.2500 4.5000 5.7500 7.0000
V2=
3.0000 3.7500 4.5000 5.2500 6.0000
V3=
5.0000 6.2500 7.5000 8.7500 10.0000
V4=
4.0000 5.5000 7.0000 8.5000 10.0000
V5=
2.0000 3.5000 5.0000 6.5000 8.0000
3. Folosind concatenerea vertical s se determine o matrice A alctuit din elementele vectorilor V1-
V5 i s se determine elementele diagonalei principale ale acesteia.
Sintaxa MATLAB:
%Concatenarea
A=[V1;V2;V3;V4;V5];disp('A=');disp(A);
%Elementele diagonalei principale a matricei A
disp('Elementele diagonalei:');diag(A);disp(diag(A));
Cum apare in Command Window:
A=
2.0000 3.2500 4.5000 5.7500 7.0000
3.0000 3.7500 4.5000 5.2500 6.0000
5.0000 6.2500 7.5000 8.7500 10.0000
4.0000 5.5000 7.0000 8.5000 10.0000
2.0000 3.5000 5.0000 6.5000 8.0000

21
Elementele diagonalei:
2.0000
3.7500
7.5000
8.5000
8.0000
4. Ce numere au liniile i coloanele matricei A pe care se afl elemente mai mari ca 8.
Sintaxa MATLAB:
%Numarul liniei si coloanei pe care se afla
%elemente mai mari ca 8
[a,b]=ind2sub(size(A),find(A>8));
disp('linia cu elemente>8=');disp(a);disp('coloana cu
elemente>8=');disp(b);
Cum apare in Command Window:
linia cu elemente>8=
3
4
3
4
coloana cu elemente>8=
4
4
5
5






22
5. Considernd matricea
(
(
(
(
(
(


=
8 5 , 5 5 , 11 5 , 7 1
4 5 , 12 6 5 , 8 6
6 , 6 75 , 17 8 , 14 25 , 0 2
0 75 , 0 5 , 10 25 , 0 2
6 85 , 7 8 , 0 25 , 5 1
B , s se determine numrul liniei i
coloanei pe care se afl elemente egale cu zero n matricea C=A-B.
Sintaxa MATLAB:
%Scaderea matricelor
B=[-1 5.25 -0.8 7.85 6;
2 -0.25 10.5 0.75 0;
2 0.25 14.8 17.75 6.6;
6 8.5 6 12.5 4;
1 7.5 11.5 5.5 8];disp('B=');disp(B);
C=A-B;disp('C=');disp(C);
%Numarul liniei si coloanei pe care se afla
%elemente egale cu zero
[aa,bb]=ind2sub(size(C),find(C==0));
disp('linia cu elemente zero'); disp(aa);
disp('coloana cu elemente zero'); disp(bb);
Cum apare in Command Window:
B=
-1.0000 5.2500 -0.8000 7.8500 6.0000
2.0000 -0.2500 10.5000 0.7500 0
2.0000 0.2500 14.8000 17.7500 6.6000
6.0000 8.5000 6.0000 12.5000 4.0000
1.0000 7.5000 11.5000 5.5000 8.0000
C=
3.0000 -2.0000 5.3000 -2.1000 1.0000
1.0000 4.0000 -6.0000 4.5000 6.0000
3.0000 6.0000 -7.3000 -9.0000 3.4000
-2.0000 -3.0000 1.0000 -4.0000 6.0000
1.0000 -4.0000 -6.5000 1.0000 0
linia cu elemente zero
5
coloana cu elemente zero
5


23
Gasirea indicelui liniar dintr-o matrice, de dimensiuni oarecare, se face prin instructiunea
ind=sub2ind(siz,i1,i2,,in), care returneaza un indice echivalent ind, ce corespunde asezarii n
matricea initiala de dimensiune siz (data sub forma [siz]=size(A), unde A este matricea initiala) si de
indici i1,i2,,in, care corespund celor n dimensiuni ale matricei initiale A.
Functia ind2sub este utilizata pentru determinarea valorii indicelui dintr-o matrice, ce verifica o
anumita proprietate, fiind apelata, de exemplu, sub forma:
[I,J] = ind2sub(size(A),find(A>5)).
Daca,
A = [1 2 3 4 5 6, 7 8 9 10 11 12,]
atunci,
[I,J] = ind2sub(size(A),find(A>9)),
conduce la:
I =
2
2
2
J =
4
5
6
6. Determinai inversa matricei C i determinantul acesteia.
Sintaxa MATLAB:
%Inversa matricei C
Inversa=inv(C);
disp('Inversa=');disp(Inversa)
Cum apare in Command Window:
Inversa=
0.1987 0.0490 0.0297 -0.0989 0.0683
-0.0402 0.0335 0.0346 -0.0464 -0.1097
0.0568 -0.0022 -0.0260 0.0075 -0.0752
0.0097 0.0710 -0.0604 -0.0384 0.0043
0.0432 0.0808 -0.0087 0.0837 -0.0167

24
EXERCITII

1. S se rezolve funciile de mai jos considernd valoarea lui x=115:
a) ( ) ( ) ( ) ( )
3 3 3 3
3 2 1 + + + + + + = x x x x x f
b)
2 2 3 3
) 6 ( ) 5 ( ) 4 ( ) 5 ( ) ( + + + + + + + = x x x x x f
c) ( )
7 3
4 3
1 2
5 2
2
1
+
+

+
+

+
+
=
x
x
x
x
x
x
x f
2. Fie
|
|
|
.
|

\
|

=
2
7
4
6
5
1
A ;
|
|
|
.
|

\
|

=
2
2
8
4
6
0
B . S se calculeze: A+B; A-B; A x B; A/B; A\B; A
B
i inversa
matricei A.
3. Fie
|
|
|
.
|

\
|

=
1 2 2
1 3 0
1 4 1
A ;
|
|
|
.
|

\
|
=
1 1 0
2 0 1
1 0 2
B . S se calculeze: A+B, AB i BA; A
2
, B
2
i A
2
- B
2
; AB
BA.
4. S se determine matricea X din ecuaia:
|
|
|
.
|

\
|

+
|
|
|
.
|

\
|

=
|
|
|
.
|

\
|

+
0
3
6
3
9
3
6
4
3
2
7
1
2
3
2
3
2
1
2
3X
5. Fie
|
|
|
.
|

\
|

=
3 1 3
1 1 2
2 0 1
A . Dac ( ) x x x f 3
2
+ = s se calculeze f(A).
6. S se rezolve urmtoarele ecuaii matriceale:
a)
|
|
.
|

\
|
=
|
|
.
|

\
|
8 6
6 5
3 2
1 2
X ;
b)
|
|
.
|

\
|

=
|
|
.
|

\
|

5 3
2 7
8 5
2 1
X ;
c)
|
|
.
|

\
|

=
|
|
.
|

\
|

|
|
.
|

\
|

7 4
13 8
8 5
6 4
8 3
2 1
X ;
d)
|
|
|
.
|

\
|

=
|
|
|
.
|

\
|

5 4 3
1 1 2
3 5 1
1 2 1
2 1 0
3 2 1
X ;
e)
|
|
|
|
|
.
|

\
|
=
|
|
|
|
|
.
|

\
|
1 0 0 0
2 1 0 0
3 2 1 0
4 3 2 1
1 0 0 0
1 1 0 0
1 1 1 0
1 1 1 1
X ;

25
f)
|
|
|
.
|

\
|
=
|
|
|
.
|

\
|

|
|
|
.
|

\
|


1 0 0
1 1 0
1 1 0
1 0 0
2 1 0
3 2 1
1 2 1
0 1 1
3 2 2
X .

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