You are on page 1of 221

Tiberiu TUDORACHE

MEDII DE CALCUL N INGINERIE ELECTRIC



MATLAB











































































MEDII DE CALCUL N INGINERIE ELECTRIC

3
Sumar

PREFA...................................................................................................................................... 5
1. INTRODUCERE N MATLAB .............................................................................................. 6
1.1. Ce este MATLAB ?......................................................................................................... 6
1.2. Structura sistemului MATLAB........................................................................................ 7
1.3. Funcii de intrare i ieire................................................................................................. 8
1.4. Ferestrele de lucru MATLAB........................................................................................ 12
1.5. Configurarea MATLAB Desktop................................................................................... 24
2. FUNCII DE MANIPULARE A MATRICELOR................................................................. 33
2.1. Definirea matricelor....................................................................................................... 33
2.2. Indexarea elementelor.................................................................................................... 36
2.3. Operaiuni de baz cu matrice........................................................................................ 38
2.4. Rezolvarea sistemelor de ecuaii liniare folosind operaii cu matrice.............................. 47
2.5. Aplicaii numerice ......................................................................................................... 49
3. FUNCII MATEMATICE UZUALE.................................................................................... 58
3.1. Funcii de aproximare a numerelor................................................................................. 58
3.2. Funcii de operare cu numere complexe......................................................................... 58
3.3. Funciile putere, radical, logaritm i exponenial .......................................................... 59
3.4. Funcii trigonometrice ................................................................................................... 60
3.5. Funcii de matematic discret....................................................................................... 60
3.6. Aplicaii numerice ......................................................................................................... 61
4. FUNCII MATLAB DE INTERES GENERAL.................................................................... 65
4.1. Expresii MATLAB........................................................................................................ 65
4.2. Introducerea variabilelor, funciilor i comenzilor MATLAB......................................... 67
4.3. Opiuni de configurare Command Window.................................................................... 75
4.4. Utilizarea funciei Help.................................................................................................. 76
4.5. Funcii de gestionare a spaiului de lucru, a directoarelor i fiierelor............................. 81
4.6. Funcii de manipulare a datei i orei............................................................................... 86
4.7. Elemente de interfaare MATLAB................................................................................. 87
4.8. Aplicaii numerice ......................................................................................................... 98
5. REPREZENTAREA GRAFICELOR .................................................................................. 101
5.1. Reprezentarea graficelor 2D ........................................................................................ 101
5.2. Reprezentarea graficelor 3D ........................................................................................ 103
5.3. Configurarea i salvarea graficelor............................................................................... 106
5.4. Aplicaii numerice ....................................................................................................... 114
6. ELEMENTE DE PROGRAMARE MATLAB .................................................................... 124
6.1. Fiiere de tip M............................................................................................................ 124
6.2. Tipuri de variabile i de operatori ................................................................................ 129
6.3. Instruciuni de control logic ......................................................................................... 132
6.4. Interaciunea program-utilizator................................................................................... 135
6.5. Operaii cu iruri de caractere ...................................................................................... 142
6.6. Aplicaii numerice ....................................................................................................... 143
7. CALCULE NUMERICE CU POLINOAME....................................................................... 164
7.1. Evaluarea polinoamelor ............................................................................................... 164
7.2. Operaii aritmetice cu polinoame ................................................................................. 165
7.3. Descompunerea n fracii simple.................................................................................. 167
7.4. Calculul derivatei......................................................................................................... 168
7.5. Calculul rdcinilor ..................................................................................................... 169
7.6. Aplicaii numerice ....................................................................................................... 170
4 MEDII DE CALCUL N INGINERIE ELECTRIC
8. FUNCII MATLAB DE INTERPOLARE I APROXIMARE A DATELOR..................... 173
8.1. Cutarea datelor n tabele............................................................................................. 173
8.2. Interpolarea funciilor de o singur variabil................................................................ 175
8.3. Interpolarea funciilor de dou variabile....................................................................... 179
8.4. Aproximarea polinomial prin metoda celor mai mici ptrate ...................................... 184
8.5. Interpolarea funciilor de trei variabile......................................................................... 185
8.6. Aplicaii numerice ....................................................................................................... 187
9. DERIVAREA I INTEGRAREA NUMERIC A FUNCIILOR ...................................... 193
9.1. Derivarea numeric...................................................................................................... 193
9.2. Integrarea numeric ..................................................................................................... 199
9.3. Aplicaii numerice ....................................................................................................... 204
10. INTEGRAREA NUMERIC A ECUAIILOR DIFERENIALE.................................. 209
10.1. Ecuaiile difereniale de ordinul nti........................................................................ 209
10.2. Funcii MATLAB pentru integrare numeric a ecuaiilor difereniale....................... 209
10.3. Integrarea ecuaiilor difereniale de ordin superior i a sistemelor de ecuaii
difereniale............................................................................................................... 212
10.4. Aplicaii numerice ................................................................................................... 213
11. FUNCII DE OPTIMIZARE NUMERIC..................................................................... 216
11.1. Minimizarea funciilor de o variabil ....................................................................... 216
11.2. Minimizarea funciilor de mai multe variabile.......................................................... 217
11.3. Calculul zerourilor funciilor de o variabil real ..................................................... 217
11.4. Aplicaii numerice ................................................................................................... 218
12. BIBLIOGRAFIE I WEBOGRAFIE............................................................................... 221






MEDII DE CALCUL N INGINERIE ELECTRIC

5

PREFA

Lucrarea de fa este destinat studenilor din nvmntul superior tehnic din domeniul
ingineriei electrice care doresc s se familiarizeze cu principalele comenzi, funcii i noiuni
de programare specifice pachetului de programe MATLAB. Prin structura i coninutul su,
lucrarea este accesibil cu minime cunotine de electricitate i studenilor din alte domenii
ale ingineriei cum ar fi inginerie mecanic, electronic, automatic, etc.
nelegerea noiunilor prezentate n lucrare presupune un minim de cunostine prealabile
de informatic, programare a calculatoarelor, electricitate, algebr i analiz matematic.
Materialul prezentat este structurat pe 13 capitole i are un pronunat caracter practic
abordnd comenzile, funciile matematice i facilitile MATLAB cu aplicabilitate direct n
probleme tehnice de calcul numeric.
Capitolul 1 al lucrrii este unul introductiv i prezint pe scurt istoria pachetului de
programe MATLAB, structura programului, comenzile de intrare i ieire, ferestrele de
lucru i configurarea MATLAB Desktop.
Capitolul 2 trateaz principalele funcii de generare, indexare i manipulare a matricelor,
vectorilor i tablourilor n mediul MATLAB.
Capitolul 3 trateaz principalele funcii matematice MATLAB, cum ar fi funciile de
aproximare a numerelor, funcii de operare cu numere complexe, funcii trigonometrice,
funcii de matematic discret etc.
Capitolul 4 este dedicat funciilor MATLAB de interes general cum ar fi funciile de
import i export al datelor, de gestionare a spaiului de lucru, de utilizare a help-ului etc.
n capitolul 5 sunt prezentate principalele elemente MATLAB de reprezentare a
graficelor 2D i 3D. Acest capitol vizeaz nsuirea principalelor comenzi de creare,
etichetare i salvare a graficelor, respectiv de manipulare a obiectelor grafice specifice.
n capitolul 6 sunt abordate principalele noiuni de programare MATLAB. n acest
capitol se urmrete familiarizarea utilizatorului cu cele dou tipuri de fiiere M i anume
fiierele de tip script i fiierele de tip function. Tot n cadrul acestui capitol este abordat pe
scurt tehnica de programare a interfeelor grafice simple.
Capitolul 7 este dedicat funciilor de operare cu polinoame.
n capitolul 8 sunt tratate problemele specifice interpolrii i aproximrii datelor.
Capitolul 9 abordeaz derivarea i integrarea numeric a funciilor folosind comenzile
MATLAB specifice.
n capitolul 10 sunt prezentate funciile MATLAB de integrare a ecuaiilor difereniale,
respectiv a sistemelor de ecuaii difereniale.
Capitolul 11 al lucrrii trateaz problematica minimizrii funciilor cu una sau mai multe
variabile.
Pentru fixarea noiunilor i a cunotinelor dobndite pe msura parcurgerii lucrrii, la
sfritul capitolelor sunt propuse seturi de aplicaii numerice rezolvate. Aplicaiile propuse
constau n abordarea unor probleme de calcul numeric avnd diferite nivele de complexitate.
Lucrarea de fa este un rezultat al activitii didactice i de cercetare efectuate de ctre
autor n cadrul Laboratorului de Procesare Electromagnetic a Materialelor i Modele
Numerice (PEM_MN), Facultatea de Inginerie Electric, Universitatea POLITEHNICA din
Bucureti.


6 MEDII DE CALCUL N INGINERIE ELECTRIC
1. INTRODUCERE N MATLAB
1.1. Ce este MATLAB ?

MATLAB

(MATtrix LABoratory) este un pachet de programe de nalt performan,


interactiv, destinat calculului matematic, tiinific i ingineresc. MATLAB integreaz
calcul, programare i vizualizare, ntr-un mediu de lucru prietenos, soluionarea problemelor
presupunnd folosirea notaiilor matematice clasice. Utilizarea programului MATLAB
include:

Matematic i calcul numeric,
Programare i dezvoltare de algoritmi,
Modelare i simulare,
Analiz de date, exploatarea rezultatelor i vizualizare,
Grafic tiinific i inginereasc,
Dezvoltare de aplicaii software, incluznd construcia de interfee grafice (GUI),
Etc.

MATLAB este un produs al companiei americane The Mathworks, Inc.
[http://www.mathworks.com] i lucreaz sub Windows, Unix, LINUX i Machintosh.
MATLAB include toate facilitile unui limbaj complet de programare, admind interfee
cu limbajul de programare C, C++ i FORTRAN. Versiunea cea mai recent a pachetului de
programe MATLAB este versiunea 7.
MATLAB a cunoscut o puternic evoluie n decursul ultimilor ani, reprezentnd astzi
n mediile universitare din Statele Unite, Japonia i Uniunea European o unealt standard
de calcul, fiind asociat diverselor cursuri introductive sau avansate de matematic, tiin
sau inginerie. n industrie, MATLAB este recunoscut ca un mijloc de investigaie numeric
performant, utilizat n sprijinul unei activiti de cercetare, dezvoltare i analiz de nalt
nivel.
Versiunea complet a pachetului de programe MATLAB conine o ntreag familie de
module specifice, denumite tool-box-uri, respectiv blockset-uri, care permit rezolvarea unor
aplicaii din diverse domenii ale ingineriei cum ar fi: inginerie electric, matematic,
economic, mecanic, aerospaial, biomedical, statistic i multe altele.
Aceste module sunt colecii de funcii MATLAB (M-files), uor de asimilat, care extind
puterea de calcul a pachetului de programe MATLAB n vederea rezolvrii unor clase
particulare de probleme. Colecia de module MATLAB conine: Simulink, DSP, Control
System, SimPowerSystems, SimMechanics, Data Acquisition, Fuzzy Logic, Image
Processing, Partial Differential Equations, Neural Network, Optimization, System
Identification, Financial, Statistics, Communications, Database, Virtual Reality etc.




MEDII DE CALCUL N INGINERIE ELECTRIC

7
1.2. Structura sistemului MATLAB

Structura sistemului MATLAB este compus din cinci pri principale:

1.2.1 Mediul de dezvoltare. Acesta este alctuit dintr-un set de unelte care faciliteaz
folosirea funciilor i fiierelor MATLAB. Multe dintre acestea sunt controlate de interfee
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 Help, Workspace, Files, Search Path etc.

1.2.2 Biblioteca de funcii matematice MATLAB. Aceast bibliotec const dintr-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 matrice,
calcul de valori proprii, funcii Bessel, transformata Fourier etc.

1.2.3 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 o programare simpl pentru crearea rapid a unor mici programe de calcul specifice,
ct i o "programare complex" n vederea dezvoltrii unor programe laborioase de nivel
superior.

1.2.4 Manipularea graficelor (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.

1.2.5 Interfaa program a aplicaiilor MATLAB (Application Program Interface -
API). Aceasta este o bibliotec ce permite scrierea programelor C i Fortran ce
interacioneaz cu MATLAB. Biblioteca conine faciliti de apel de subrutine din
MATLAB (dynamic linking), de apelare a MATLAB-ul ca pe o main de calcul i de
citire/scriere de fiiere de tip MAT.










8 MEDII DE CALCUL N INGINERIE ELECTRIC
1.3. Funcii de intrare i ieire

1.3.1. Comenzi de lansare MATLAB. Exist mai multe variante de lansare a pachetului
de programe MATLAB, i anume:

Varianta A)
Dublu-clic pe icoana MATLAB din Windows Desktop

Varianta B)
Clic pe butonul START ,

urmat de clic pe opiunea MATLAB 6.5, ca n Fig. 1.1.














Fig. 1.1. Lansarea MATLAB din meniul START
prin clic pe opiunea MATLAB 6.5

Varianta C)
Clic pe butonul START ,

urmat de clic pe opiunea Run ,

urmat de tastarea cuvntului matlab n fereastra Run, ca n Fig. 1.2.










Fig. 1.2. Lansarea MATLAB din meniul START
prin clic pe opiunea Run
MEDII DE CALCUL N INGINERIE ELECTRIC

9

urmat de Enter sau clic pe butonul OK .

Varianta D)
Dublu-clic pe icoana de tip shortcut MATLAB 6.5 din directorul de instalare
C:/MATLAB6p5/, ca n Fig. 1.3.


Fig. 1.3. Lansarea MATLAB 6.5. prin dublu-clic
pe icoana de tip shortcut corespunztoare

Varianta E)
n cazul lansrii dintr-o fereastr DOS, se tasteaz cuvntul matlab la promptul DOS,
ca n Fig. 1.4, fiind urmat de Enter.



Fig. 1.4. Lansarea MATLAB dintr-o fereastr DOS

Mai sunt i alte variante de lansare a pachetului de programe MATLAB pe care le lsm
a fi descoperite de ctre utilizator.

1.3.2. Opiuni de lansare MATLAB. Exist mai multe opiuni de lansare MATLAB,
acestea putnd fi activate la lansarea programului, n felul urmtor:
10 MEDII DE CALCUL N INGINERIE ELECTRIC

Clic-dreapta pe icoana MATLAB din Window Desktop ,

urmat de clic pe Properties n meniul contextual, ca n Fig. 1.5,






Fig. 1.5. Apelul ferestrei Properties

urmat de tastarea n cmpul Target, (dup calea ctre fiierul executabil matlab.exe),
a opiunilor de lansare, cum ar fi de pild opiunea /minimize, Fig. 1.6:



Fig. 1.6. Opiuni de lansare MATLAB 6.5.

Aciunile corespunztoare diverselor opiuni de lansare MATLAB sunt prezentate n
Tabelul 1.1:

Tabel 1.1
Opiune Aciune
/minimize

Lansare MATLAB n format minimizat, fr
afiare de splash.
/nosplash Lansare MATLAB fr afiare splash.
/r M_file Lansare MATLAB mpreun cu lansarea
automat a fiierului cu numele M_file.
/logfile logfilename Se nregistreaz automat lista de comenzi
MATLAB din sesiunea curent n fiierul log
specificat.
MEDII DE CALCUL N INGINERIE ELECTRIC

11
1.3.3. Alegerea directorului MATLAB de lucru. Directorul MATLAB de lucru poate fi
selectat nainte de lansarea programului, respectnd urmtoarea secven de comenzi:

Clic-dreapta pe icoana MATLAB de pe Desktop ,


urmat de clic pe Properties n meniul contextual, ca n Fig. 1.7,






Fig. 1.7. Apelul ferestrei Properties

urmat de tastarea cii de acces ctre directorul de lucru, n cmpul Start in, ca de
exemplu calea D:\MATLAB, Fig. 1.8,



Fig. 1.8. Alegerea directorului de lucru nainte de lansare

urmat de Enter sau clic pe OK .

Directorul MATLAB de lucru poate fi selectat i dup lansarea programului.
1.3.4. Comenzi de ieire din MATLAB. Pentru prsirea programului MATLAB se
poate aciona n mai multe feluri, i anume:

A)
Clic pe meniul File + clic pe Exit MATLAB, ca n Fig.1.9.

12 MEDII DE CALCUL N INGINERIE ELECTRIC


Fig. 1.9. Opiuni de ncheiere a unei sesiuni MATLAB

B)
Clic pe icoana close box a ferestrei MATLAB Desktop .

C)
Tastare exit sau quit n Command Window, ca n Fig. 1.10,






Fig. 1.10. Opiuni de ncheiere a unei sesiuni MATLAB
urmat de Enter.

D)
Etc.

1.4. Ferestrele de lucru MATLAB

1.4.1. Fereastra principal MATLAB (MATLAB Desktop). Dup lansarea programului
MATLAB, n prim plan apare fereastra principal MATLAB (MATLAB Desktop), ce
conine unelte pentru controlul directoarelor, fiierelor, variabilelor i aplicaiilor MATLAB
asociate, Fig. 1.11.
MEDII DE CALCUL N INGINERIE ELECTRIC

13


Fig. 1.11. Fereastra principal MATLAB

Accesul la comenzile clasice MATLAB este facilitat de ctre bara de unelte a ferestrei
MATLAB Desktop Toolbar, Fig. 1.12. innd cursorul deasupra unui buton, o indicaie
ajuttoare descriind unealta va apare ntr-o csu galben. Unele ferestre au propriul lor
toolbar inclus n sistemul de afiare.

1.4.2. Ferestrele supervizate de MATLAB Desktop. 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, permite controlul asupra fiierelor MATLAB i a celor
asociate;
Fereastra Help, permite vizualizarea i cutarea documentaiei MATLAB;
Fereastra Workspace permite vizualizarea i schimbarea coninutului spaiului de lucru;
Fereastra Array Editor permite editarea i vizualizarea coninutului variabilelor ntr-un
format tabelar.
Prin expandare se pot
obine informaii despre
diverse module MATLAB
Prin clic se pot
obine informaii
ajuttoare
Se pot introduce
funcii i comenzi
MATLAB
Vizualizare sau
schimbarea
directorului curent
Clic pentru a muta
fereastra n afara
desktopului
Clic pentru a nchide
fereastra
Vizualizare sau lansarea
funciilor folosite anterior
Afiare n prim plan a
Workspace sau Current
Directory
Redimensionarea ferestrelor prin mutarea
separatorului
14 MEDII DE CALCUL N INGINERIE ELECTRIC
Creaz un nou
fiier M
Deschide
un nou
fiier
Funcia
cut
Funcia copy
Funcia
paste
Creaz un nou model Simulink

Funcia
redo

Acceseaz fereastra
Help
Vizualizeaz sau modific
directorul curent
Selecteaz directoare
curente folosite anterior
Caut directorul
curent
Indicaie ce descrie butonul. Indicaiile pot fi activate sau
dezactivate din General Prefrerences

Funcia
undo
Fereastra Editor/Debugger permite crearea, editarea i depanarea fiierelor M ce conin
funcii MATLAB.
Alte unelte i ferestre MATLAB cum ar fi ferestrele grafice nu sunt supervizate de
MATLAB Desktop.

Fig. 1.12. Bara de unelte sau MATLAB toolbar.

1.4.2.1. Command Window. Command Window este fereastra principal de comunicare
a utilizatorului cu programul MATLAB, Fig. 1.13. Aceast fereastr permite lansarea de
funcii i efectuarea de operaii MATLAB. Pentru vizualizarea ferestrei se selecteaz
Command Window din meniul View.



Fig. 1.13. Fereastra Command Window.

Proprietile specifice ferestrei Command Window permit modificarea formatului de
afiare a valorilor numerice, setarea automat a ecoului n cadrul unei sesiuni MATLAB,
specificarea fontului, a stilului, a dimensiunii literelor, setarea culorilor folosite pentru
sublinierea instruciunilor specifice etc. Pentru afiarea cutiei de dialog cu proprietile
ferestrei Command Window, selectai Preferences din meniul File al MATLAB Desktop.
Cutia de dialog se deschide permind modificarea proprietilor ferestrei Command
Window, Fig. 1.14.

MEDII DE CALCUL N INGINERIE ELECTRIC

15


Fig. 1.14. Configurarea fonturilor i culorilor ferestrei Command Window.

1.4.2.2. Fereastra Command History. Fereastra Command History apare cnd lansai
MATLAB. Fereastra Command History afieaz o list a funciilor lansate recent n
Command Window, ca n Fig. 1.15.

Afiarea funciilor n fereastra Command History. Lista de comenzi afiate n fereastra
Command History include att funcii din sesiunea curent ct i funcii din sesiuni
anterioare. Ora i data pentru fiecare sesiune apare n partea superioar 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 la
ieirea din MATLAB.




16 MEDII DE CALCUL N INGINERIE ELECTRIC

Fig. 1.15. Fereastra Command History.

tergerea funciilor din fereastra Command History. Se recomand tergerea funciilor
din fereastra Command History 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, iar prin clic-dreapta 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 fereastra Command History.
O alt cale de tergerea a ntregii liste de funcii const n selectarea comenzii Clear
Command History din meniul Edit.

Lansarea funciilor din fereastra Command History. Pentru a executa o funcie din
fereastra Command History se poate face un dublu-clic pe funcia respectiv n fereastra
Command History. De exemplu, pentru a relansa funcia prefdir se face un dublu-clic pe
funcia prefdir. 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 fereastra Command History. 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, Tabel 1.2.

Tabel 1.2
Aciune Mod de lucru
Lansarea funciilor n
Command Window
Copiai selecia n clipboard prin clic-dreapta i selectarea
opiunii Copy din meniul contextual. Selecia se copiaz cu Paste
n Command Window (alt alternativ const n executarea unui
dragging al seleciei n Command Window). n Command
Window se editeaz la nevoie funcia i se apas pe Enter sau
Selectai una sau mai
multe linii i clicai
dreapta pentru a le
copia sau pentru a crea
un fiier M
Indicaie privind
data i ora ce
marcheaz
nceputul fiecrei
sesiuni de lucru
MEDII DE CALCUL N INGINERIE ELECTRIC

17
Return pentru executarea funciei.
Copierea funciilor n alt
fereastr
Copiai selecia n clipboard prin clic-dreapta i selecia comenzii
Copy din meniul contextual. Copiai selecia ntr-un fiier M
deschis n Editor sau alt aplicaie.
Crearea unui fiier M din
funciile selectate
Clic-dreapta pe selecie i selecteaz Create M-File din meniul
contextual. Editor-ul deschide un nou fiier M ce conine funciile
pe care le-ai selectat din fereastra Command History.

1.4.2.3. Fereastra Launch Pad. Fereasta Launch Pad din MATLAB permite accesul
uor la unelte, demo-uri, i documentaia produselor MathWorks, Fig. 1.16. Pentru lansare
selectai Launch Pad din meniul View din MATLAB Desktop. ndat sunt listate toate
produsele MathWorks instalate pe sistemul dvs.


Fig. 1.16. Fereastra Launch Pad.

Pentru listarea n detaliu a unui produs, clicai pe semnul + plasat n stnga produsului.
Pentru a anula listarea, clicai pe semnul din stnga produsului. Pentru a deschide una sau
mai multe liste, dublu-clic pe list, sau clic-dreapta i selectai Open din meniul contextual.
Aciunea depinde de lista pe care ai selectat-o, dup cum este prezentat n Tabelul 1.3.

Tabel 1.3.
Icoana Descrierea aciunii n urma lansrii


Documentaia produsului respectiv se deschide n fereastra Help

Se lanseaz Demo launcher al produsului respectiv

Unealta selectat se deschide


Pagina web a produsului pe site-ul MathWorks Web cu informaii recente
se deschide n browser-ul dvs. Web

Actualizarea ferestrei Launch Pad. Fereastra Launch Pad include comenzi pentru
toatele produsele gsite n calea de cutare MATLAB la lansarea sesiunii curente. Dac
schimbai calea de cutare dup lansarea unei sesiuni, de pild prin adugarea unui director
Help: dublu-clic pentru a accesa
direct documentaia MATLAB
Demos: dublu-clic pentru a afia
Demo launcher
Tools: dublu-clic pentru a deschide
unealta
Product Page: dublu-clic pentru a
vizualiza ultimele informaii de pe
site-ul MathWorks Web
Clic pentru a afia detalii despre un
anumit modul MATLAB
18 MEDII DE CALCUL N INGINERIE ELECTRIC
Folosii csua de editare a ci pentru a
vizualiza directoarele i coninutul acestora
Clic pe butonul de cutare n fiierele M
Dublu-clic pe un
fiier pentru a l
deschide
Vizualizarea
zonei de help
corespunztoare
fiierului M
selectat
toolbox, fereastra Launch Pad nu este automat actualizat. Clic-dreapta n fereastra
Launch Pad i selectai Refresh din meniul contextual pentru a actualiza fereastra Launch
Pad aa nct s afieze toate produsele n calea curent de cutare.

1.4.2.4. Fereastra Current Directory. Pentru a cuta, vizualiza, deschide i pentru a
modifica directoare i fiiere asociate MATLAB-ului, folosii fereastra Current Directory,
Fig.1.17. Pentru a deschide fereastra Current Directory, selectai Current Directory din
meniul View din MATLAB Desktop, sau tastai filebrowser la promptul Command
Window. Putei deasemenea s o deschidei din Launch Pad, sub MATLAB.


Fig. 1.17. Fereastra Current Directory.

Principalele operaiuni cu directoare i fiiere ce pot fi efectuate folosind fereastra
Current Directory 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.
1.4.2.5. Fereastra Help. Se folosete fereastra Help pentru cutarea i vizualizarea
documentaiei MATLAB, Fig. 1.18 i produsele MathWorks. Help este un Web browser
integrat n MATLAB Desktop care afieaz documente HTML. Pentru lansarea ferestrei
Help:
MEDII DE CALCUL N INGINERIE ELECTRIC

19

Clicai pe butonul help din toolbar sau

Tastai helpbrowser n Command Window sau

Selectai Help din meniul View sau

Folosii meniul Help n orice unealt MATLAB.




Fig. 1.18. Fereastra Help.

Fereastra Help 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 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
Folosii close box pentru a
nchide panelul Help Navigator
Folosii bara de separaie pentru a redimensiona
panelurile
Panel ce permite vizualizarea documentaiei
Tab-urile panelului Help Navigator permit diferite moduri de accesare a
documentaiei
20 MEDII DE CALCUL N INGINERIE ELECTRIC
proprietilor ferestrei Help. Se pot modifica caracteristicile fontului folosit n ferestrele
Help, se poate selecta locaia documentaiei, etc.

1.4.2.6. Fereastra Workspace. Folosii Workspace pentru executarea operaiunilor n
spaiul de lucru MATLAB. Pentru a lansa Workspace, Fig. 1.19, exist mai multe ci i
anume:

Din meniul View din MATLAB Desktop, selectai Workspace,

n Launch Pad, dublu-clic pe Workspace,

Tastai workspace la promptul Command Window.



Fig. 1.19. Fereastra Workspace.

Printre operaiunile ce pot fi executate din fereastra Workspace sunt:
vizualizarea Current Workspace,
salvarea Current Workspace,
ncrcarea Saved Workspace,
tergerea Workspace Variables,
crearea graficelor din fereastra Workspace,
vizualizarea i editarea Workspace Variables folosind Array Editor.

Proprietile specifice ferestrei Workspace 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 fereastra Workspace i se poate opiona pentru afiarea unei csue de dialog de
confirmare a tergerii variabilelor.

MEDII DE CALCUL N INGINERIE ELECTRIC

21
1.4.2.7. Fereastra 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 fereastra Workspace se selecteaz n fereastra Workspace variabila
pe care dorii s o afiai (Shift+clic sau Ctrl+clic pentru a selecta mai multe variabile).
Clicai pe butonul Open din 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 mai mult de 10000 de elemente.
Pentru a afia coninutul unei variabile n Workspace, tastai numele variabilei la
promptul Command Window.
Pentru a afia o variabil n Array Editor, Fig. 1.20, folosii funcia
openvar('nume_variabila') tastat la linia de comand din Command Window avnd ca
argument numele variabilei pe care dorii s o afiai.





















Fig. 1.20. Fereastra Array Editor.

Modificarea valorilor elementelor n Array Editor. n Array Editor, clicai pe celula a
crei valoare dorii s o modificai. Tastai o nou valoare. Apsai Enter sau Return, sau
clicai n alt celul i modificarea va fi efectuat. Pentru a modifica dimensiunile unui
vector, tastai noile valori corespunznd numrului de rnduri i coloane n Size fields. Dac
cretei dimensiunea vectorului sau matricei, noile rnduri i coloane sunt adugate la sfrit
i sunt umplute cu zerouri. Dac reducei dimensiunea, vei pierde datele; MATLAB terge
rndurile i coloanele de la sfrit. Anumite tipuri de date nu permit modificarea
dimensiunii; pentru aceste variabile, cmpul Size nu este editabil. Dac deschidei un fiier
MAT existent i efectuai modificri asupra acestuia folosind Array Editor, va trebui s
salvai acel fiier MAT dac dorii ca schimbrile s fie salvate.

Elemente ale unor variabile de tip
vector; valorile pot fi schimbate
Alegerea formatului de
afiare
Modificarea dimensiunilor
variabilelor de tip vector
Folosii tab-urile pentru vizualizarea variabilelor deschise n Array Editor
22 MEDII DE CALCUL N INGINERIE ELECTRIC
Controlul afirii valorilor n Array Editor. n Array Editor, selectai o variabil n lista
Numeric format pentru a controla modul de afiare a valorilor numerice.

Proprietile specifice ferestrei Array Editor pot fi modificate selectnd Preferences din
meniul File al ferestrei MATLAB Desktop. Cutia de dialog se deschide i permite selectarea
opiunii Array Editor n urma creia se deschide fereastra Array Editor Preferences de
modificare a proprietilor. Se pot modifica caracteristicile fontului folosit n fereastra Array
Editor, se poate selecta formatul numeric implicit etc.

1.4.2.8. Fereastra Editor/Debugger. Fereastra Editor/Debugger din MATLAB,
Fig.1.21, pune la dispoziie o interfa grafic ce permite editarea elementar de text i
depanarea (debugging) oricrui tip de fiier M. Editor/Debugger este o unealt care se
poate folosi pentru editare, debugging sau ambele. Exist diferite modaliti de lansare a
ferestrei Editor/Debugger:

A) Lansarea ferestrei Editor/Debugger n vederea crerii unui nou fiier M. Pentru a
crea un nou fiier M n Editor/Debugger, fie clicai pe butonul new file din toolbar-ul
MATLAB, sau selectai File + New + M-file din meniul MATLAB Desktop. Putei
deasemenea crea un fiier M folosind meniul contextual n fereastra Current Directory.
Editor/Debugger se deschide dac nu cumva este deja deschis, cu un fiier gol n care
putei scrie instruciunile fiierului M.
Dac Editor/Debugger este deschis, putei crea mai multe fiiere noi folosind butonul
new file din toolbar, sau selectai File + New + M-file. Funcia echivalent de creare a
fiierelor M noi n Editor/Debugger este funcia edit tastat n Command Window. Dac
tastai edit filename.m i fiierul cu acest nume nu exist nc, apare un mesaj care v
ntreab dac dorii s creai un nou fiier cu numele filename.m. Dac alegei da,
Editor/Debugger creaz un fiier gol cu numele filename.m, altfel fiierul nu va fi creat.

B) Lansarea ferestrei Editor/Debugger pentru deschiderea fiierelor M existente.
Pentru a deschide un fiier M existent n Editor/Debugger, clicai pe butonul open din
toolbar-ul MATLAB sau din Editor/Debugger, sau selectai File + Open i apoi din Open
dialog box, selectai fiierul M i Clicai pe Open. Se pot deasemenea deschide fiiere din
fereastra Current Directory.
Putei selecta un fiier n vederea deschiderii din lista celor mai recent folosite fiiere, n
partea inferioar a meniului File n MATLAB Desktop sau n Editor/Debugger. Putei
schimba numrul de fiiere care apar n aceast list.
O funcie echivalent folosit pentru editarea sau deschiderea unui fiier M existent n
Editor/Debugger este funcia edit filename.m.

MEDII DE CALCUL N INGINERIE ELECTRIC

23


Fig. 1.21. Fereastra Editor/Debugger.

C) Lansarea ferestrei Editor/Debugger fr a lansa MATLAB. Pe platformele
Windows, putei folosi MATLAB Editor fr s lansai MATLAB prin dublu-clic pe
fiierul M n Windows Explorer. Fiierul M se deschide n MATLAB Editor. Pentru a
deschide fereastra Editor fr fiier implicit, lansai fiierul
MATLAB6p5/bin/win32/meditor.exe. Se pot deschide mai multe sesiuni simultane de
meditor. Cnd lansai MATLAB Editor fr lansare MATLAB, Editor devine o aplicaie de
sine stttoare.
Proprietile ferestrei Editor/Debugger se pot modifica selectnd Preferences din meniul
File al ferestrei MATLAB Desktop. Cutia de dialog se deschide i permite selectarea
opiunii Editor/Debugger n urma creia se deschide fereastra Editor/Debugger
Preferences de modificare a proprietilor, Fig. 1.22. Prin intermediul opiunilor disponibile
n cadrul ferestrei Preferences se pot modifica caracteristicile fontului i culorilor folosite n
fereastra Editor/Debugger, se poate selecta modul de afiare, salvare etc.

24 MEDII DE CALCUL N INGINERIE ELECTRIC


Fig. 1.22. Configurarea opiunilor ferestrei Editor/Debugger.

1.5. Configurarea MATLAB Desktop

1.5.1. Apelul uneltelor MATLAB Desktop. Pentru a apela o unealt din MATLAB
Desktop, selectai unealta din meniul View sau executai un dublu-clic pe unealta respectiv
n lista de unelte afiate n Launch Pad. Unealta se deschide n locaia pe care o ocupa
ultima dat cnd a fost deschis. Exist cteva unelte controlate de MATLAB Desktop care
nu se pot deschide din meniul View sau Launch Pad, i anume:
Array Editor care se deschide prin dublu-clic pe variabil n fereastra Workspace,
Editor/Debugger care se deschide prin crearea unui nou fiier M sau prin
deschiderea unui fiier M existent.
Uneltele se pot deschide i prin folosirea funciilor. De pild, funcia helpbrowser
deschide fereastra Help.

1.5.2. Cutarea documentelor folosind Desktop Tools. Meniul Window afieaz toate
documentele Editor/Debugger, toate variabilele din Array Editor, i toate ferestrele figur.
Selectai o entitate n meniul Window pentru a ajunge direct la acea fereastr sau document.
Selectai Close All pentru a nchide toate entitile listate n meniul Window. De pild,
meniul Window de mai jos, Fig. 1.23, ilustreaz trei documente deschide n Array Editor i
dou documente deschise n Editor/Debugger. Selectnd variance.m, de pild, determin
fereastra Editor/Debugger cu fiierul variance.m deschis, s devin fereastr activ.
MEDII DE CALCUL N INGINERIE ELECTRIC

25
















Fig. 1.23. Alegerea ferestrei active.


1.5.3. Redimensionarea ferestrelor. Pentru redimensionarea ferestrelor n MATLAB
Desktop, se folosete bara separator, care este bara dintre dou ferestre: Mutai cursorul
deasupra barei separator. Cursorul capt o alt form. Draggai bara separator pentru a
modifica dimensiunile ferestrelor, Fig. 1.24.




















Fig. 1.24. Redimensionarea ferestrelor.

1.5.4. Mutarea ferestrelor. Exist trei modaliti de baz de mutare a ferestrelor
MATLAB Desktop: mutare n interiorul MATLAB Desktop, mutare n afara MATLAB
Desktop, mutare n interiorul MATLAB Desktop prin gruparea ferestrelor (Tabbing).

Mutare n interiorul MATLAB Desktop. Pentru a muta o fereastra ntr-o alt locaie n
interiorul MATLAB Desktop mutai title bar-ul ferestrei spre noua locaie. Pe msura ce
mutai fereastra, un contur al acesteia va deveni vizibil. Cnd conturul se apropie de o
poziie posibil, conturul se fixeaz n acea locaie. Status bar afieaz instruciuni despre
mutarea ferestrei n timpul schimbrii conturului. n exemplul de mai jos, Fig. 1.25,
fereastra Command History este iniial la stnga ferestrei Command Window i este mutat
Close All nchide toate entitile
listate n meniul Window
Trei variabile sunt deschise n
Array Editor: x, y i m
Dou fiiere sunt deschise n
Editor/Debugger: sqsum.m i
variance.m
Clicai pe o entitate pentru a accesa direct
fereastra corespunztoare
Folosii bara de separaie pentru a redimensiona
subferestrele din desktop
26 MEDII DE CALCUL N INGINERIE ELECTRIC
deasupra ferestrei Command Window. Cnd title bar-ul ferestrei Command History atinge
zona inferioar a toolbar-ului, conturul devine vizibil.





























Fig. 1.25. Poziionarea ferestrelor.

Eliberai mouse-ul pentru a vizualiza fereastra n noua locaie. Celelalte ferestre n
desktop sunt redimensionate pentru a se adapta la noua configuraie. n figura de mai jos,
Fig. 1.26, este ilustrat noua poziie a ferestrelor din desktop dup mutarea ferestrei
Command History deasupra ferestrei Command Window.



Fig. 1.26. Noua poziie a ferestrelor.
Mutai bara de titlu a ferestrei Command
History pentru a muta locaia fereastrei
Eliberai butonul mouse-ului cnd locaia ferestrei
Command History v convine
Bara de stare afieaz instruciuni despre operaia n curs de
mutare a ferestrei
MEDII DE CALCUL N INGINERIE ELECTRIC

27
Mutare n afara MATLAB Desktop. Pentru a muta ferestre n afara MATLAB Desktop
exist mai multe variante:
Clicai pe sgeata din title bar-ul ferestrei pe care dorii s o mutai n afara
MATLAB Desktop,
Selectai Undock din meniul View al acelei ferestre; fereastra trebuie s fie activ,
Mutai title bar-ul ferestrei n afara MATLAB Desktop; pe msur ce mutai title
bar, un contur al ferestrei va apare. Cnd cursorul este n afara MATLAB Desktop,
eliberai mouse-ul. Fereastra apare n afara MATLAB Desktop. n exemplul din
Fig. 1.27, fereastra Command History a fost mutat n afara MATLAB Desktop.



Fig. 1.27. Mutarea ferestrelor n exteriorul MATLAB Desktop.

Mutarea ferestrelor din exteriorul MATLAB Desktop n interior. Pentru a muta o
fereastra din exteriorul MATLAB Desktop n interior, selectai opiunea Dock din meniul
View al ferestrei respective.
Gruparea (Tabbing) ferestrelor mpreun. Putei grupa ferestrele aa nct acestea s
ocupe acelai spaiu n MATLAB Desktop, pstrnd ns accesul la toate ferestrele. Pentru a
grupa mpreun ferestre mutai (dragging) title bar-ul unei ferestre din desktop deasupra
title bar-ului unei alte ferestre din desktop. Conturul ferestrei pe care o mutai se suprapune
peste fereastra a doua i partea inferioar a conturului include un tab. n Fig. 1.28 fereastra
Command History este iniial la stnga Command Window iar prin mutarea title bar-ului
ferestrei deasupra title bar-ului ferestrei Command Window se realizeaz gruparea acestora
mpreun (tabbing).
28 MEDII DE CALCUL N INGINERIE ELECTRIC






















Fig. 1.28. Gruparea ferestrelor (tabbing) n interiorul MATLAB Desktop.

Apoi eliberai mouse-ul. Ambele ferestre ocup acelai spaiu i n zona inferioar a
ferestrelor apar tab-urile ce permit identificarea ferestrelor. n Fig. 1.29, fereastra Command
History i Command Window sunt grupate mpreun, fereastra Command History fiind cea
activ.
























Fig. 1.29. Noua poziie a ferestrelor grupate n interiorul MATLAB Desktop.

Vizualizarea ferestrelor grupate. Pentru a vizualiza o fereastr dintr-un grup, clicai pe
tab-ul ferestrei. Fereastra trece n prim plan i devine fereastr curent activ. Dac exist
mai multe tab-uri ntr-o fereastr dect sunt vizibile, folosii sgeile spre dreapta pentru a
vedea i alte tab-uri.
Conturul ferestrei inclusiv tab-ul
Folosii sgeile pentru a vizualiza
tab-urile care nu sunt vizibile. n
acest exemplu sgeile sunt gri
indicnd c toate tab-urile sunt
vizibile
Exist mai multe tab-uri grupate
mpreun n fereastr pentru
fiecare tool. Clicai pe un tab
pentru a vizualiza acel tool.
MEDII DE CALCUL N INGINERIE ELECTRIC

29
Mutarea ferestrelor grupate. Pentru a muta o fereastr grupat spre o alt locaie, mutai
title bar-ul sau tab-ul spre noua locaie. Putei muta fereastra n interiorul sau n exteriorul
MATLAB Desktop.
nchiderea ferestrelor grupate. Cnd clicai pe close box-ul ferestrei care este parte a
unui grup de ferestre, se nchide doar fereastra n cauz. Nu putei nchide toate ferestrele
grupate deodat, ci doar una cte una.

1.5.5. Comenzi de nchidere a unei ferestre MATLAB. Pentru nchiderea unei ferestre
MATLAB se poate aciona n mai multe feluri, i anume:

Clicai pe close box-ul ferestrei ,

Deselectai n meniul View fereastra care trebuie nchis ,

Clicai pe meniul File + clic pe Close, Fig. 1.30.



Fig. 1.30. Comenzi de nchidere a ferestrelor.

1.5.6. Configuraia MATLAB Desktop predefinit. Exist ase configuraii predefinite
MATLAB Desktop, pe care le putei selecta din meniul View + Desktop Layout:
Default - conine n stnga fereastrele Workspace i Current Directory grupate
mpreun, iar n dreapta fereastra Command History;
Command Window Only - conine doar fereastra Command Window; aceast opiune
face ca MATLAB Desktop s apar similar cu versiunile de MATLAB anterioare;
Simple - conine fereastra Command History i Command Window, una lng alta;
Short History - conine fereastrele Current Directory i Workspace grupate mpreun
deasupra ferestrei Command Window respectiv deasupra ferestrei Command History
care are talie redus;
30 MEDII DE CALCUL N INGINERIE ELECTRIC
Tall History - conine ferestrele Command History n stnga i Current Directory i
Workspace grupate mpreun deasupra ferestrei Command Window;
Five Panel - conine fereastra Launch Pad deasupra ferestrei Command History n
stnga, Workspace deasupra Current Directory n centru, i Command Window n
dreapta.

Dup selectarea unei configuraii predefinite, putei muta, redimensiona i
deschide/nchide ferestrele.

1.5.7. Accesarea adresei Web a companiei The MathWorks. Putei accesa din
MATLAB Desktop paginile Web ale companiei The MathWorks, selectnd una dintre
urmtoarele opiuni: The MathWorks Web Site, MATLAB Central, MATLAB File Exchange,
MATLAB Newsgroup Exchange, Check for Updates, Products, Membership, Technical
Support Knowledge Base.

1.5.8. Meniul contextual. Multe dintre facilitile MATLAB Desktop sunt disponibile
din meniurile contextuale, cunoscute ca pop-up meniuri. Pentru a accesa un meniu
contextual, se execut clic-dreapta pe o entitate, iar meniul contextual mpreun cu
operaiunile specifice devin vizibile. Mai jos, Fig. 1.31, se prezint meniul contextual al
ferestrei Command History.
















Fig. 1.31. Meniul contextual al ferestrei Command History.


1.5.9. Taste cu rol de prescurtare i accelerare. Putei accesa multe articole de meniu
folosind prescurtri sau taste acceleratoare cum ar fi Ctrl+X care este identic cu operaiunea
Cut pe platforme Windows, sau Alt+F pentru accesarea meniului File. Multe dintre
prescurtri sunt listate mai jos:
Enter echivalent al unui dublu-clic, execut aciunea curent asupra unei selecii; de
pild, apsnd Enter cnd este selectat o linie n fereastra Command History acea
comand este executat n Command Window;
Escape anuleaz aciunea curent;
Ctrl+Tab sau Ctrl+F6 deplasare spre tab-ul urmtor n desktop, sau spre fiierul
urmtor deschis n Editor/Debugger;

Accesarea meniului contextual este
posibil prin clic dreapta pe o
entitate selectat
MEDII DE CALCUL N INGINERIE ELECTRIC

31
Ctrl+Shift+Tab deplasare spre tab-ul anterior n desktop, sau spre fiierul anterior
deschis n Editor/Debugger;
Ctrl+Page Up deplasare la tab-ul urmtor ntr-un grup de unelte sau fiiere grupate
mpreun;
Ctrl+Page Down deplasare spre tab-ul anterior ntr-o fereastr;
Alt+F4 nchide desktop-ul sau fereastra n afara desktop-ului;
Alt+Space afieaz meniul sistem.

1.5.10. Selectarea simultan a mai multor entiti. n multe ferestre ale desktop-ului,
putei selecta simultan mai multe entiti i apoi putei executa o aciune asupra tuturor
entitilor. Putei selecta simultan mai multe entiti clicnd pe prima entitate innd
apsat tasta Ctrl i apoi clicnd pe entitatea urmtoarea pe dorii s o selectai. Repetai
acest ultim pas pn ai selectat toate entitile dorite. Dac inei apsat tasta Shift n
locul tastei Ctrl n timp ce clicai pe o entitate, vei selecta toate entitile cuprinse ntre
cele dou entiti selectate. Putei executa asupra entitilor selectate o comand comun
cum ar fi de pild Delete.

1.5.11. Folosirea Clipboard-ului. Putei executa operaiuni cut i copy asupra unei
selecii dintr-o fereastr din Desktop spre Clipboard i apoi s executai paste n alt
fereastr din MATLAB Desktop. Folosii meniul Edit, meniurile contextuale sau
prescurtrile standard. De pild, putei executa copy asupra unei selecii de comenzi din
fereastra Command History i s executai paste n Command Window. Articolul Paste
Special din meniul Edit deschide selecia din Clipboard n Import Wizard. Putei folosi
aceast facilitate pentru a copia datele dintr-o alt aplicaie, cum ar fi Excel, n MATLAB.
Pentru a anula cea mai recent execuie cut, copy, sau paste, selectai Undo din meniul
Edit. Folosii Redo pentru a executa din nou acele operaiuni (aciune opus lui Undo).
Putei deasemenea realiza copierea prin mutarea (dragging) seleciei. De pild, dac
efectuai o selecie din fereastra Command History i mutai selecia n Command
Window, este echivalent cu execuia comenzii paste. Putei n continuare s editai liniile n
Command Window.

1.5.12. Proprieti generale ale MATLAB Desktop. Putei modifica proprietile
predefinite ale MATLAB Desktop, cum ar fi de pild fontul utilizat n Command Window.
Proprietile rmn valabile pe durata sesiunii MATLAB. Unele ferestre v permit controlul
acestor aspecte din meniul propriu ferestrei respective. Pentru modificarea proprietilor
selectai Preferences din meniul File. Cutia de dialog Preferences se deschide i permite
modificarea proprietilor prin selecia tipului de proprieti.
n exemplul de mai jos, Fig. 1.32, sunt modificate proprietile generale ale MATLAB
Desktop, reprezentate prin articolul de meniu General.
Dac apare un semn + n stnga unui articol din meniu, clicai pe + pentru a afia n
detaliu opiunile coninute, i apoi selectai opiunea ale crei proprieti dorii s le
modificai. Panelul din dreapta reflect tipul de proprieti pe care le-ai selectat. n panelul
din dreapta specificai proprietile dorite i clicai pe OK. Proprietile se vor schimba
imediat.

32 MEDII DE CALCUL N INGINERIE ELECTRIC


Fig. 1.32. Configurarea opiunilor MATLAB Desktop.



MEDII DE CALCUL N INGINERIE ELECTRIC

33

2. FUNCII DE MANIPULARE A MATRICELOR
2.1. Definirea matricelor

O metod eficient de a ncepe iniierea n mediul de lucru MATLAB este de a nva
operaiunile de generare i manipulare a matricelor. Definirea matricelor n MATLAB este
posibil pe mai multe ci. De pild putei:
Defini explicit matrice prin introducerea unor liste de elemente n Command Window;
Defini matrice prin ncrcarea datelor din fiiere externe;
Genera matrice folosind funcii MATLAB incluse;
Crea matrice folosind propriile dvs. funcii scrise n fiiere M.

2.1.1. Definirea explicit a matricelor n Command Window. O metod de definire a
matricelor const n introducerea explicit a elementelor matricelor la linia de comand n
fereastra Command Window. Prezena prompt-ului (>>) n Command Window indic
faptul c MATLAB este gata de a accepta o comand din partea dvs. Astfel putei introduce
o variabil, lansa o funcie etc.
ncepei prin introducerea unei matrice ca o list de elemente. Trebuiesc respectate cteva
convenii de baz:
Separai elementele unui rnd cu spaii blanc sau virgule;
Folosii un semn punct i virgul, ;, pentru a indica sfritul fiecrui rnd;
Includei ntreaga list ntre paranteze ptrate, [ ].

Astfel pentru a defini o matrice, tastai la linia de comand n Command Window:

A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1] (2.1)

Dup ce ai tastat linia de comand de mai sus, cnd apsai tasta Enter sau Return,
MATLAB va afia matricea pe care tocmai ai introdus-o:

A = (2.2)
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1

Odat introdus matricea de mai sus, aceasta este automat memorat n MATLAB
Workspace. Putei accesa i vizualiza aceast matrice tastnd simplu A la linia de comand
urmat de Enter.
n mod similar introducerii unei matrice, pentru a lansa o funcie, tastai funcia inclusiv
toate argumentele i apsai tasta Return sau Enter. MATLAB va afia rezultatul. De
pild, tastai:

det(A)

34 MEDII DE CALCUL N INGINERIE ELECTRIC
MATLAB va calcula determinantul matricei A definite anterior i va rspunde cu:

ans = (2.3)
0

Cnd nu specificai o variabil de ieire (variabil rspuns), MATLAB folosete variabila
predefinit ans, o prescurtare pentru cuvntul englezesc answer, pentru a stoca rezultatul
unei calculaii.

2.1.2. Definirea matricelor prin ncrcarea datelor din fiiere externe. Matricele pot
fi create deasemenea prin ncrcarea datelor din fiiere externe folosind funcia load.
Funcia load citete fiiere binare coninnd matrice generate n sesiuni MATLAB
anterioare, sau citete fiiere text coninnd date numerice. Fiierul text trebuie organizat
sub forma unui tabel de numere, separate de blancuri, cu numr egal de elemente pe fiecare
rnd, respectiv pe fiecare coloan.
n urma unui astfel de import de date numerice dintr-un fiier cu numele matrice.txt,
folosind sintaxa load matrice.txt, MATLAB va citi fiierul matrice.txt i va crea n
MATLAB workspace o variabil cu numele matrice, coninnd datele din respectivul fiier.
Pentru a denumi altfel variabila creat n workspace, (de pild A) se poate folosi urmtoarea
sintax a funciei load.

A = load('matrice.txt'); (2.4)

O metod uoar de a importa n MATLAB Workspace date scrise n diverse formate de
tip text sau binare const n folosirea funciei Import Wizard din meniul Edit + Paste
Special.

2.1.3. Generarea matricelor de baz folosind funcii MATLAB incluse. MATLAB
dispune de mai multe funcii de generare a matricelor de baz, cum ar fi, Tabel 2.1:

Tabel 2.1
zeros Matrice ce conine doar elemente nule
ones Matrice ce conine doar elemente unitate
rand Matrice cu elemente aleatoare, uniform distribuite, cuprinse ntre 0 i 1
eye Matrice cu elemente nule, cu excepia diagonalei principale ce conine
elemente unitate
diag Matrice diagonal
linspace Vectori cu elemente avnd valori distribuite liniar
logspace Vectori cu elemente avnd valori distribuite logaritmic

Iat cteva exemple. Tastai:

Z = zeros(2, 3) (2.5)

Z = (2.6)
0 0 0
0 0 0
MEDII DE CALCUL N INGINERIE ELECTRIC

35
F = 5*ones(2, 2) (2.7)

F = (2.8)
5 5
5 5

N = fix(10*rand(1, 10)) (2.9)

N = (2.10)
4 9 4 4 8 5 2 6 8 0

R = rand(4, 4) (2.11)

R = (2.12)
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) (2.13)

S = (2.14)
1 0 0 0
0 1 0 0
0 0 1 0

2.1.4. Definirea matricelor folosind funcii scrise n fiiere M. Putei crea propriile
dvs. matrice folosind fiiere de tip M. Aceste fiiere sunt fiiere text ce conin instruciuni
MATLAB i au extensia .m. Un astfel de fiier M l putei crea folosind MATLAB Editor
sau oricare alt editor de text (de pild Notepad sau Wordpad) i trebuie s conin aceleai
instruciuni pe care le-ai tasta la linia de comand n Command Window. Dup ce ai creat
fiierul acesta trebuie salvat sub un nume dorit ns trebuie s aib extensia .m.
De pild, creai un fiier coninnd urmtoarele cinci linii.

A = [ (2.15)
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 ];

Stocai fiierul sub numele matricem.m. Tastnd n continuare la linia de comand n
Command window instruciunea matricem.m MATLAB va citi fiierul i va crea o
variabil, A, coninnd matricea de mai sus.

36 MEDII DE CALCUL N INGINERIE ELECTRIC
2.2. Indexarea elementelor

Elementul din rndul i i coloana j a matricei A este notat cu A(i, j). De pild, A(4, 2) este
elementul din rndul 4 i coloana 2, adic, n cazul matricei de mai sus, este numrul 15.
Pentru a calcula suma elementelor din coloana a patra a matricei A, tastai:

A(1, 4) + A(2, 4) + A(3, 4) + A(4, 4) (2.16)

MATLAB va rspunde cu

ans = (2.17)
34

Aceasta metod nu este ns cea mai eficient de a suma elementele unei coloane. Este
posibil accesarea elementelor elementelor unei matrice cu un singur indice, A(k). Acesta
este modul uzual de accesare a unor vectori tip rnd sau coloan. Aceast metod poate fi
aplicat deasemenea unei matrice bidimensionale, caz n care vectorul este privit ca un
vector lung de tip coloan format din coloanele matricei originale. Astfel, n cazul matricei
A definite anterior, A(8) este o alt cale de accesare a valorii 15 stocat n A(4, 2). Dac
ncercai s accesai valoarea unui element din afara matricei, apare un mesaj de eroare.
Tastai:

t = A(4, 5) (2.18)

MATLAB va rspunde cu:

??? Index exceeds matrix dimensions. (2.19)

Pe de alt parte, dac stocai o valoare ntr-un element din afara matricei, dimensiunea
matricei crete pentru a include noua valoare. Tastai de pild :

X = A; (2.20)

X(4, 5) = 17 (2.21)

MATLAB va rspunde cu:

X = (2.22)
16 3 2 13 0
5 10 11 8 0
9 6 7 12 0
4 15 14 1 17

2.2.1. Operatorul : este foarte important n MATLAB. Acesta apare n diferite forme.
De pild expresia 1:10 este un vector rnd coninnd ntregii de la 1 la 10. Tastai:

1:10 (2.23)
MEDII DE CALCUL N INGINERIE ELECTRIC

37
MATLAB va rspunde cu:

ans = (2.24)
1 2 3 4 5 6 7 8 9 10

Pentru a obine un ecart diferit de unitate ntre elementele vectorului astfel generat,
specificai un increment. De pild tastai:

100: -7: 50 (2.25)

MATLAB va rspunde cu:

ans = (2.26)
100 93 86 79 72 65 58 51

Tastai:

0: pi/4: pi (2.27)

MATLAB va rspunde cu:

ans = (2.28)
0 0.7854 1.5708 2.3562 3.1416

Expresiile cu indici ce conin operatorul : se refer la poriuni dintr-o matrice. De pild
A(1:k, j) reprezint primele k elemente (rnduri) ale coloanei j ale matricei A. Astfel
folosind operatorul : i funcia de sumare sum este posibil calculul sumei elementelor
coloanei a patra a matricei sum(A(1:4, 4)). Dar exist o alt cale mai eficient. Operatorul
: n sine, se refer de fapt la toate elementele unui rnd sau ale unei coloane a unei
matrice i cuvntul cheie end se refer la ultimul rnd sau coloan. Prin urmare
sum(A(:, end)) calculeaz suma elementelor de pe ultima coloan a matricei A. Dac tastai:

sum(A(:, end)) (2.29)

MATLAB va rspunde cu:

ans = (2.30)
34

2.2.2. Indexarea logic. Vectorii logici creai din operaii logice i relaionale pot fi
folosii pentru a face referin la subvectori. Dac presupunem c X este o matrice clasic i
L o matrice de aceai dimensiune care este rezultatul unei operaii logice, atunci X(L)
furnizeaz elementele lui X unde elementele lui L sunt diferite de zero.
Indexarea elementelor unei matrice se poate efectua specificnd o operaie logic. S
presupunem c avem urmtorul set de date sub forma de vector:

x = (2.31)
2.1 1.7 1.6 1.5 NaN 1.9 1.8 1.5 5.1 1.8 1.4 2.2 1.6 1.8
38 MEDII DE CALCUL N INGINERIE ELECTRIC
NaN este un simbol pentru (Not-a-Number). Pentru a elimina aceasta dat irelevant
utiliznd indexarea logic, se folosete funcia finite(x), care este adevarat pentru toate
valorile numerice finite i fals pentru NaN i Inf.

x = x(isfinite(x)) (2.32)

MATLAB va rspunde cu:

x = (2.33)
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

2.3. Operaiuni de baz cu matrice

MATLAB pune la dispoziia utilizatorului un numr important de funcii de calcul cu
matrice.

2.3.1. Operaii matematice cu matrice. Operaiile matematice de baz cu matrice
presupun utilizarea operatorilor din Tabelul 2.2.

Tabel 2.2
Operator Operaie
+ Adunare
- Scdere
* nmulire
/ mprire
\ mprire la stnga
^ Putere
Transpusa complex conjugat
( ) Pentru ordinea operaiilor

Operaiile matematice efectuate asupra matricelor reprezint obiectul de studiu al
algebrei liniare. De pild adugnd la o matrice transpusa sa se obine o matrice simetric:

A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1]; (2.34)

A + A' (2.35)

ans = (2.36)
32 8 11 17
8 20 17 23
11 17 14 26
17 23 26 2

Operatorul de multiplicare ,*, aplicat matricelor determin multiplicarea matricelor
utiliznd produsul intern ntre rnduri i coloane. nmulind transpusa unei matrice cu
matricea nsi se obine o matrice simetric:


MEDII DE CALCUL N INGINERIE ELECTRIC

39
A'*A (2.37)

ans = (2.38)
378 212 206 360
212 370 368 206
206 368 370 212
360 206 212 378

Determinantul matricei A fiind zero, matricea este singular i nu are invers. Dac
ncercai s calculai inversa cu:

X = inv(A) (2.39)

Vei obine un mesaj de avertizare:

Warning: Matrix is close to singular or badly scaled. (2.40)
Results may be inaccurate. RCOND = 1.175530e-017.

Erorile de trunchiere ngreuiaz algoritmul de detectare cu precizie a singularitii. n
acest caz valoarea lui rcond, care desemneaz nivelul de condiionare al matricei este de
ordinul lui eps, adic precizia relativ n virgul mobil, deci precizia de calcul a inversei
este mediocr. Valorile proprii ale matricei A se calculeaz cu:

e = eig(A) (2.41)

e = (2.42)
34.0000
8.0000
0.0000
-8.0000

Matricele i scalarii pot fi combinai n multe feluri. De pild, n cazul n care un scalar
este adunat sau nmulit cu o matrice, operaia se efectueaz asupra fiecrui element al
matricei. Tastai de pild:

A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1] ; (2.43)

B = A - 8.5 (2.44)

Se formeaz astfel o matrice avnd sumele elementelor coloanelor egale cu zero.

B = (2.45)
7.5 -5.5 -6.5 4.5
-3.5 1.5 2.5 -0.5
0.5 -2.5 -1.5 3.5
-4.5 6.5 5.5 -7.5
40 MEDII DE CALCUL N INGINERIE ELECTRIC
sum(B) (2.46)

ans = (2.47)
0 0 0 0

MATLAB permite asignarea unui anumit scalar tuturor indicilor dintr-un domeniu. De
pild, B(1:2,2:3) = 0 afecteaz valoarea zero unei poriuni a matricei B.

B = (2.48)
7.5 0 0 4.5
-3.5 0 0 -0.5
0.5 -2.5 -1.5 3.5
-4.5 6.5 5.5 -7.5

2.3.2. Operaii matematice element cu element. Operaiile matematice de adunare i
scdere cu matrice sau cu vectori, efectuate element cu element, sunt identice cu cele
efectuate direct asupra matricelor, dar operaia de nmulire este diferit. MATLAB
folosete operatorul punct, ".", ca parte din notaia aferent operaiei de nmulire a
vectorilor. Lista de operatori include, Tabel 2.3:

Tabel 2.3
Operator Operaie
+ Adunare
- Scdere
.* nmulire element cu element
./ mparire element cu element
.\ mparire la stnga element cu element
.^ Putere element cu element
. Transpusa matricei cu elementele neconjugate complex

Dac matricea A se nmulete cu ea nsi folosind nmulirea vectorial element cu
element

A.*A (2.49)

Rezultatul este o matrice coninnd ptratele elementelor matricei A iniiale:

ans = (2.50)
256 9 4 169
25 100 121 64
81 36 49 144
16 225 196 1
Operaiile cu vectori sunt folositoare pentru construirea tablourilor. S presupunem c n
este vectorul coloan n = (0:9)'. Folosind comanda:

pows = [n n.^2 2.^n] (2.51)

putei construi un tablou cu ptratele i puterile lui 2 de la 0 la 9.
MEDII DE CALCUL N INGINERIE ELECTRIC

41
pows = (2.52)
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

Funciile matematice elementare opereaz asupra vectorilor element cu element. Tastai:

format short g (2.53)
x = (1:0.1:2)';
logs = [x log10(x)]

Rspunsul MATLAB const n construcia unui tabel de logaritmi.

logs = (2.54)
1.0 0
1.1 0.04139
1.2 0.07918
1.3 0.11394
1.4 0.14613
1.5 0.17609
1.6 0.20412
1.7 0.23045
1.8 0.25527
1.9 0.27875
2.0 0.30103

2.3.3. Funcii de informare general. Funciile mai importante de informare general
referitoare la matrice pot fi structurate n Tabelul 2.4. Se consider A = [1 2 3; 2 3 4],
B = [1 2 3; 2 3 5].

Tabel 2.4
Funcie Descriere Exemplu
disp Afieaz vectori sau matrice disp(A)
1 2 3
2 3 4
display Afieaz vectori sau matrice display(A)
A=
1 2 3
2 3 4
isempty Testeaz dac vectorii sau matricele sunt goale isempty(A) 0

42 MEDII DE CALCUL N INGINERIE ELECTRIC
isequal Testeaz dac vectorii sau matricele sunt egale isequal(A, B) 0
isnumeric Testeaz dac elementele vectorilor sau matricelor sunt
numere
isnumeric(A) 1
issparse Testeaz dac vectorii sau matricele sunt de tip rar issparse(A) 0
isfinite Testeaz dac vectorii sau matricele au elemente de
valoare finit
isfinite(A) 1 1 1
1 1 1
isnan Testeaz dac vectorii sau matricele au elementul NaN
(not a number)
isnan(A) 0 0 0
0 0 0
isinf Testeaz dac vectorii sau matricele au elementul Inf
(infinity)
isinf(A) 0 0 0
0 0 0
length Determin lungimea unui vector i cea mai mare
dimensiune a unei matrice
length(A) 3
ndims Determin numrul de dimensiuni al matricelor ndims(A) 2
numel Determin numrul de elemente al vectorilor i matricelor numel(A) 6
size Determin dimensiunile vectorilor i matricelor size(A) 2 3

2.3.4. Funcii de prelucrare a matricelor. Printre funciile MATLAB utilizate n
vederea manipulrii matricelor sunt cele prezentate n Tabelul 2.5. Pentru exemplificare se
consider A = [1 2 3; 2 3 4], B = [1 2 3; 2 3 5], C = [1 2 3], D = [2 3 4], E = [5 2; 1 3].

Tabel 2.5
Funcie Descriere Exemplu
blkdiag Creaz o matrice cu diagonala format din blocuri blkdiag([1 2; 3 4], 2)
1 2 0
3 4 0
0 0 2
cat Concateneaz vectori cat(1, A, B)
1 2 3
2 3 4
1 2 3
2 3 5
cross Calculeaz produsul vectorial a doi vectori cross(C, D) -1 2 -1
cumprod Calculeaz produsul cumulativ a doi vectori cumprod(D) 2 6 24
cumsum Calculeaz suma cumulativ a doi vectori cumsum(D) 2 5 9
diag Definete sau ntoarce diagonalele matricelor diag(A) 1
3
dot Calculeaz produsul scalar a doi vectori dot(C, D) 20
end Incheie buclele for, while, switch, try, if sau
definete ultimul index al matricelor sau vectorilor
A(1:end, 2) 2
3
find Gsete indicii i elementele nenule ale vectorilor
sau matricelor
find(A) 1 2 3 4 5 6
fliplr Permut matricele stnga-dreapta fliplr(A) 3 2 1
4 3 2
flipud Permut matricele sus-jos flipud(A) 2 3 4
1 2 3
flipdim Permut matricele dup o dimensiune flipdim(A,1) 2 3 4
1 2 3
horzcat Realizeaz concatenarea orizontal a matricelor horzcat(A, B)
1 2 3 1 2 3
MEDII DE CALCUL N INGINERIE ELECTRIC

43
2 3 4 2 3 5
max Calculeaz maximul elementelor unui vector sau
maximul elementelor dup o anumit direcie
max(C) 3
min Calculeaz minimul elementelor unui vector sau
minimul elementelor dup o anumit direcie
max(C) 1
prod Calculeaz produsul elementelor unui vector prod(C) 6
reshape Creaz o alt matrice de dimensiuni impuse reshape(A,3,2) 1 3
2 3
2 4
rot90 Rotete o matrice cu 90 rot90(A) 3 4
2 3
1 2
sort Sorteaz elementele n ordine cresctoare sort(E) 1 2
5 3
sortrows Sorteaz rndurile n ordine cresctoare sortrows(E) 1 3
5 2
sum nsumeaz elementele unui vector sum(C) 6
sqrtm Calculeaz matricea radical, adic matricea care se
obine astfel nct X*X = E
sqrtm(E) 2.2065 0.5128
0.2564 1.6937
tril Returneaz elementele de sub diagonala principal
a unei matrice, inclusiv aceasta (triunghiul
inferior)
tril(E) 5 0
1 3
triu Returneaz elementele de deasupra diagonalei
principale a unei matrice, inclusiv aceasta
(triunghiul superior)
triu(E) 5 2
0 3
vertcat Realizeaz concatenarea vertical a matricelor vertcat(A, B) 1 2 3
2 3 4
1 2 3
2 3 5

De pild dac efectuai suma elementelor matricei particulare A = [16 3 2 13; 5 10 11 8;
9 6 7 12; 4 15 14 1] de-a lungul oricrui rnd sau coloan, sau de-a lungul oricrei
diagonale principale, vei obine ntotdeauna acelai numr. S verificm aceast
caracteristic a matricei A n MATLAB. nti s efectum suma elementelor de pe coloanele
matricei. Pentru aceasta vom folosi funcia sum(A) care realizeaz tocmai acest lucru:

sum(A) (2.55)
MATLAB rspunde cu:

ans = (2.56)
34 34 34 34

Folosind funcia sum(A) se calculeaz un vector linie coninnd sumele elementelor de
pe coloanele matricei A. Pe fiecare coloan se obine aceeai sum, 34.
Pentru a calcula suma elementelor de pe rndurile matricei o idee este de a utiliza funcia
de transpunere a matricelor, de a aplica apoi aceeai funcie sum pe matricea transpus i n
final de a transpune rezultatul folosind aceeai funcie de transpunere a matricelor. Funcia
44 MEDII DE CALCUL N INGINERIE ELECTRIC
de transpunere a matricelor este A, i const n adugarea unui apostrof dup variabila
matrice A:

A (2.57)

MATLAB va rspunde cu:

ans = (2.58)
16 5 9 4
3 10 6 15
2 11 7 14
13 8 12 1

Aplicnd funcia:

sum(A')' (2.59)

MATLAB va rspunde cu:

ans = (2.60)
34
34
34
34

Suma elementelor de pe diagonala principal se obine folosind funciile sum i diag.
Funcia diag(A) scoate ca rezultat un vector coninnd elementele de pe diagonala
principal. Tastai:

diag(A) (2.61)

MATLAB va rspunde cu:

ans = (2.62)
16
10
7
1
Tastnd:

sum(diag(A)) (2.63)

se va obine rezultatul dorit:

ans = (2.64)
34

MEDII DE CALCUL N INGINERIE ELECTRIC

45
Suma elementelor de pe anti-diagonala matricei A, se poate obine folosind funcia, fliplr,
care genereaz matricea permutat stanga-dreapta (flip left-right). Astfel pentru a obine
suma dorit tastai:

sum(diag(fliplr(A))) (2.65)

MATLAB va rspunde cu:

ans = (2.66)
34

Aflarea dimensiunilor matricelor i vectorilor este posibil folosind funciile size i
length. Deoarece matricea A este o matrice 4x4, executnd comanda size(A) se obine:

size(A) (2.67)

ans = (2.68)
4 4

Funcia find determin indicii elementelor unui vector care ndeplinesc o condiie logic
dat. n forma sa cea mai simpla, find ntoarce un vector coloan de indici cu elemente
nenule. Transpunnd acel vector se obine un vector de tip rnd de indici. Dac definim
B = [ 0 1 2; 1 0 3; 1 2 0] i aplicm funcia find, gsim locaiile numerelor nenule folosind
indexarea unidimensional n matricea B:

k = find(B)' (2.69)

k = (2.70)
2 3 4 6 7 8

Pentru a afia acele numere nenule ca un vector rnd n ordinea determinat de k, folosim
operaia B(k)

ans = (2.71)
1 1 1 2 2 3

Cnd folosii vectorul k drept index stnga ntr-o instruciune de asignare, structura
matricei este pstrat. De pild tastai:
B(k) = NaN (2.72)

B = (2.73)
0 NaN NaN
NaN 0 NaN
NaN NaN 0

2.3.5. Concatenarea i reconfigurarea matricelor. Concatenarea este procesul de
alturare a matricelor mici pentru a construi matrice mai mari. De fapt, o matrice reprezint
concatenarea elementelor sale individuale. Perechea de paranteze ptrate, [ ], este operatorul
46 MEDII DE CALCUL N INGINERIE ELECTRIC
de concatenare. De pild, plecnd de la matricea A, construii matricea B = [A A+32; A+48
A+16]. Rezultatul este o matrice 8 x 8, obinut alturnd cele patru sub-matrice.

B = (2.74)
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

Sumele elementelor de pe coloanele matricei B se obin folosind funcia sum(B):

ans = (2.75)
260 260 260 260 260 260 260 260

Sumele elementelor de pe rndurile matricei B se obin folosind funcia sum(B')'.

ans = (2.76)
196
196
196
196
324
324
324
324

Putei terge rnduri i coloane dintr-o matrice folosind doar o pereche de paranteze
ptrate. ncepei cu X = A. Apoi, pentru a terge cea de-a doua coloan a lui X, folosii
X(:, 2) = [ ]. Astfel X devine:

X = (2.77)
16 2 13
5 11 8
9 7 12
4 14 1

Dac tergei un singur element dintr-o matrice, rezultatul nu mai este o matrice. Deci
expresii ca X(1, 2) = [ ] sunt incorecte i generatoare de erori.

2.3.6. Funcii de analiz matriceal. MATLAB include o bibliotec de funcii de
analiz matriceal din care fac parte cele din Tabelul 2.6. Pentru exemplificare se consider
B = [5 2; 1 3].
MEDII DE CALCUL N INGINERIE ELECTRIC

47
Tabel 2.6
Funcie Descriere Exemplu
cond Numrul de condiionare cond(B) 2.6180
det Calculeaz determinantul unei matrice det(B) 13
eig Calculeaz valorile proprii ale unei matrice eig(B) 5.7321
2.2679
norm Calculeaz norma unei matrice sau a unui vector norm(B) 5.8339
rank Calculeaz rangul unei matrice rank(B) 2
trace Calculeaz urma unei matrice sau suma elementelor de
pe diagonala principal
trace(B) 8

2.4. Rezolvarea sistemelor de ecuaii liniare folosind operaii cu matrice

Una dintre problemele importante n calculul tehnic const n soluionarea simultan a
ecuaiilor liniare. n limbaj matriceal, aceast problem poate fi formulat dup cum
urmeaz:

Fiind dat o matrice A i un vector B, exist un vector unic X astfel nct AX = B sau
XA = B ?

Putem considera n prima faz exemplul unei matrice A de dimensiune 1x1, A = 7 i
B = 21. Are ecuaia 7
.
X = 21 o soluie unic ? Bineneles i soluia aceasta este obinut
prin mprire, X = 21/7 = 3. Soluia nu este n general obinut prin calculul inversului lui
7, adic 7
-1
= 0.142857..., i apoi prin nmulirea lui 7
-1
cu 21. Aceste operaiuni ar
presupune mai multe calcule i, dac 7
-1
este reprezentat de un numar finit de digii,
operaiunile ar putea conduce la un rezultat afectat de erori. Consideraii similare sunt
valabile n cazul seturilor de ecuaii liniare cu mai mult de o necunoscut. MATLAB
rezolv asemenea ecuaii fr a calcula inversa matricei. Cele dou simboluri de mprire,
/ i \ sunt folosite pentru cele dou situaii n care matricea necunoscut apare n stnga
sau n dreapta matricei coeficienilor.

X = A\B reprezint soluia ecuaiei matriceale AX = B.
X = B/A reprezint soluia ecuaiei matriceale XA = B.
n practic, ecuaiile liniare de forma AX = B sunt mult mai frecvente dect cele de forma
XA = B.

Matricea coeficienilor A nu trebuie s fie neaprat ptratic. Dac A este de dimensiune
m x n, exsist trei cazuri posibile:
m = n sistem patratic, caz n care se caut o soluie exact.
m > n sistem supradeterminat, caz n care se caut o soluie n sensul celor mai mici
patrate.
m < n sistem subdeterminat, caz n care se caut o soluie de baz cu cel mult m
componente nenule.

Cazul cel mai frecvent ntlnit n practic este cel n care m = n i n care avem de a face
cu un sistem ptratic.
48 MEDII DE CALCUL N INGINERIE ELECTRIC
Dac matricea A este singular, soluia ecuaiei AX = B fie nu exist, fie nu este unic.
Operaia A\B genereaz un mesaj de avertizare dac matricea A este aproape singular i un
mesaj de eroare dac matricea A este singular.

2.4.1. Formularea matriceal a sistemelor de ecuaii liniare. Fie urmtorul sistem de
ecuaii liniare:

3x + 2y z = 10 (2.78)
- x + 3y + 2z = 5
x - y - z = -1

Acest sistem poate fi pus sub forma matriceal AX = B unde:
matricea A = [3 2 -1; -1 3 2; 1 -1 -1];
vectorul X = [x; y; z];
vectorul B = [10; 5; -1];

2.4.2. Rezolvarea sistemelor prin mprirea matricelor. O metod de rezolvare a
sistemelor de ecuaii liniare const n mprirea matricelor. n cazul aplicaiei numerice de
mai sus rezolvarea ecuaiei matriceale presupune mprirea la stnga a matricelor:

AX = B => X = A \ B (2.79)

Astfel pentru a rezolva aplicaia numeric de mai sus se face apel la urmtoarea secven
de comenzi MATLAB:

A = [3 2 -1; -1 3 2; 1 -1 -1]; (2.80)
B = [10; 5; -1];
X = A\B

Rezultatul calculelor efectuate este urmtorul:

X = [-2.0000; 5.0000; -6.0000] (2.81)

Ceea ce semnific faptul c soluia sistemului este: x = -2, y = 5 i z = -6.

2.4.3. Rezolvarea sistemelor prin inversarea matricelor. O alt metod de rezolvare a
sistemelor de ecuaii liniare const n inversarea matricelor. n cazul aplicaiei numerice de
mai sus rezolvarea ecuaiei matriceale presupune inversarea matricei A. Astfel nmulind la
stnga sistemul matriceal AX = B cu A
-1
se obine:

A
-1
AX = A
-1
B => I X = X = A
-1
B (2.82)

Inversarea unei matrice n MATLAB presupune utilizarea funciei specifice inv. Astfel
pentru a rezolva aplicaia numeric de mai sus se face apel la urmtoarea secven de
comenzi MATLAB:

A = [3 2 -1; -1 3 2; 1 -1 -1]; (2.83)
B = [10; 5; -1];
MEDII DE CALCUL N INGINERIE ELECTRIC

49
X = inv(A)*B

Rezultatul calculelor efectuate este acelai cu cel obinut prin metoda mpririi
matricelor:

X = [-2.0000; 5.0000; -6.0000] (2.84)

Aceasta semnific faptul c soluia sistemului este x = -2, y = 5 i z = -6.

Folosind ansamblul de comenzi de cronometrare a timpului de calcul tic toc se poate
constata c metoda de rezolvare a sistemelor folosind inversarea matricelor conduce la un
timp de calcul sensibil mai lung dect metoda mpririi matricelor.

2.5. Aplicaii numerice

APLICAIA 1:
Generai o matrice 4x4 cu numere reale aleatoare cuprinse ntre 0 i 100 folosind funcia
MATLAB rand.

Se folosete comanda MATLAB:

100*rand(4, 4)

n urma lansrii n execuie a comenzii anterioare rezultatul MATLAB este similar cu cel de
mai jos:

ans =
95.0129 89.1299 82.1407 92.1813
23.1139 76.2097 44.4703 73.8207
60.6843 45.6468 61.5432 17.6266
48.5982 1.8504 79.1937 40.5706

APLICAIA 2:
Generai matricea A =[16 2 3 NaN; NaN 11 10 8; Nan 7 6 12; 4 Nan 15 1].
Afectai valoarea zero elementelor NaN ale matricei A i afiati rezultatul pe ecran
folosind funcia MATLAB isnan de gsire a elementelor care nu sunt numere (care sunt
NaN Not a Number) ale unei matrice.

Se folosete setul de comenzi MATLAB:

A = [16 2 3 nan; nan 11 10 8; nan 7 6 12; 4 nan 15 1]
A (isnan(A)) = 0

Rezultatul MATLAB va fi:
50 MEDII DE CALCUL N INGINERIE ELECTRIC
A =
16 2 3 NaN
NaN 11 10 8
NaN 7 6 12
4 NaN 15 1

A =
16 2 3 0
0 11 10 8
0 7 6 12
4 0 15 1

APLICAIA 3:
Creai ntr-un editor exterior MATLAB-ului (de pild Notepad) un fiier text matrice.dat
sau matrice.txt coninnd urmtoarele 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

Importai fiierul n MATLAB workspace folosind una din sintaxele funciei load:
load matrice.dat sau load matrice.txt.

Se deschide aplicaia Windows Notepad i se tasteaz valorile de mai jos separate de tab.

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

Se salveaz informaiile de mai sus n directorul curent, n fiierul cu numele matrice.txt. Se
ncarc n Workspace matricea de mai sus n variabila A, folosind comanda MATLAB :

A = load('matrice.txt');

APLICAIA 4:
Se dau vectorii x = [1 5 2 8 9 0 1] i y = [5 2 2 6 0 0 2]. Executai comenzile de mai jos
i explicai rezultatele obinute:
x > y
y < x
y(y<x)
x == y (n MATLAB operatorul == nseamn egal logic i este folosit n operaii
logice. Atenie nu este identic cu operatorul clasic de atribuire =)
x <= y
y >= x
x | y (n MATLAB operatorul | nseamn sau logic)
x & y (n MATLAB operatorul & nseamn i logic)
MEDII DE CALCUL N INGINERIE ELECTRIC

51
x & (~y)
(x > y) | (y < 4)
(x > y) & (x < y)

Se lanseaz setul de comenzi MATLAB:

x = [1 5 2 8 9 0 1]
y = [5 2 2 6 0 0 2]
x > y
ans = 0 1 0 1 1 0 0

Vectorul obinut mai sus are aceeai lungime cu x i cu y, iar elementul k are valoarea 0
acolo unde x(k) y(k), respectiv valoarea 1 acolo unde x(k) > y(k).

y < x
ans = 0 1 0 1 1 0 0

Vectorul obinut este identic cu cel obinut n urma apelului comenzii x > y.

y(y<x)
ans = 2 6 0

Se obine un vector ce conine toate elementele k ale vectorului y ce verific urmtoarea
condiie y(k) < x(k).

x == y
ans = 0 0 1 0 0 1 0

Vectorul obinut are aceeai lungime cu x i cu y, elementul k avnd valoarea 0 acolo unde
condiia x(k) = y(k) nu este ndeplinit, respectiv valoarea 1 acolo unde condiia x(k) = y(k)
este ndeplinit.

x <= y
ans = 1 0 1 0 0 1 1

Se obine un vector de aceeai lungime cu x i cu y n care elementul k are valoarea 0 acolo
unde x(k) > y(k), respectiv valoarea 1 acolo unde x(k) y(k).

y >= x
ans = 1 0 1 0 0 1 1

Rspunsul este identic cu cel obinut n urma apelului comenzii x <= y.

x | y
ans = 1 1 1 1 1 0 1

Se obine un vector de aceeai lungime cu x i cu y n care elementul k are valoarea 0 acolo
unde x(k) = 0 i y(k) = 0, respectiv valoarea 1 acolo unde x(k) 0 sau y(k) 0.

x & y
ans = 1 1 1 1 0 0 1

52 MEDII DE CALCUL N INGINERIE ELECTRIC
Vectorul obinut are aceeai lungime cu x i cu y, elementul k avnd valoarea 0 acolo unde
x(k) = 0 sau y(k) = 0, respectiv valoarea 1 acolo unde x(k) 0 i y(k) 0.

x & (~y)
ans = 0 0 0 0 1 0 0

Vectorul obinut are aceeai lungime cu x i cu y, elementul k avnd valoarea 0 acolo unde
x(k) = 0 sau y(k) 0, respectiv valoarea 1 acolo unde x(k) 0 i y(k) = 0.

(x > y) | (y < 4)
ans = 0 1 1 1 1 1 1

Se obine un vector de aceeai lungime cu x i cu y n care elementul k are valoarea 0 acolo
unde x(k) y(k) i y(k) 4, respectiv valoarea 1 acolo unde x(k) > y(k) sau y(k) < 4.

(x > y) & (x < y)
ans = 0 0 0 0 0 0 0

Se obine un vector de aceeai lungime cu x i cu y n care toate elementele sunt nule
ntruct condiiile x > y i x < y sunt contradictorii i nu pot fi ndeplinite simultan niciodat.

APLICAIA 5:
Localizai elementele matricei A =[16 2 3 13; 5 11 10 8; 9 7 6 12; 4 14 15 1]
care sunt mai mici dect 10 i afiati-le pe ecran.

Se face apel la setul de comenzi MATLAB:

A =[16 2 3 13; 5 11 10 8; 9 7 6 12; 4 14 15 1];
A>10;
A(A>10)'

Rspunsul MATLAB este urmtorul:

ans = 16 11 14 15 13 12

APLICAIA 6:
Creai matricea A =[16 2 3 13; 5 11 10 8; 9 7 6 12; 4 14 15 1] si determinai
numrul de elemente i dimensiunile matricei folosind funciile MATLAB numel, i size.

Se folosete setul de comenzi MATLAB:

A = [16 2 3 13; 5 11 10 8; 9 7 6 12; 4 14 15 1];
numel(A)
size(A)

Rspunsul MATLAB este:

ans = 16

MEDII DE CALCUL N INGINERIE ELECTRIC

53
ans = 4 4

Prin urmare matricea A are 16 elemente i are dimensiunile 4 x 4.

APLICAIA 7:
S se creeze n directorul curent un fiier script care s genereze o matrice A de
dimensiune 10 x 10 i un vector B de dimensiune 10 x 1, ambele cu elemente aleatoare
cuprinse ntre 0 i 100. Apoi s se determine numrul de condiionare al matricei A i s
se rezolve sistemul AX = B prin dou metode.

Se folosesc comenzile MATLAB:

A = 100*rand(10, 10);
B = 100*rand(10, 1);
cond(A)
X1= A\B
X2= inv(A)*B

Rspunsul MATLAB este similar cu cel de mai jos:

ans = 110.7713

X1 =
3.8843
2.5836
-0.9715
-1.2489
0.9733
-3.9952
-0.6386
-0.6295
-0.0911
-0.4651

X2 =
3.8843
2.5836
-0.9715
-1.2489
0.9733
-3.9952
-0.6386
-0.6295
-0.0911
-0.4651


54 MEDII DE CALCUL N INGINERIE ELECTRIC
Prin urmare numrul de condiionare al matricei este 110.7713 iar soluia ecuaiei este fie
X1 fie X2.

APLICAIA 8:
Creai o matrice B adugnd 16 la fiecare din elementele matricei A =[16 2 3 13; 5
11 10 8; 9 7 6 12; 4 14 15 1]. Generai o nou matrice C avnd elementele egale cu
rdcina ptrat a elementelelor matricei B. Generai o nou matrice D avnd elementele
egale cu ptratul elementelelor matricei C. Folosii funcia sqrt de extragere a
radicalului.

Se face apel la setul de comenzi MATLAB de mai jos:

A =[16 2 3 13; 5 11 10 8; 9 7 6 12; 4 14 15 1];
B = A + 16
C = sqrt(B)
D = C.^2

Rspunsul MATLAB este:

B =
32 18 19 29
21 27 26 24
25 23 22 28
20 30 31 17

C =
5.6569 4.2426 4.3589 5.3852
4.5826 5.1962 5.0990 4.8990
5.0000 4.7958 4.6904 5.2915
4.4721 5.4772 5.5678 4.1231

D =
32.0000 18.0000 19.0000 29.0000
21.0000 27.0000 26.0000 24.0000
25.0000 23.0000 22.0000 28.0000
20.0000 30.0000 31.0000 17.0000

APLICAIA 9:
Creai un vector cu elementele Xn=(-1)
n+1
/(2n-1) unde n ia valoarea de la 1 la 100.
Calculai suma elementelor acestui vector.

Se folosesc comenzile MATLAB:

n = 1:100;
Xn = (-1).^(n+1)./(2*n-1);
MEDII DE CALCUL N INGINERIE ELECTRIC

55
Suma = sum(Xn)

Rspunsul MATLAB este:

Suma = 0.7829

APLICAIA 10:
Calculai numeric limita seriei Xn pentru n=1... , n care Xn=1/[n(n+1)].

Vom calcula seria pentru valori din ce n ce mai mari ale lui n folosind seturile de comenzi
MATLAB de mai jos:

n = 1:100;
Xn = 1./(n.*(n+1));
format long
Suma = sum(Xn)

Funcia format long permite afiarea rspunsul cu mai multe zecimale pentru a evidenia
mai clar evoluia acestuia. MATLAB va rspunde cu:

Suma = 0.99009900990099

n = 1:1000
Xn = 1./(n.*(n+1))
Suma = sum(Xn)

MATLAB va rspunde cu:

Suma = 0.99900099900100
n = 1:10000
Xn = 1./(n.*(n+1))
Suma = sum(Xn)

MATLAB va afia rspunsul:

Suma = 0.99990000999900

n = 1:100000
Xn = 1./(n.*(n+1))
Suma = sum(Xn)

MATLAB va rspunde cu:

Suma = 0.99999000010001

56 MEDII DE CALCUL N INGINERIE ELECTRIC
Se observ c pe msur ce n crete Suma tinde asimptotic la 1. Deci limita seriei este 1.

APLICAIA 11:
Calculai valorile curenilor I
1
, I
2
, I
3
folosind teoremele lui Kirchoff i operaiile cu
matrice din MATLAB. Cele 3 ecuaii punei-le sub forma [R]*[I]=[U], unde [R]
reprezint o matrice cunoscut de dimensiune 3x3, [I] reprezint un vector coloan
necunoscut care conine cei 3 cureni, iar [U] reprezint un vector coloan cunoscut.


Se scriu ecuaiile lui Kirchoff corespunztoare circuitului studiat:

I1 - I2 + I3 = 0
I1 + 2I2 = 7
2I2 + 3I3 = 12

Sistemul de ecuaii trebuie pus sub forma matriceal [R][I] = [U] ca mai jos:

1I1 - 1I2 + 1I3 = 0
1I1 + 2I2 + 0I3 = 7
0I1 + 2I2 + 3I3 = 12

adic sub forma:
|
|
|

\
|
=
|
|
|

\
|

|
|
|

\
|
12
7
0
3
2
1
3 2 0
0 2 1
1 1 1
I
I
I


Setul de comenzi MATLAB care genereaz matricele cunoscute [R] i [U] este:

R = [1 -1 1; 1 2 0; 0 2 3];
U = [0; 7; 12];

7 V
1 2 3
12 V
I
1
I
2
I
3

MEDII DE CALCUL N INGINERIE ELECTRIC

57
Soluia sistemului se obine cu una din comenzile MATLAB de mai jos:

I = R\U
sau
I = inv(R)*U

MATLAB va rspunde cu:

I =
1.0000
3.0000
2.0000

Deci valorile celor trei cureni sunt:
I1 = 1 A
I2 = 2 A
I3 = 3 A












58 MEDII DE CALCUL N INGINERIE ELECTRIC
3. FUNCII MATEMATICE UZUALE

MATLAB pune la dispoziia utilizatorului o bibliotec bogat de funcii matematice de
diferite tipuri.
3.1. Funcii de aproximare a numerelor

Funciile MATLAB de rotunjire a numerelor sunt prezentate succint n Tabelul 3.1.

Tabel 3.1
Funcia Descriere Exemplu
ceil Returneaz un numr ntreg rotunjit la cel mai apropiat
numr ntreg spre +infinit
ceil(3.2) 4
fix Returneaz un numr ntreg rotunjit la cel mai apropiat
numr ntreg spre zero
fix(-3.2) -3
floor Returneaz un numr ntreg rotunjit la cel mai apropiat
numr ntreg spre infinit
floor(3.2) 3
round Returneaz un numr ntreg rotunjit la cel mai apropiat
numr ntreg
round(3.2) 3
rem Returneaz restul mpririi argumentelor rem(-5,2) -1
mod Returneaz modulul restul mpririi argumentelor mod(-5,2) 1
rat Returneaz aproximarea unui numr cu fracii raionale
continue
rat(5.2) 5 + 1/(5)
rats Returneaz aproximarea unui numr cu fracii raionale rats(5.2) 26/5
sign Returneaz semnul argumentului sign(-5.2) -1
sign(5.2) +1
sign(0) 0

Funciile de mai sus pot fi aplicate unor scalari sau pot fi aplicate element cu element
unor matrice sau vectori.

3.2. Funcii de operare cu numere complexe

Operaiile principale specifice numerelor complexe din pachetul MATLAB sunt
prezentate n Tabelul 3.2.

Tabel 3.2
Funcia Descriere Exemplu
abs Calculeaz (valoarea absolut) modulul numerelor
complexe
abs(3+4i) 5
angle Calculeaz faza numerelor complexe angle(1+i) 0.7854
unwrap Calculeaz prile real i imaginar a numerelor
complexe exprimate sub form polar
unwrap(1+i) 1+i
conj Calculeaz conjugata complex a numerelor
complexe
conj(1+i) 1-i
imag Calculeaz partea imaginar a numerelor complexe imag(1+3i) 3
MEDII DE CALCUL N INGINERIE ELECTRIC


59
real Calculeaz partea real a numerelor complexe real(3+i) 3
complex Construiete numere complexe dac se cunosc
prile real i imaginar
complex(2,3) 2+3i
isreal Determin dac elementele matricelor sau vectorilor
sunt numere reale
isreal([2 3]) 1

Operaiile aritmetice clasice rmn valabile pentru numerele complexe, respectiv pentru
vectori i matrice avnd ca elemente numere complexe, Tabel 3.3.

Tabel 3.3
Operator Operaie
+ Adunare
- Scdere
* nmulire
/ mprire
\ mprire la stnga
^ Putere
Transpusa complex conjugat
( ) Pentru ordinea operaiilor

3.3. Funciile putere, radical, logaritm i exponenial

Funciile MATLAB de ridicare la putere, de extragere a radicalului, de calcul al
logaritmului i al exponenialei sunt prezentate n Tabelul 3.4.

Tabel 3.4
Funcia Descriere Exemplu
^ Ridicare la putere a numerelor sau matricelor 2^2 4
power Ridicare la putere a numerelor sau matricelor
element cu element
power(2,2) 4
mpower Ridicare la putere a matricelor mpower(2,2) 4
exp Calculeaz exponeniala exp(2) 7.3891
log Calculeaz logaritmul natural log(7.3891) 2
log2 Calculeaz logaritmul n baza 2 log2(4) 2
log10 Calculeaz logaritmul n baza 10 log10(100) 2
nextpow2 Calculeaz puterea N a lui 2 care majoreaz modulul
lui 2
N

nextpow2(15) 4
pow2 Calculeaz puterea lui 2 pow2(5) 32
sqrt Calculeaz radicalul de ordinul 2 al numerelor sqrt(36) 6
reallog Calculeaz logaritmul natural pentru numere
pozitive
reallog(9) 2.1972
realpow Calculeaz puterea numerelor pozitive realpow(2,3) 8
realsqrt Calculeaz radicalul de ordinul 2 al numerelor
pozitive
realsqrt(16) 4


60 MEDII DE CALCUL N INGINERIE ELECTRIC
3.4. Funcii trigonometrice

MATLAB dispune de o bibliotec bine pus la punct de funcii trigonometrice care sunt
prezentate n Tabelul 3.5. Funciile trigonometrice pot aciona asupra unor scalari sau asupra
elementelor unor vectori sau matrice, n funcie de tipul argumentului transmis. Unghiurile
sunt n general considerate n radiani.

Tabel 3.5
Funcia Descriere Exemplu
sin Calculeaz sinusul argumentului sin(pi/2) 1
asin Calculeaz arcsinusul argumentului asin(1) 1.5708
sinh Calculeaz sinusul hiperbolic al argumentului sinh(2+2i)
-1.5093 + 3.4210i
asinh Calculeaz arcsinusul hiperbolic al argumentului asinh(2) 1.4436
cos Calculeaz cosinusul argumentului cos(pi) -1
acos Calculeaz arcosinusul argumentului acos(-1) 3.1416
cosh Calculeaz cosinusul hiperbolic al argumentului cosh(2+2i)
-1.5656 + 3.2979i
acosh Calculeaz arcosinusul hiperbolic al argumentului acosh(2) 1.3170
tan Calculeaz tangenta argumentului tan(pi/4) 1
atan Calculeaz arctangenta argumentului atan(1) 0.7854
tanh Calculeaz tangenta hiperbolica a argumentului tanh(2+2i)
1.0238 - 0.0284i
atanh Calculeaz arctangenta hiperbolic a argumentului atanh(2)
0.5493 + 1.5708i
cot Calculeaz cotangenta argumentului cot(pi/4) 1
acot Calculeaz arcotangenta argumentului acot(1) 0.7854
coth Calculeaz cotangenta hiperbolic a argumentului coth(2+2i)
0.9760 + 0.0271i
acoth Calculeaz arcotangenta hiperbolic a argumentului acoth(2) 0.5493
sec Calculeaz secanta argumentului sec(pi) -1
asec Calculeaz arcsecanta argumentului asec(-1) 3.1416
sech Calculeaz secanta hiperbolic a argumentului sech(2+2i)
-0.1175 - 0.2475i
asech Calculeaz arcsecanta hiperbolic a argumentului asech(2) 1.0472i
csc Calculeaz cosecanta argumentului csc(pi/2) 1
acsc Calculeaz arccosecanta argumentului acsc(1) 1.5708
csch Calculeaz cosecanta hiperbolic a argumentului csch(2+2i)
-0.1080 - 0.2447i
acsch Calculeaz arccosecanta hiperbolic a argumentului acsch(2) 0.4812


3.5. Funcii de matematic discret

MATLAB conine un ansamblu de funcii de matematic discret cum ar fi funciile de
calcul al divizorilor i multiplilor comuni etc. dup cum sunt prezentate n Tabelul 3.6.




MEDII DE CALCUL N INGINERIE ELECTRIC


61
Tabel 3.6
Funcia Descriere Exemplu
factor ntoarce un vector ce conine factorii primii ai unui
numr n
factor(39) 3 13
factorial Calculeaz factorialul unui numr n factorial(4) 24
gcd Calculeaz cel mai mare divizor comun a dou
numere
gcd(115, 35) 5
lcm Calculeaz cel mai mic multiplu comun a dou
numere
lcm(115, 35) 805
primes ntoarce un vector ce conine numerele prime mai
mici dect n
primes(7) 2 3 5 7
isprime Determin dac elementele unui vector sau matrice
sunt numere prime
isprime([4 5 7]) 0 1 1
nchoosek Calculeaz combinri de n luate cte k nchoosek(3, 2) 3
perms Calculeaz toate permutrile posibile perms([2, 3]) 3 2
2 3

3.6. Aplicaii numerice


APLICAIA 12:
Se d un transformator monofazat funcionnd n gol i avnd urmtoarele date: R
1
=1,
X
1
=2, R
w
= 2000 , X
m
= 2000 . Tensiunea primar este U
1
=220 V. S se scrie un
fiier script care s aib ca parametri datele transformatorului i care s permit calculul
mrimilor:
a) Curentul I
10
i tensiunea U
20


n gol,
b) Puterile activ P
10
i reactiv Q
10
absorbite de transformator.










Folosind setul de comenzi MATLAB de mai jos se definesc mrimile cunoscute,
caracteristice transformatorului:

R1 = 1;
Xs1 = 2;
Xm = 2000;
Rw = 2000;
U1 = 220;
U
1

I
10

R
1
jX
1

jX
m
U
20

R
w

62 MEDII DE CALCUL N INGINERIE ELECTRIC
Pentru a calcula mrimile cerute se face apel la comenzile MATLAB:

I10 = U1/(R1 + j*Xs1 + j*Rw*Xm/(Rw + j*Xm))
U20p = I10*j*Xm*Rw/(Rw + j*Xm)
P10 = R1*abs(I10^2) + abs(U20p^2)/Rw
Q10 = Xs1*abs(I10^2) + abs(U20p^2)/Xm

Rspunsul MATLAB va fi:

I10 = 0.1098 - 0.1099i
U20p = 2.1967e+002 -1.0967e-001i
P10 = 24.1517
Q10 = 24.1758

APLICAIA 13:
S se genereze un vector X=1:10 i un vector Y cu 10 de elemente numere ntregi
aleatoare ntre 0 i 100. Programul va crea un alt vector Y1 care se obine nlocuind cu 0
toate numerele divizibile cu 7 i va afia cei trei vectori X, Z, Y1.

Se folosesc instruciunile MATLAB:

X = 1 :10
Y = round(100*rand(1, 10))
Y1 = Y ;
Y1(rem(Y1, 7)==0) = 0

MATLAB va afia cei trei vectori n mod similar ca n exemplul de mai jos :

X = 1 2 3 4 5 6 7 8 9 10
Y = 84 37 62 73 19 90 57 63 23 55
Y1 = 0 37 62 73 19 90 57 0 23 55

APLICAIA 14:
S se genereze vectorul x=[3 15 9 12 -1 0 -12 9 6 1] i s se precizeze comenzile care vor
efectua urmtoarele operaiuni:
a) creaz un vector y1 care conine valorile vectorului x ns n care toate valorile
pozitive sunt egalate cu zero
b) creaz un vector y2 care conine valorile vectorului x ns n care toate numerele
multiple de 3 sunt egalate cu 3
c) creaz un vector y3 care conine valorile vectorului x ns multiplicnd cu 5 valorile
pare ale lui x
d) extrage valorile lui x care sunt mai mari ca 10 i le grupeaz ntr-un vector y4
e) creaz un vector y5 care conine valorile vectorului x ns n care toate valorile mai
mici dect media elementelor sunt egalate cu zero
f) creaz un vector y6 care conine valorile vectorului x ns n care toate valorile mai
mari dect media elementelor sunt egalate cu diferena acestora fa de medie.
MEDII DE CALCUL N INGINERIE ELECTRIC


63
Comenzile MATLAB necesare pentru generarea vectorilor x, y1, y2 y6 sunt urmtoarele:

x=[3 15 9 12 -1 0 -12 9 6 1]
y1 = x; y1(y1>0) = 0
y2 = x; y2(rem(y2, 3) == 0) = 3
y3 = x; y3(rem(y3, 2) == 0) = y3(rem(y3, 2) == 0)*5
y4 = x; y4 = y4(y4>10)
y5 = x; y5(y5<sum(y5)/length(y5)) = 0
y6 = x; y6(y6>sum(y6)/length(y6)) = y6(y6>sum(y6)/length(y6)) - sum(y6)/length(y6)

Rspunsurile MATLAB corespunztoare sunt:

x = 3 15 9 12 -1 0 -12 9 6 1
y1 = 0 0 0 0 -1 0 -12 0 0 0
y2 = 3 3 3 3 -1 3 3 3 3 1
y3 = 3 15 9 60 -1 0 -60 9 30 1
y4 = 15 12
y5 = 0 15 9 12 0 0 0 9 6 0
y6 = 3.0000 10.8000 4.8000 7.8000 -1.0000 0 -12.0000 4.8000 1.8000
1.0000

APLICAIA 15:
Afectai valoarea zero elementelor matricei A =[16 5 4 1; 5 1 10 6; 3 7 6 1;
2 1 13 10] care nu sunt prime i afiati rezultatul pe ecran folosind funcia MATLAB
~isprime de gsire a numerelor neprime aplicat unei matrice. n MATLAB operatorul
~ nseamn nu logic).

Se folosesc urmtoarele comenzi MATLAB:

A = [16 5 4 1; 5 1 10 6; 3 7 6 1; 2 1 13 10] ;
A(~isprime(A)) = 0

MATLAB va rspunde cu:

A =
0 5 0 0
5 0 0 0
3 7 0 0
2 0 13 0

APLICAIA 16:
S se calculeze cel mai mic divizor comun al numerelor 55878, 112782, 1278.

Se folosesc urmtoarele instruciuni MATLAB:

ab = gcd(55878, 112782);
cmmdc = gcd(ab, 1278)
64 MEDII DE CALCUL N INGINERIE ELECTRIC
MATLAB va rspunde cu:

cmmdc = 6

Deci cel mai mic divizor comun al celor trei numere naturale este 6.

MEDII DE CALCUL N INGINERIE ELECTRIC


65

4. FUNCII MATLAB DE INTERES GENERAL
4.1. Expresii MATLAB

Ca alte limbaje de programare, MATLAB pune la dispoziie expresii matematice, dar
spre deosebire de multe alte limbaje de programare aceste expresii lucreaz cu matrice. n
clasa expresiilor pot fi incluse variabilele, numerele, operatorii i funciile.

4.1.1. Variabile. MATLAB nu necesit nici un tip de instruciuni de declaraie sau
dimensionare a variabilelor. Cnd MATLAB ntlnete un nou nume de variabil, acesta
creaz automat variabila i aloc memoria necesar. Dac variabila deja exist, MATLAB
schimb coninutul acesteia i dac este necesar aloc o alt cantitate de memorie. De pild
tastai:

num_studenti = 25 (4.1)

MATLAB creaz o matrice 1x1 numita num_studenti i aloc valoarea 25 singurului
element al matricei. Numele de variabile constau dintr-o liter, urmat de un numr de
litere, cifre, etc. MATLAB folosete doar primele 31 caractere ale unui nume de variabil.
MATLAB face deosebirea ntre litere mari i mici (este case sensitive). A i a nu reprezint
aceeai variabil. Pentru a vizualiza matricea asociat oricrei variabile, tastai numele
acestei variabile.

4.1.2. Numere. MATLAB folosete pentru numere notaia zecimal convenional, cu
punct zecimal opional i semne plus sau minus. Notaia tiinific folosete litera e pentru a
specifica 10 la o putere. Numerele imaginare folosesc fie i fie j ca sufix. Iat cteva exemple
de numere:

3 -99 0.0001 (4.2)
9.6397238 1.60210e-20 6.02252e23
1i -3.14159j 3e5i

Toate numerele sunt stocate intern folosind formatul long standardizat. Avnd o precizie de
circa 16 cifre semnificative, variind ntre aproximativ 10
-308
i 10
+308
.

4.1.3. Operatori. Operatorii aritmetici familiari folosii n MATLAB sunt prezentai n
Tabelul 4.1.

Tabel 4.1
Operator Operaie
+ Adunare
- Scdere
* nmulire
/ mprire
\ mprire la stnga
66 MEDII DE CALCUL N INGINERIE ELECTRIC
^ Putere
Transpusa complex conjugat
( ) Pentru ordinea operaiilor

4.1.4. Funcii. MATLAB pune la dispoziia utilizatorului un mare numr de funcii
matematice standard, cum ar fi de pild abs, sqrt, exp, i sin. Scond radical sau aplicnd
logaritm unui numr negativ nu este eroare ci rezultatul este un numr complex calculat
automat. MATLAB dispune de o multitudine de alte funcii matematice mult mai avansate
cum ar fi de pild cazul funciilor Bessel. Multe dintre aceste funcii accept argumente
complexe. O list a funciilor elementare se poate obine tastnd help elfun. Pentru a obine
o list a funciilor mai avansate de matematic i de manipulare a matricelor tastai help
specfun, help elmat.
Anumite funcii cum ar fi sqrt i sin, sunt incluse n MATLAB core. Acestea sunt prin
urmare foarte eficiente, dar detaliile de calcul nu sunt uor accesibile. Alte funcii ca sinh,
sunt implementate n fiiere de tip M avnd codul accesibil, acesta putnd fi chiar modificat.
Diverse funcii speciale furnizeaz valori ale unor constante folositoare, ca n Tabelul 4.2.

Tabel 4.2
pi 3.14159265...
i sqrt(-1)
j sqrt(-1)
eps Precizia relativ n virgul mobil 2
-52

realmin Cel mai mic numr n virgul mobil 2
-1022

realmax Cel mai mare numr n virgul mobil (2-eps)2
1023

Inf Infinit
NaN Not a number

Infinite (Inf) este generat prin mprirea cu zero a uni numr ne-nul, sau prin evaluarea
unor expresii matematice care depesc realmax.
Not-a-number (NaN) este generat cnd se ncearc evaluarea expresiilor de genul 0/0 sau
Inf-Inf care nu au valori matematice bine definite. Numele funciilor nu sunt rezervate, deci
putem suprascrie peste oricare dintre ele o nou variabil, de pild eps = 1.e-6 i apoi s
utilizm acea valoare n calcule ulterioare. Funcia original poate fi restaurat cu funcia
clear eps.

4.1.5. Exemple de expresii. Iat cteva exemple de expresii MATLAB i rezultatele
corespunztoare. Tastai:

rho = (1+sqrt(5))/2 (4.3)

rho = (4.4)
1.6180

a = abs(3+4i) (4.5)

a = (4.6)
5
MEDII DE CALCUL N INGINERIE ELECTRIC


67

z = sqrt(besselk(4/3,rho-i)) (4.7)

z = (4.8)
0.3730+ 0.3214i

huge = exp(log(realmax)) (4.9)

huge = (4.10)
1.7977e+308

toobig = pi*huge (4.11)

toobig = (4.12)
Inf

4.2. Introducerea variabilelor, funciilor i comenzilor MATLAB

Funciile i comenzile MATLAB se lanseaz la linia de comand n fereastra Command
Window. Prompt-ul (>>) din Command Window indic faptul c MATLAB este gata de a
accepta o comand din partea dvs. Cnd apare promptul >>, putei introduce o variabil sau
lansa o funcie. De pild, pentru a crea o matrice, A de dimensiune 3 x 3 tastai:

A = [1 2 3; 4 5 6; 7 8 10] (4.13)

Dup ce ai tastat linia de comand de mai sus, cnd apsai tasta Enter sau Return,
MATLAB va rspunde cu:

A = (4.14)
1 2 3
4 5 6
7 8 10

Pentru a lansa o funcie, tastai funcia, inclusiv toate argumentele i apsai tasta
Return sau Enter. MATLAB va afia rezultatul. De pild, tastai:

rand(3) (4.15)

i MATLAB va rspunde cu:

ans = (4.16)
0.4199 0.9200 0.6208
0.7537 0.8447 0.7313
0.7939 0.3678 0.1939
68 MEDII DE CALCUL N INGINERIE ELECTRIC
Dac vrei s introducei mai multe linii de comand nainte s le lansai n execuie,
folosii tastele Shift + Enter sau Shift + Return dup fiecare linie, pn la ultima. Apoi
apsai Enter sau Return pentru a lansa n execuie toate liniile. Afiarea promptului sub
forma K >> n Command Window indic faptul c MATLAB lucreaz n debug mode.

4.2.1. Funcia format. Funcia format controleaz formatul numeric al valorilor afiate
de MATLAB. Funcia afecteaz doar afiarea numerelor, nu i modul de calcul i salvare.
Iat cteva exemple de formate, mpreun cu rezultatele furnizate. Tastai:

format short (4.17)

x = [4/3 1.2345e-6] (4.18)

x = (4.19)
1.3333 0.0000

format short e (4.20)

x (4.21)

x = (4.22)
1.3333e+000 1.2345e-006

format short g (4.23)

x (4.24)

x = (4.25)
1.3333 1.2345e-006

format long (4.26)

x (4.27)

x = (4.28)
1.33333333333333 0.00000123450000

format long e (4.29)

x (4.30)

x = (4.31)
1.333333333333333e+000 1.234500000000000e-006

format long g (4.32)

x (4.33)

MEDII DE CALCUL N INGINERIE ELECTRIC


69
x = (4.34)
1.33333333333333 1.2345e-006

format bank (4.35)

x (4.36)

x = (4.37)
1.33 0.00

format rat (4.38)

x (4.39)

x = (4.40)
4/3 1/810045

format hex (4.41)

x (4.42)

x = (4.43)
3ff5555555555555 3eb4b6231abfd271

format + (4.44)

x (4.45)

x = (4.46)
++

Dac cel mai mare element al unei matrice este mai mare dect 10
3
sau mai mic dect
10
-3
, MATLAB aplic un factor de scalare comun pentru formatele short i long. n plus
fa de funciile format artate mai sus funcia format compact terge din liniile vide afiate
odat cu rezultatele MATLAB n Command Window.

4.2.2. Evaluarea unei selecii. Pentru a lansa n execuie o selecie n Command
Window, efectuai selecia, apoi executai un clic-dreapta i selectai Evaluate Selection
din meniul contextual. Nu putei evalua o selecie ct timp MATLAB este ocupat, de pild
pe durata lansrii unui fiier M.

4.2.3. Deschiderea unei selecii. Pentru a deschide un fiier function M, selectai funcia
corespunztoare fiierului n Command Window, i apoi clic-dreapta i selectai Open
Selection din meniul contextual. Fiierul function M asociat funciei respective se deschide
n Editor/Debugger.

4.2.4. Lansarea unui singur proces. n MATLAB putei lansa doar un singur proces
simultan. Dac MATLAB este ocupat cu rularea unei alte funcii, orice alt comand lansat
70 MEDII DE CALCUL N INGINERIE ELECTRIC
nu va putea fi executat. Comanda urmtoare va fi lansat cnd cea anterioar s-a ncheiat.
De pild, nu putei defini breakpoints din Editor/Debugger ct timp MATLAB execut o
funcie n Command Window.

4.2.5. Diferenierea ntre litere mari i litere mici. MATLAB face diferena ntre litere
mici i litere mari (este case sensitive). De pild, nu putei lansa funcia Plot ci trebuie s
lansai funcia plot. n mod similar, variabila a nu este tot una cu variabila A. Trebuie notat
faptul c dac folosii funcia help, numele funciilor sunt afiate cu litere mari, de pild,
PLOT, ns doar cu scopul de a le scoate n eviden fa de restul textului. Nu folosii litere
mari cnd lansai funcii MATLAB. Anumite funcii de interfaare cu Java ntr-adevr
folosesc minuscule i majuscule i trebuiesc introduse ca atare. Spaiile de tip blanc n jurul
operatorilor cum ar fi -, :, i ( ), sunt opionali, i pot mbunti claritatea programului.

4.2.6. Introducerea mai multor funcii pe o linie de comand. Pentru a introduce mai
multe funcii ntr-o singur linie de comand, separai funciile cu o virgul ( , ) sau punct i
virgul ( ; ). Prin folosirea semnului punct i virgul ( ; ) se elimin afiarea rezultatului
comenzii precedente. De pild, plasai 3 funcii pe o linie pentru a construi un tabel de
logaritmi :

>> format short; x = (1:10)'; logs = [x log10(x)] (4.47)

apoi apsai Enter sau Return pentru a lansa funciile n ordine de la stnga la dreapta.

4.2.7. Introducerea liniilor de comand lungi. Dac o instruciune nu ncape pe o linie,
folosii 3 puncte, "..." pentru a indica faptul ca aceast instruciune continu pe linia
urmtoare, apsai apoi Enter sau Return pentru a avansa la linia urmtoare i apoi
continuai introducerea instruciunii. De pild:

s = 1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + 1/7 ... (4.48)
- 1/8 + 1/9 - 1/10 + 1/11 - 1/12;

sau de pild:

headers = ['Author Last Name, Author First Name, ' ... (4.49)
'Author Middle Initial']

MATLAB va afia:

headers = (4.50)
Author Last Name, Author First Name, Author Middle Initial

Numrul maxim de caractere permis pe o singur linie este de 4096.

4.2.8. Marcarea sintaxei. Anumite instruciuni apar n diferite culori pentru a v ajuta s
gsii mai uor anumite elemente, cum ar fi identificarea perechilor de instruciuni if/else:
MEDII DE CALCUL N INGINERIE ELECTRIC


71
Tastai un string i acesta va fi afiat n mov. Cnd finalizai tastarea string-ului, acesta
devine rou;
Tastai un cuvnt cheie, cum ar fi funcia for i aceasta va fi afiat cu albastru. Liniile
de comand pe care le introducei ntre funciile de nceput i sfrit de control logic sunt
scrise cu aliniat.
Un dublu-clic pe o parantez rotund de deschidere sau nchidere ( ), parantez dreapt
[], sau acolad {}, are ca urmare selectarea caracterelor dintre acea parantez i perechea
sa.
Tastnd o parantez de nchidere (sau deschidere) i paranteza sa pereche de deschidere
(sau nchidere) paranteza respectiv apare pentru scurt timp marcat cu alt culoare.
Tastai o parantez de nchidere (sau deschidere) prost pus i MATLAB va afia o linie
orizontal peste paranteza respectiv. De pild:

>> CC = C {:} (4.51)

Folosii tastele sgeat pentru a v poziiona deasupra unei paranteze de deschidere sau
nchidere. Acea parantez i paranteza sa pereche de nchidere sau deschidere apar
pentru scurt timp marcate cu alt culoare.
Dac tastai simbolul %, MATLAB nelege c ceea ce urmeaz este un comentariu i va
apare scris n culoarea verde. Aceea informaie este tratat de MATLAB ca un
comentariu. Tastai o comand sistem, cum ar fi ! (shell escape), i linia va apare n
galben. Erorile apar scrise n rou.

Fig. 4.1. Marcarea cuvintelor cheie MATLAB.

4.2.9. Editarea liniei de comenzi. Facilitile de editare a textului permit creterea
eficienei i reducerea timpului de lucru.

4.2.9.1. Lucrul cu clipboard-ul. Comenzile Cut, Copy, Paste, Undo, i Redo din meniul
Edit fac parte din aceast categorie i pot fi folosite n editarea textului introdus la linia de

Culorile predefinite sunt indicate aici pentru a le schimba folosii Preferences
Variabilele de tip string
nchise sunt marcate cu maro
Variabilele de tip string
deschise sunt marcate cu mov
Cuvintele cheie sunt
marcate cu albastru
72 MEDII DE CALCUL N INGINERIE ELECTRIC
comand n Command Window. Unele dintre aceste comenzi pot fi accesate deasemenea
din meniul contextual.

4.2.9.2. Re-apelarea liniilor de comand. Folosii tastele tip sgeat, tasta tab, i tastele
de control pentru a reapela, edita, i refolosi funcii pe care le-ai introdus anterior. De pild,
s presupunem c din greeal ai introdus:

rho = (1+ sqt(5))/2 (4.52)

MATLAB va rspunde cu:

??? Undefined function or variable 'sqt'. (4.53)

Deoarece ai introdus greit funcia sqrt. n loc de a retasta ntreaga linie, apsai tasta .
Linia tastat anterior este reafiat. Folosii tastele tip sgeata stnga sau dreapta pentru a
repoziiona cursorul i pentru a corecta funcia i a introduce litera r care lipsete i deci
pentru a obine sqrt n loc de sqt. Folosirea repetat a tastei reapeleaz linii de comand
tastate anterior. Funciile pe care le-ai introdus sunt memorate ntr-un buffer. Putei folosi
re-apelarea inteligent pentru a reapela o funcie anterioar ale crei prime caractere le
specificai dvs. De pild, tastnd literele plo i apsnd tasta va fi reapelat ultima funcie
care a nceput cu plo, cum ar fi cazul funciei plot apelat recent. Aceast operaiune face
difereniere ntre litere mici i mari. n Tabelul 4.3 este prezentat o list de taste tip sgeat
sau taste de tip control pe care le putei folosi n Command Window.

Tabel 4.3
Tasta Tasta control Operaiune
Ctrl+P Re-apeleaz linia anterioar
Ctrl+N Re-apeleaz linia urmtoare
Ctrl+B Mut cursorul napoi cu un caracter
Ctrl+F Mut cursorul nainte cu un caracter
Ctrl + Ctrl+R Mut cursorul la dreapta cu un cuvnt
Ctrl + Ctrl+L Mut cursorul la stnga cu un cuvnt
Home Ctrl+A Mut cursorul la nceputul unei linii
End Ctrl+E Mut cursorul la sfritul unei linii
Esc Ctrl+U terge linia
Delete Ctrl+D terge caracterul din dreapta cursorului
Backspace Ctrl+H terge caracterul din stnga cursorului
Ctrl+K terge caracterele pn la sfritul liniei
Shift+Home Selecteaz caracterele pn la nceputul liniei
Shift+End Selecteaz caracterele pn la sfritul liniei

4.2.9.3. Completarea numelui cu ajutorul tastei Tab. MATLAB completeaz numele
unei funcii, variabile, nume de fiier, sau proprietate a unui grafic, dac tastai primele
cteva litere i apoi apsai tasta Tab. Dac exist un singur nume, numele este completat n
mod automat. De pild, dac ai creat o variabil costuri_iulie, tastai costuri i apsai tasta
Tab. MATLAB va completa numele, afind costuri_iulie. Apsai apoi Return sau Enter
pentru a lansa instruciunea. n acest exemplu, MATLAB afieaz coninutul variabilei
costuri_iulie. Dac exist mai multe nume care ncep cu literele pe care le-ai tastat, apsai
MEDII DE CALCUL N INGINERIE ELECTRIC


73
tasta Tab din nou pentru a vedea o lista a acestor nume. De pild, tastai cos i apsai tasta
Tab. MATLAB nu afieaz nimic, indicnd c exist mai multe nume de funcii care ncep
cu cos. Apasai din nou Tab i MATLAB va afia:

cos cos_tr cosh cosint costfun costuri_iulie (4.54)

Lista rezultant cu nume de funcii include numele variabilei pe care ai creat-o,
costuri_iulie, dar include deasemenea i alte funcii care ncep cu cos.

4.2.10. tergerea comenzilor afiate n Command Window. Pentru tergerea
comenzilor afiate n Command Window selectai Clear Command Window din meniul
Edit. Aceast comand nu terge variabilele din workspace, ci doar afiarea comenzilor.
Prin urmare putei continua s folosii tasta pentru a reapela funcii lansate anterior.
Acelai efect de tergere se obine prin tastarea la linia de comand a funciei clc. Similar
funciei clc, funcia home mut prompt-ul pe primul rnd i prima coloan n fereastra
Command Window.

4.2.11. Eliminarea afirii comenzilor. Dac o linie de comand se ncheie cu punct i
virgul ( ; ), MATLAB lanseaz instruciunea, dar n urma apsrii tastei Enter sau Return,
nu afieaz nimic pe ecran. Aceast comand devine foarte util n cazul generrii
matricelor mari. De pild, dac tastai:

A = rand(200); (4.55)

i apoi apsai tasta Enter sau Return MATLAB creaz matricea A dar nu o afieaz pe
ecran.

4.2.12. Paginarea rezultatelor n Command Window. Dac rezultatul n Command
Window este lung, este posibil s nu ncap pe ecran i s fie afiat prea repede pentru a
putea fi neles. Folosii funcia more pentru a controla paginaia afirii n Command
Window. Iniial, funcia more este dezactivat (este off). Cnd tastai more on, MATLAB
afieaz doar o pagin (un ecran ntreg) de rezultate simultan. Dup afiarea primului ecran,
apsai una dintre tastele din Tabelul 4.4.

Tabel 4.4
Tasta Aciune
Enter sau Return Avans la linia urmtoare
Space Bar Avans la pagina urmtoare
Q Oprete afiarea rezultatelor

4.2.13. Controlul formatului i spaierea rezultatelor. Iniial, rezultatul numeric din
Command Window este afiat ca o valoare scalat n virgul fix cu 5-digii. Proprietile
de afiare a textului pot fi modificate pentru a schimba formatul numeric al rezultatului.
Formatul de afiare al textului afecteaz doar modul de afiare al numerelor, nu i modul de
calcul MATLAB sau modul de salvare. Un rezultat similar n ceea ce privete controlul
74 MEDII DE CALCUL N INGINERIE ELECTRIC
formatului de afiare al valorilor numerice din Command Window se obine prin folosirea
funciei format. Formatul pe care l specificai este valabil doar pe durata sesiunii curente.

4.2.14. Controlul interspaiilor. Pentru a controla interspaiile la afiarea textului n
Command Window folosii funcia format n urmtoarele variante:

format compact pentru a suprima liniile vide; acest format v permite totodat s
vizualizai mai multe informaii n Command Window.
format loose pentru a afia liniile vide; acest format permite o vizualizare mai uoar a
informaiilor.

4.2.15. Tiprirea coninutului ferestrei Command Window. Pentru a tipri tot
coninutul Command Window, selectai Print din meniul File. Pentru a printa doar o
selecie, efectuai mai nti selecia n Command Window i apoi alegei Print Selection din
meniul File.

4.2.16. nregistrarea unei sesiuni de lucru. Funcia diary creaz o copie a sesiunii dvs.
MATLAB ntr-un fiier pe disc, incluznd instruciunile introduse de la tastatur n
Command Window i rspunsul sistemului, exclusiv graficele. Putei vizualiza i edita
fiierul text rezultant folosind orice procesor de text. Pentru a crea un fiier pe disc, denumit
octombrie23.out care conine toate funciile pe care le introducei, i toate rspunsurile
MATLAB, tastai diary('octombrie23.out'). Pentru a ntrerupe nregistrarea sesiunii, folosii
diary('off').
Exist alte dou modaliti de vizualizare a informaiei unei sesiuni:

Utiliznd Command History, care conine o list a tuturor funciilor executate n
sesiunea curent i cele anterioare
Utiliznd sub Windows opiunea logfile de lansare a MATLAB-ului (vezi paragraful
1.3.2).

4.2.17. Execuia fiierelor M. Execuia fiierelor M, care sunt fiiere ce conin
instruciuni scrise n limbajul MATLAB, se efectuaz n acelai fel ca execuia oricrei alte
funcii MATLAB. Tastai numele fiierului M n Command Window i apsai tasta Enter
sau Return. Pentru a afia fiecare funcie din fiierul M pe msur ce aceasta este executat,
selectai opiunea Echo on, din meniul File + Preferences + Command Window sau folosii
funcia echo on tastat la linia de comand.

4.2.18. ntreruperea unui program n execuie. Putei ntrerupe un program n execuie
n orice moment, apsnd combinaia de taste Ctrl+C sau Ctrl+Break. Sub Windows, s-ar
putea s mai treac o anumit perioad de timp pn cnd funcia curent sau fiierul MEX
i ncheie activitatea. Sub UNIX, execuia programului se ncheie imediat.

4.2.19. Execuia programelor externe MATLAB-ului. Semnul de exclamare, "!", este
un shell escape i indic faptul c restul de comand tastat la linia de comenzi este o
comand ctre sistemul de operare. Folosii aceast facilitate pentru a lansa alte programe
fr a prsi mediul MATLAB. De pild, tastai comanda !dir care este similar cu lansarea
MEDII DE CALCUL N INGINERIE ELECTRIC


75
comenzii dir din MS-DOS. Dup ce programul sau comanda executat se ncheie, sistemul
de operare rentoarce controlul MATLAB-ului.

4.2.20. Deschiderea fiierelor M. Pentru a deschide un fiier M, selectai fiierul sau
funcia n Command Window, i apoi clic-dreapta i selectai Open Selection din meniul
contextual. Fiierul M se deschide n Editor/Debugger.

4.2.21. Examinarea erorilor. Dac un mesaj de eroare apare la lansarea unui fiier M,
clicai pe poriunea subliniat a mesajului de eroare, sau apsai Ctrl+Enter. Fiierul M ce
conine eroarea se deschide n Editor, cu zona ce include linia eronat afiat n prim plan.

4.3. Opiuni de configurare Command Window

Proprietile ferestrei Command Window pot fi modificate din meniul File +
Preferences + Command Window.

4.3.1. Text display. Meniul Text display conine opiuni de configurare a rezultatelor n
Command Window:

Numeric format Permite setarea formatului valorilor numerice afiate n Command
Window. Acesta afecteaz doar modul de afiare a numerelor, nu i modul de calcul sau
salvare specifice MATLAB-ului.
Numeric display Permite setarea interspaiilor n Command Window. Pentru a elimina
liniile vide, folosii compact. Pentru a afia liniile vide folosii loose.

4.3.2. Display. Meniul Display conine opiuni de activare sau dezactivare a ecoului i a
dimensiunii buffer-ului:

Echo on Selectai aceast opiune dac dorii vizualizarea n Command Window a
comenzilor din fiierele M aflate n execuie.
Wrap lines Textul introdus la linia de comand i rezultatele n Command Window se
pot extinde pe mai multe linii pentru a se ncadra n limea curent a ferestrei
Command Window. n acest caz scroll-bar-ul orizontal nu apare ntrucat nu mai este
necesar.
Limit matrix display width to eighty columns Selectai aceast opiune dac dorii ca
MATLAB s afieze doar 80 coloane ale rezultatului tip matrice, indiferent de limea
ferestrei Command Window. Deselectai opiunea dac limea fereastrei Command
Window o setai mai mare de 80 coloane i dorii ca rezultatul tip matrice s umple
limea ferestrei Command Window.
Command session scroll buffer size Setai dimensiunea buffer-ului care pstreaz o
list a comenzilor lansate anterior pentru a fi reapelate.

4.3.3. Command Window Font & Color Preferences. Acest meniu permite specificarea
caracteristicilor font-ului folosit n Command Window. Selectai Use desktop font dac
76 MEDII DE CALCUL N INGINERIE ELECTRIC
dorii ca fontul n Command Window s fie acelai cu cel specificat n General Font &
Colors preferences. Dac dorii ca fontul n Command Window s fie diferit, selectai Use
custom font i specificai caracteristicile fontului pentru Command Window. Alegei de
pild:
Font, SansSerif ;
Style, bold;
Size n points, 12 points.

Dup efectuarea seleciei, zona Sample area va afia noua nfiare a fontului. Tot n
cadrul aceleiai ferestre putei specifica culorile folosite n Command Window:

Text color Culoarea textului obinuit;
Background color Culoarea de fundal a ferestrei;
Syntax highlighting Culorile folosite pentru a sublinia sintaxa. Dac opiunea este
selectat, clicai pe Set Colors pentru a le specifica.

4.3.4. Command Window Keyboard & Indenting. Acest meniu permite modificarea
anumitor proprieti legate de tastatur i de aliniere.

Command line key bindings. Selectai Windows sau Emacs n funcie de tipul de
proprieti de accelerare i prescurtare pe care le dorii n Editor/Debugger. De pild,
dac selectai Windows, prescurtarea lui paste este Ctrl+V. Dac selectai Emacs,
aceeai prescurtare este Ctrl+Y.
Tab key. Tab size permite setarea numrului de spaii asociate unui tab n cursul
afirii rezultatelor. Numrul implicit este 4. Enable up to n tab completions selectai
aceast opiune dac dorii s folosii taburi de completare cnd tastai funcii n
Command Window. Apoi introducei o limit n csua de editare. De pild, dac
introducei 10, cnd folosii taburi de completare, MATLAB afieaz lista de posibile
completri dac exist 10 sau mai puine. Dac exist mai mult de 10, MATLAB
afieaz un mesaj care afirm c exist mai mult de 10 completri. Deselectai cutia dac
nu dorii s folosii taburile de completare. MATLAB mut cursorul la urmtorul tab
stop cnd apasai tasta Tab, n loc s completeze numele unei funcii.
Paranthesis matching. Acest meniu permite furnizarea de informaii n vederea corelrii
parantezelor i devine foarte util cnd n cadrul unei linii de comand apar paranteze
multiple a cror poziie determin ordinea operaiilor matematice.

4.4. Utilizarea funciei Help

Principalele ci de accesare a documentaiei MATLAB constau n folosirea ferestrei
Help, a funciilor Help i a altor faciliti specifice.

4.4.1. Tipuri de informaii Help. Fereastra i funciile Help permit accesul la diferite
tipuri de documentaii care se folosesc n funcie de necesitate.

MEDII DE CALCUL N INGINERIE ELECTRIC


77
Release Notes Opiune ce ofer o vedere de ansamblu a noilor produse i caracteristici
ale versiunii curente. Documentaia aferent conine printre altele i un upgrade al
informaiei mpreun cu problemele i limitrile specifice .
Getting Started with ... Opiune destinat n primul rnd nceptorilor, ce permite
accesul la o documentaie ce conine instruciunile de baz ale produsului respectiv.
Using ... collections Acest material conine instruciunile complete pentru folosirea
unui produs.
Reference Pages Orice funcie are o pagin de referin care conine sintaxa,
descrierea, exemple i alte informaii despre acea funcie. Aceasta include link-uri ctre
alte funcii nrudite i informaii adiionale. Exist Reference pages puse la dispoziie i
pentru blocuri. Folosii paginile de referin pentru a nva mai mult despre o funcie
sau pentru a vizualiza sintaxa acesteia.
M-File Help Permite obinerea n fereastra Command Window a unor informaii de
baz despre anumite fiiere de tip funcie. Informaiile pot conine o scurt descriere a
funciei i a sintaxei acesteia, respectiv un exemplu simplu de utilizare. Aceast
informaie este denumit M-file help deoarece textul help-ului este o serie de comentarii
scrise la nceputul fiierului M al funciei respective.
Product Page Permite accesare site-ului MathWorks Web, i conine cele mai noi
informaii despre produse.
Online Knowledge Base Opiune ce faciliteaz obinerea suportului tehnic online
oferit de MathWorks n vederea soluionrii ntrebrilor puse de utilizatori.

4.4.2. Folosirea ferestrei Help Navigator.

4.4.2.1. Folosirea opiunii Product Filter. Folosii Product filter n fereastra Help
Navigator pentru a vizualiza doar documentaia produselor specificate de dvs., Fig. 4.2.



Fig. 4.2. Filtrarea informaiilor obinute n MATLAB Help.

Pentru afiarea documentaiei tuturor produselor MathWorks instalate pe calculatorul
dvs., selectai All. Pentru a vizualiza doar o anumit documentaie specific produselor
MathWorks instalate pe calculatorul dvs., setai Product filter pe opiunea Selected. Pentru
a specifica setul de produse dorit, clicai pe butonul Select. Fereastra Help Product Filter se
deschide, Fig. 4.3. Selectai produsele a cror documentaie dorii s o accesai n fereastra
Help Navigator i apoi clicai pe OK. n aceste condiii, cu Product filter setat pe opiunea
Selected, Help Navigator va afia doar documentaia corespunztoare produselor specificate
de dvs.
Panelurile din stnga ferestrei Help permit accesarea selectiv a documentaiei, dup cum
urmeaz:
Contents va lista doar setul produselor specificate de dvs.
Index va afia informaii doar despre termenii index din setul de produse specificate de
dvs.
Search va efectua cutarea documentaiei doar n setul de produse specificate.
78 MEDII DE CALCUL N INGINERIE ELECTRIC
Demos permite vizualizarea unor demonstraii ale funciilor i facilitilor produselor
precizate de dvs.
Favorites permite memorarea unor pagini ce conin informaii utile ce pot fi ulterior
accesate rapid.



Fig. 4.3. Filtrul produselor MATLAB existente n sistem.

4.4.2.2. Folosirea listei Contents n fereastra Help. Pentru a lista titlurile i tabla de
materii corespondent documentaiei produselor MathWorks, clicai pe Contents tab n
panelul Help Navigator, Fig. 4.4.

n Contents, putei:

Clica pe semnul + situat la stnga unui articol pentru o listare expandat,
Clica pe semnul - situat la stnga unui articol sau executa un dublu-clic pe articol pentru
a comprima afiarea acelui articol,
Selecta un articol pentru a vizualiza prima pagin a acelui document n panelul display
din dreapta,
Executa dublu-clic pe un articol pentru o listare expandat i pentru afiarea primei
pagini a acelui document n panelul display,
Folosi tastele sageat pentru navigare prin lista cu articole.

4.4.2.3. Cutarea documentaiei folosind Index. Pentru a obine informaii despre o
anumit funcie din documentaia MathWorks corespunztoare produselor dvs., folosii
Index tab n panelul Help Navigator, Fig. 4.5. Pentru a utiliza aceast facilitate:

Clicai pe Index tab.
Tastai un cuvnt sau cuvinte n csua de editare Search index for. Pe msur ce tastai
literele unui cuvnt cheie, o list de entiti ce conin literele tastate vor fi afiate treptat
pe ecran.

MEDII DE CALCUL N INGINERIE ELECTRIC


79


Fig. 4.4. Utilizarea opiunii Contents.




Fig. 4.5. Utilizarea opiunii Index.
80 MEDII DE CALCUL N INGINERIE ELECTRIC
4.4.2.4. Cutarea documentaiei folosind Search. Pentru a cuta o anumit fraz n
documentaie, folosii Search tab n panelul Help Navigator, Fig. 4.6.



Fig. 4.6. Utilizarea opiunii Search.

Pentru utilizarea Search tab:
Clicai pe Search tab.
Selectai un Search type:
o Full Text caut prin toat documentaia. Acesta poate furniza un numr mare de
articole.
o Document Titles caut ntre titlurile documentaiei. Acesta este cel mai indicat
pentru a ncepe o cutare minuioas.
o Function Name caut printre paginile de referin ale funciilor. Acesta este
echivalent cu funcia doc.
o Etc.

Tastai cuvntul sau cuvintele pe care le cutai n csua de editare Search for, i clicai
pe Go (sau apsai Enter sau Return).

n funcie de selecia dvs. documentele coninnd termenul cutat sunt listate, grupate dup
tipul produsului.

4.4.2.5. Pagini favorite. Clicai pe Favorites tab n Help Navigator pentru a vizualiza o
list a documentelor selectate de dvs. ca fiind favorite. Din list putei:
Selecta un articol acel document apare n panelul display.
tergei un articol executai un clic-dreapta pe articolul din list i selectai Remove
din meniul contextual, sau apsai pe tasta Delete.
Redenumii un articol - executai un clic-dreapta pe articolul din list i selectai
Rename din meniul contextual. Tastai peste numele iniial numele nou.

4.4.2.6. Vizualizarea unor demonstraii. Clicai pe Demo tab n Help Navigator pentru
a vizualiza diferite exemple de utilizare cu caracter demonstrativ a unor funcii sau faciliti
MEDII DE CALCUL N INGINERIE ELECTRIC


81
MATLAB sau a produselor asociate. Lista disponibil de exemple demonstrative este
afiat n stnga ferestrei Help Navigator.

4.4.3. Folosirea funciilor Help. Exist mai multe funcii help care permit accesul la
informaii de tip help n mod diferit dect fereastra Help, Tabel 4.5.

Tabel 4.5.
Funcia Descriere
doc Afieaz pagina de referin pentru funcia specificat n fereastra Help,
furniznd informaii despre sintax, descriere, exemple i link-uri la funcii
similare
help Afieaz M-file help n Command Window pentru funcia specificat
helpbrowser,
helpdesk
Deschide fereastra Help
helpwin Afieaz n fereastra Help o list a tuturor funciilor ce permit acces la M-file
help
lookfor Afieaz n Command Window o list i o scurt descriere pentru toate
funciile a cror scurt descriere include cuvntul cheie specificat

4.4.4. Alte metode de asisten Help. n plus fa de fereastra Help i funciile Help,
anumite produse permit i alte metode de accesare a informaiei de tip help, de pild articole
specifice n meniul Help, butoane Help n cutiile de dialog sau n meniurile contextuale.
Multe produse includ exemple demonstrative care pun n eviden trsturile de baz
specifice. Deseori este util lansarea exemplelor demonstrative cnd folosii pentru prima
dat un produs. Pentru a vedea lista cu exemple demonstrative accesibile pentru un produs,
folosii Launch Pad, i selectai un exempu considerat necesar.

4.5. Funcii de gestionare a spaiului de lucru, a directoarelor i fiierelor

4.5.1. Spaiul de lucru MATLAB (MATLAB Workspace). Spaiul de lucru MATLAB
sau workspace const ntr-un set de variabile (vectori) definite n cursul unei sesiuni de
lucru MATLAB i stocate n memorie. Putei aduga variabile la workspace-ul curent
folosind funcii, lansnd fiiere M, i ncrcnd workspace-uri salvate anterior. De pild
tastai:

t = 0:pi/4:2*pi; (4.56)
y = sin(t);

n acest moment n workspace vor exista dou variabile, y i t, fiecare avnd 9 valori.

4.5.2. Vizualizarea Workspace-ului curent. Pentru vizualizarea Workspace-ului curent
putei folosi fereastra Workspace din MATLAB Desktop (vezi paragraful 1.4.2.6) sau
funciile alternative:

who pentru a lista variabilele din workspace-ul curent;
whos pentru a lista variabilele i informaii despre dimensiunile i clasa lor;
82 MEDII DE CALCUL N INGINERIE ELECTRIC
exist pentru a vedea dac variabila specificat se afl n workspace.

De pild dac tastai comenzile:

t = 0:pi/4:2*pi; (4.57)
y = sin(t);
who

MATLAB va rspunde cu:

Your variables are: (4.58)
t y

Dac tastai:

whos (4.59)

MATLAB va rspunde cu:

Name Size Bytes Class (4.60)
t 1x9 72 double array
y 1x9 72 double array
Grand total is 18 elements using 144 bytes

4.5.3. Salvarea workspace-ului curent. Coninutul Workspace-ului nu este memorat de
la o sesiune MATLAB la alta. Cnd ncheiai sesiunea MATLAB, coninutul Workspace-
ului se pierde. Putei salva orice variabil sau toate variabilele din Workspace-ul curent,
ntr-un fiier MAT, care este un fiier MATLAB de tip binar. Ulterior putei ncrca fiierul
MAT fie n cursul sesiunii MATLAB curente sau ntr-o alt sesiune, n scopul reutilizrii
variabilelor din Workspace salvate.

4.5.3.1. Salvarea tuturor variabilelor. Pentru a salva toate variabilele din Workspace cu
ajutorul ferestrei Workspace:
Din meniul File sau din meniul contextual selectai Save Workspace As, sau clicai pe
butonul save din Workspace toolbar. Cutia de dialog Save se deschide.
Specificai locaia i numele fiierului, de pild worksp; MATLAB adaug automat
fiierului extensia .mat.
Clicai pe Save.
Variabilele workspace-ului sunt salvate sub numele fiierului MAT pe care l-ai specificat.

4.5.3.2. Salvarea variabilelor selectate. Pentru a salva doar anumite variabile din
Workspace procedai de maniera urmtoare:
Selectai variabila n fereastra Workspace. Pentru a selecta mai multe variabile, folosii
Shift-clic sau Ctrl-clic.
Clic-dreapta i din meniul contextual, selectai Save Selection As. Cutia de dialog Save
to MAT-File se deschide.
MEDII DE CALCUL N INGINERIE ELECTRIC


83
Specificai locaia i File name. MATLAB furnizeaz automat extensia .mat.
Clicai pe Save.

Variabilele Workspace-ului pe care le-ai selectat sunt salvate n fiierul MAT cu numele
pe care l-ai specificat. Workspace-ul curent poate fi salvat i cu ajutorul comenzii save
lansat la linia de comand. Tastai de pild save worksp. MATLAB va nregistra
Workspace-ul curent n fiierul worksp.mat, extensia .mat fiind adugat implicit.

4.5.4. ncrcarea coninutului unui Workspace salvat i importul datelor. Pentru a
ncrca variabilele salvate dintr-un Workspace anterior procedai n felul urmtor:
Clicai pe load data button din toolbar-ul ferestrei Workspace, sau executai un
clic-dreapta n fereastra Workspace i selectai Import Data din meniul contextual.
Cutia de dialog Open se deschide i selectai fiierul MAT pe care dorii s-l ncrcai i
clicai pe Open. Variabilele i valorile acestora, salvate n fiierul MAT, sunt ncrcate
n Workspace-ul curent. Dac vreuna din variabilele care sunt ncrcate au aceleai
nume cu variabilele din Workspace-ul curent, valorile de fiierul MAT va nlocui
valorile din Workspace-ul curent. Orice variabile din fiierul MAT care nu sunt n
Workspace sunt adugate la cele existente deja n Workspace-ul curent.
O alt variant const n utilizarea funciei load pentru a deschide un Workspace salvat.
Tastai de pild:
o load('worksp') pentru a ncrca vechiul Workspace mpreun cu variabilele
corespunztoare
o who pentru a vizualiza variabilele anterioare.

Pentru a ncrca sau importa date n MATLAB exist i alte metode, respectiv funcii
cum ar fi:
Selectai din fereastra Workspace opiunea Edit + Paste Special,
Folosii Ctrl+V pentru a importa date n MATLAB folosind Import Wizard.

4.5.5. Schimbarea i copierea numelor variabilelor. Pentru a redenumi o variabil n
Workspace, executai un clic-dreapta pe variabil n fereastra Workspace i selectai
Rename din meniul contextual. Tastai noul nume de variabil peste numele existent i
apsai tasta Enter sau Return. Pentru a copia numele variabilelor n clipboard, selectai
variabilele din Workspace i apoi Edit + Copy. Putei copia numele acestora cu paste, de
pild, n Command Window. Variabilele multiple sunt separate de virgul.

4.5.6. tergerea variabilelor din Workspace. Putei terge variabile din Workspace
procednd n felul urmtor:
Din fereastra Workspace, selectai variabila, sau Shift+clic sau Ctrl+clic pentru a selecta
mai multe variabile. Pentru a selecta toate variabilele, alegei Select All din meniul Edit
sau meniurile contextuale. Apsai tasta Delete sau clicai pe delete button din toolbar.
O cutie de dialog de confirmare poate apare. Dac apare, clicai pe Yes pentru a terge
variabilele. Cutia de confirmare apare dac specificai acest lucru n meniul File +
Preference.
84 MEDII DE CALCUL N INGINERIE ELECTRIC
Pentru a terge toate variabilele odat, selectai Clear Workspace din meniul Edit n
fereastra Workspace.
O alt variant de tergere a variabilelor const n utilizarea funciei clear. Tastai de
pild:
o clear y pentru a terge variabila y,
o who pentru a verifica faptul c variabila y nu mai exist n Workspace-ul curent,
o clear pentru a terge toate variabilele odat,
o who pentru a verifica faptul c nu mai exist nici o variabil n Workspace-ul
curent.

4.5.7. Crearea graficelor din fereastra Workspace. Pentru a reprezenta grafic o
variabil din fereastra Workspace procedai dup cum urmeaz:
Clic-dreapta pe variabila pe care dorii s o reprezentai,
Din meniul contextual selectai Graph i apoi alegei tipul de grafic pe care dorii s-l
creai. Graficul va apare ntr-o fereastra figure. De pild tastai:

t = 0:pi/20:2*pi; pentru a crea variabila t (4.61)
y = sin(t); pentru a crea variabila y (4.62)

Clic-dreapta pe variabila y,
Din meniul contextual selectai Graph Selection i apoi alegei tipul de grafic plot.
Graficul va apare ntr-o fereastr figure ca mai jos, Fig. 4.7.



Fig. 4.7. Reprezentarea grafic a unei variabile.

4.5.8. Setarea cii de cutare (Set Path). MATLAB folosete cile de cutare pentru a
gsi fiierele M i alte fiiere MATLAB asociate, care sunt organizate n directoare n cadrul
sistemului de fiiere Windows. Aceste fiiere i directoare sunt furnizate cu MATLAB
respectiv cu toolbox-urile asociate. Orice fiier pe care dorii s-l lansai n MATLAB este
localizat ntr-un director aflat ntr-o cale de cutare sau se afl n directorul curent. Fiierele
MEDII DE CALCUL N INGINERIE ELECTRIC


85
furnizate odat cu MATLAB, respectiv cu toolbox-urile MathWorks sunt incluse implicit n
calea de cutare sau n MATLAB path. Pentru a crea fiiere MATLAB, adugai n mod
explicit directoarele coninnd fiierele respective la calea de cutare MATLAB.
Subdirectoarele trebuiesc deasemenea adugate la calea de cutare; ele nu sunt adugate
implicit n calea de cutare chiar dac directoarele lor tat sunt. Calea de cutare este
salvat n fiierul pathdef.m. Ordinea directoarelor n calea de cutare este important. De
pild dac tastai test la promptul MATLAB din Command Window, MATLAB efectueaz
urmtoarele aciuni:
Caut test ca pe un nume de variabil,
Verific dac test este o funcie MATLAB inclus,
Caut n directorul curent un fiier cu numele test.m,
Caut n directoarele din MATLAB path, pentru a gsi fiierul test.m.

Ordinea directoarelor din calea de cutare este important dac mai exist funcii cu
aceleai nume. Cnd MATLAB caut acea funcie, doar prima funcie din calea de cutare
este gsit. Alte funcii cu acelai nume nu pot fi executate.

4.5.9. Vizualizarea i setarea cii de cutare. Pentru a vizualiza i modifica MATLAB
path i pentru a vedea fiierele n directoarele care sunt n calea de cutare folosii cutia de
dialog Set Path. Pentru a o accesa selectai Set Path din meniul File, sau tastai pathtool la
linia de comand. Cutia de dialog Set Path se va deschide ca mai jos, Fig. 4.8.

Fig. 4.8. Fereastra Set Path.


Cnd folosii unul din aceste butoane schimbrile sunt executate asupra
ci curente de cutare. Totui calea de cutare nu este automat salvat
pentru sesiuni viitoare
Directoare adugate la calea
de cutare curent MATLAB
Butoane ce
permit
modificarea cii
de cutare
Buton ce permite
salvarea
modificrilor
pentru sesiuni
MATLAB
ulterioare
86 MEDII DE CALCUL N INGINERIE ELECTRIC
Folosind facilitile cutiei de dialog Set Path putei efectua urmtoarele aciuni:
Vizualiza calea de cutare,
Aduga directoare la calea de cutare,
Muta directoare n calea de cutare,
terge directoare din calea de cutare,
Reface calea de cutare iniial,
Reveni la calea de cutare anterioar,
Salva setrile cii de cutare,
Modifica pathdef.m.

4.5.10. Operaii cu fiiere. Operaiile MATLAB cu fiiere folosesc directorul curent ca
punct de referin. Orice fiier pe care vrei s-l lansai trebuie mutat n directorul curent sau
ntr-un director pe care s-l includei n calea de cutare. Deasemenea, cnd deschidei un
fiier n MATLAB, punctul de plecare pentru cutia de dialog Open, de deschidere a
fiierelor, este directorul curent. Operaiunile cu fiiere pot fi executate folosind cmpul
Current directory, respectiv fereastra Current Directory (vezi paragraful 1.4.2.4).
O metod rapid de a vizualiza sau modifica directorul curent este prin utilizarea
cmpului Current Directory n Desktop toolbar. Pentru a modifica directorul curent din
acest cmp, putei proceda n mai multe feluri, i anume:
Tastai calea ctre noul director curent,
Clicai pe sgeata n jos pentru a vizualiza lista directoarelor de lucru anterioare i
selectai un articol din list pentru a face ca acel director s devin directorul curent
MATLAB. Directoarele sunt listate n ordine, cu cele mai recent folosite situate n partea
superioar a listei. Putei terge lista i seta numrul de directoare salvate n list.
Clicai pe browse button (...) pentru a seta un nou director curent.

Alte funcii MATLAB de lucru cu fiiere i cu sistemul de operare sunt prezentate n
Tabelul 4.6.

Tabel 4.6
Funcia Destinaia
cd Schimb directorul curent
pwd Afieaz directorul curent
dir, ls Listeaz fiierele i subdirectoarele din directorul curent
delete terge fiiere din directorul curent sau obiecte grafice
! Execut comezi ale sistemului de operare

4.6. Funcii de manipulare a datei i orei

MATLAB conine o multitudine de funcii de manipulare a datei i orei. Iat cteva
dintre aceste funcii ce pot avea utilitate practic n multe aplicaii numerice, Tabel 4.7.

Tabel 4.7
Funcie Descriere
clock Indic data curent i ora ca vector de tip dat
date Indic data curent ca ir de caractere de tip dat
MEDII DE CALCUL N INGINERIE ELECTRIC


87
calendar Indic afieaz calendarul lunii curente
cputime Afieaza CPU time n secunde de cnd a fost lansat MATLAB
etime Afieaz timpul scurs n secunde
tic, toc Afieaz timpul scurs ntre cele dou comenzi

4.7. Elemente de interfaare MATLAB

4.7.1. Importul i exportul datelor. MATLAB pune la dispoziie mai multe ci de
ncrcare a datelor din fiiere de pe disc sau din clipboard n Workspace, un proces numit
importul datelor, i de salvare a variabilelor din Workspace n fiiere pe disc, proces numit
exportul datelor. Modul de lucru depinde de doi factori:
Operaia avut n vedere, de import sau export de date,
Formatul datelor: text, binar, etc.

4.7.1.1. Importul datelor de tip text. n format text, datele apar n coduri tip American
Standard Code for Information Interchange (ASCII), ce reprezint caractere alfanumerice.
Datele text ASCII pot fi vizualizate ntr-un editor de text. Importul datelor text poate fi
efectuat prin mai multe metode, cum ar fi: folosind Import Wizard, Import Functions,
importul datelor numerice de tip text, importul fiierelor de date de tip ASCII delimitate,
importul datelor numerice cu text headers, importul datelor alfanumerice.

A) Importul datelor text folosind Import Wizard. Pentru a importa date de tip text
folosind Import Wizard, se urmeaz paii de mai jos:
1) Se lanseaz Import Wizard, selectnd opiunea Import Data din meniul File din
MATLAB Desktop. MATLAB afieaza o cutie de dialog de selecie de fiiere. Acelai
efect l obinei prin lansarea funciei uiimport la linia de comand.
Pentru a folosi Import Wizard la importul datelor din clipboard, selectai opiunea Paste
Special din meniul Edit n MATLAB Desktop. Putei deasemenea executa un clic
dreapta n MATLAB Command Window i alege Paste Special din meniul contextual.
Se trece apoi la pasul 3 pentru a continua importul datelor din clipboard.
2) Specificai n cutia de dialog fiierul pe care dorii s-l importai i clicai pe Open.
Import Wizard lanseaz fiierul i ncearc s proceseze coninutul.
3) Specificai caracterul folosit ca separator ntre date. Acest caracter este denumit
delimitator sau separator de coloane. Import Wizard poate determina delimitatorul
folosit n multe cazuri. Dup ce Import Wizard a procesat corect datele, clicai pe Next.
4) Selectai variabilele pe care dorii s le importai. Implicit, Import Wizard pune toate
datele numerice ntr-o singur variabil i toate datele text n alte variabile, aceast
structur corespunznd primului buton din Fig. 4.9.



Fig. 4.9. Opiuni pentru importul datelor.
88 MEDII DE CALCUL N INGINERIE ELECTRIC
Uneori este util s creem variabile separate din fiecare rnd (sau coloan) de date i s
folosim header-ul de rnd (sau coloan) ca nume de variabil. Pentru aceasta trebuie
selectat butonul al doilea din Fig. 4.10.
5) Clicai pe Finish pentru a importa datele n Workspace.

De pild, n exemplul de mai jos, Fig. 4.10, Import Wizard a deschis fiierul, note.txt ce
conine notele a 4 studeni, dup cum urmeaz:

Andrei 8 9 5 7 (4.63)
Ana 9 9 6 8
Marian 10 9 9 9
Cristian 7 8 7 6



Fig. 4.10. Vizualizarea datelor importate n fereastra Import Wizard.

Utiliznd comanda whos se pot afia caraceristicile variabilelor create n urma importului
datelor din fiierul note.txt. n data se regsesc notele studenilor, n rowheaders i n
textdata se regsesc numele studenilor.

whos (4.64)
Name Size Bytes Class
data 4x4 128 double array
rowheaders 4x1 286 cell array
textdata 4x1 286 cell array
Grand total is 70 elements using 700 bytes

Numr de linii
de antet
ignorate
Delimitator
gsit n fiier
Previzualizarea
datelor din
fiier
Previzualizarea
variabilelor
create de Import
Wizard fiier
MEDII DE CALCUL N INGINERIE ELECTRIC


89
B) Importul datelor de tip text folosind Import Functions. Pentru a importa date de tip
text de la linia de comand sau din fiiere M, putei utliza funciile MATLAB de import.
Alegerea depinde de formatul datelor.
Datele de tip text trebuiesc aranjate ntr-o structur uniform de rnduri i coloane,
folosind un delimitator sau separator de coloane, pentru a separa datele unele de altele.
Delimitatorul poate fi spaiul, virgula, punct i virgula, tab, sau alte caractere. Datele
individuale pot fi de tip alfabetic sau numeric sau un mixaj al celor dou. Fiierul text poate
deasemenea conine una sau mai multe linii de text, numite header lines, sau poate folosi
text headers pentru identificarea fiecrei coloane sau linii. Exemplul de mai jos, Fig. 4.11,
ilustreaz un fiier text avnd ca delimitator un tab i care conine text header i header line
i column headers.


Fig. 4.11. Configurarea datelor importate.

n Tabelele 4.8 i 4.9 sunt prezentate tipuri de formatare a datelor, respectiv funcii
utilizate la importul datelor pentru diferite tipuri de formate. Detalii despre fiecare funcie se
pot obine tastnd la linia de comand:

help nume_funcie (4.65)

Tabel 4.8
Exemplu de formatare a datelor Extensia fiierului
1 2 3 4 5
6 7 8 9 10
.txt
.dat sau altele
1; 2; 3; 4; 5
6; 7; 8; 9; 10 sau
1, 2, 3, 4, 5
6, 7, 8, 9, 10
.txt
.dat
.csv
sau altele
Ion Sectia 1 12.34 45 Da
Marian Sectia 2 45.67 67 Nu
.txt
.dat sau altele
Nota1 Nota2 Nota3
91.5 89.2 77.3
88.0 67.8 91.0
67.3 78.1 92.5
.txt
.dat sau altele


90 MEDII DE CALCUL N INGINERIE ELECTRIC
Tabel 4.9
Funcie Tipul de date Delimitator
csvread Format numeric Doar virgul
dlmread Format numeric Orice caracter
fscanf Format alfabetic i numeric ntr-o singur variabil Orice caracter
load Format numeric Doar spaii
textread Format alfabetic i numeric ntr-o singur variabil Orice caracter

4.7.1.2. Exportul datelor de tip ASCII delimitate. Pentru a exporta un vector ntr-un
fiier de date de tip ASCII, putei folosi comanda save, specificnd tipul -ASCII sau putei
folosi funcia dlmwrite. Comanda save este mai uor de folosit, ns funcia dlmwrite este
mai flexibil, permindu-v s specificai orice caracter ca delimitator i permind
exportul unor poriuni ale unui vector specificnd gama de valori.
Pentru a exporta vectorul A,

A = [ 1 2 3 4 ; 5 6 7 8 ]; (4.66)

folosii comanda save dup cum urmeaz:

save fiierul_meu.out A ASCII (4.67)

Dac vizualizai fiierul creat ntr-un editor de text, acesta arat n felul urmtor:

1.0000000e+000 2.0000000e+000 3.0000000e+000 4.0000000e+000 (4.68)
5.0000000e+000 6.0000000e+000 7.0000000e+000 8.0000000e+000

Comanda save folosete implicit spaii ca delimitatoare, dar putei folosi n locul acestora
tab-uri specificnd tipul -tabs. Dac folosii save pentru a scrie un vector de caractere
ntr-un fiier ASCII, MATLAB scrie echivalentul ASCII al caracterelor n fiier. Dac
scriei stringul 'hello' intr-un fiier, save scrie valorile 104 101 108 108 111.
Pentru a exporta un vector n format ASCII specificnd delimitatorul, folosii funcia
dlmwrite. De pild, pentru a exporta matricea A,

A = [ 1 2 3 4 ; 5 6 7 8 ]; (4.69)

ca un fiier de date ASCII care folosete punct i virgul ca delimitator, folosii comanda de
mai jos:

dlmwrite('my_data.out', A, ';') (4.70)

Dac se vizualizeaz fiierul creat ntr-un editor de text, acesta va conine urmtoarele
informaii:

1; 2; 3; 4 (4.71)
5; 6; 7; 8

MEDII DE CALCUL N INGINERIE ELECTRIC


91
Funcia dlmwrite nu insereaz delimitatoare la sfritul rndurilor. Dac nu se specific
un delimitator, dlmwrite folosete implicit o virgul ca delimitator. Putei specifica un spaiu
(' ') ca delimitator sau, dac specificai spaiu vid (''), nici un delimitator.
Exportul fiierelor de date poate fi efectuat deasemenea folosind funcia diary (vezi
paragraful 4.2). Pentru a exporta vectori de dimensiuni reduse putei folosi comanda diary.
Aceast funcie creaz o copie a sesiunii MATLAB pe un fiier disc (n afara graficelor).

4.7.2. Operaiuni speciale cu fiiere i date. MATLAB prevede funcii specifice de
operaiuni cu fiiere cum ar fi:
Cutare i salvare de informaii de pe Internet, cu ajutorul funciilor urlread i urlwrite,
Arhivare i dezarhivare a fiierelor i directoarelor folosind funciile zip i unzip,
Trimitere automat de mesaje e-mail folosind funcia sendmail.

4.7.3. Elemente de interfaare MATLAB Microsoft Word. MATLAB permite
interfaarea cu pachetul de programe Microsoft Word. Astfel prin intermediul facilitilor
specifice utilizatorul poate redacta un referat sau un raport tehnic folosind editorul
Microsoft Word i din interiorul acestui program poate apela MATLAB n vederea
calculului numeric, a reprezentrii grafice etc. beneficiind n acelai timp de avantajele
ambelor pachete de programe.

4.7.3.1. Comanda notebook. Comanda notebook permite accesul la facilitile
MATLAB de calcul numeric i reprezentare grafic din interiorul programului de editare de
text Microsoft Word. Folosind comanda notebook putei crea documente denumite
M-book care conin n acelai timp informaii de tip text, comenzi i rezultate de calcul
MATLAB. Documentele de tip M-book pot fi deosebit de utile n vederea elaborrii de
referate, rapoarte tehnice, proiecte etc. permind integrarea informaiilor de tip text i a
rezultatelor de calcul numeric, respectiv structurarea acestora ntr-un format unitar.

4.7.3.2. Crearea unui document de tip M-book. Pentru a crea un document de tip
M-book trebuie lansat comanda notebook la linia de comand MATLAB n fereastra
Command Window:

notebook (4.72)

Dac utilizai aceast comand pentru prima dat atunci va trebui mai nti s o configurai
folosind secvena de comenzi n Command Window,

notebook setup (4.73)

Ca rspuns la aceast comand MATLAB v invit s specificai ce versiune de Microsoft
Word folosii.

Welcome to the utility for setting up the MATLAB Notebook for (4.74)
interfacing MATLAB to Microsoft Word

Choose your version of Microsoft Word:
[1] Microsoft Word 97
92 MEDII DE CALCUL N INGINERIE ELECTRIC
[2] Microsoft Word 2000
[3] Microsoft Word 2002 (XP)
[4] Exit, making no changes

Microsoft Word Version:

Tastai numrul ce corespunde versiunii dvs. De pild tastai 3 dac folosii Microsoft Word
XP. Dac MATLAB nu poate gsi toate fiierele necesare v va solicita s specificai locaia
fiierelor, inclusiv fiierul executabil Microsoft Word (winword.exe) i fiierul de tip
template (normal.dot). Finalizarea configurrii este anunat prin intemediul urmtorului
mesaj:

Notebook setup is complete. (4.75)

Comanda notebook va lansa n execuie programul Microsoft Word i va crea un nou
document de tip M-book denumit Document1. Dac n cursul lansrii programului
Microsoft Word apare o fereastr de dialog care solicit activarea sau dezactivarea
comenzilor de tip macro va trebui s alegei activarea acestora. Prin intermediul comenzii
notebook se definesc macro-urile Microsoft Word ce permit programului MATLAB s
interpreteze diferitele tipuri de celule ce conin comenzi i rezultate MATLAB.
Comanda notebook adaug meniul Notebook la bara de meniuri a programului Word ce
permite accesare diferitelor faciliti specifice, Fig. 4.12.



Fig. 4.12. Meniul Notebook adugat la bara de meniuri a programului Word.

MEDII DE CALCUL N INGINERIE ELECTRIC


93
Pentru a crea un alt document de tip M-book trebuie selectat comanda New M-book din
meniul File al programului Word, Fig. 4.13.



Fig. 4.13. Crearea unui nou document de tip M-book folosind comanda New M-book.

4.7.3.3. Deschiderea unui document de tip M-book existent. Pentru a deschide un
document existent de tip M-book putei lansa n Command Window urmtoarea comand
MATLAB:

notebook nume_fisier (4.76)

unde nume_fisier reprezint numele fiierului de tip M-book ce urmeaz a fi deschis.
O alt metod de deschidere a fiierelor de tip M-book existente presupune executarea unui
dublu-clic pe fiierul respectiv ntr-un program de gestiune a fiierelor cum ar fi Windows
Explorer de pild. n acest caz Microsoft Word deschide fiierul M-book apelat i n plus
lanseaz n execuie programul MATLAB dac acest program nu este deja n rulare.
Comanda notebook adaug meniul Notebook la bara de meniuri a programului Word
respectiv opiunea New M-book n meniul File al aceluiai program.

4.7.3.4. Conversia unui document Word ntr-un document M-book. Pentru a converti
un document Word ntr-un document M-book se urmeaz paii urmtori:

1. Se creaz un nou document de tip M-book (4.77)
2. Din meniul Insert selectai meniul File
3. Selectai fiierul ce trebuie convertit
4. Clicai pe OK.
94 MEDII DE CALCUL N INGINERIE ELECTRIC

4.7.3.5. Introducerea i execuia comenzilor MATLAB ntr-un document M-book.
Introducerea comenzilor i a grupurilor de comenzi MATLAB ntr-un document M-book se
efectueaz n mod similar cu introducerea informaiilor de tip text obinuite, respectnd ns
sintaxa MATLAB specific.
Putei introduce de pild ntr-un fiier M-book urmtoarele date ce reprezint o
combinaie de informaii de tip text i de comenzi MATLAB:

S calculm determinantul urmtor: (4.78)
D = det( [1 2 3; 3 1 2; 3 2 1])

Pentru a executa comanda MATLAB det([1 2 3; 3 1 2; 3 2 1]) n documentul Word de tip
M-book trebuie s definii comanda ca o celul de intrare i apoi s evaluai aceast celul.
Ca urmare MATLAB va afia rezultatul comenzii ntr-o celul de ieire n acelai
document.

Pentru a defini o comand MATLAB ca celul de intrare ntr-un document Word trebuie
urmai paii de mai jos:

1. Tastai comanda n documentul M-book. De pild tastai:

D = det([1 2 3; 3 1 2; 3 2 1]) (4.79)

2. Poziionai cursorul n interiorul comenzii i selectai din bara de meniu Notebook ->
Define Input Cell sau apsai Alt+D. Dac aceast comand este nglobat ntr-o linie de
text putei folosii mouse-ul pentru a selecta comanda. Astfel comanda MATLAB va fi
definit ca o celul de intrare fiind nglobat ntre paranteze ptrate de culoare gri, fontul
schimbndu-se n bold Courier New de culoare verde:

[D = det([1 2 3; 3 1 2; 3 2 1])] (4.80)

3. Specificai celula de intrare ce urmeaz a fi evaluat selectnd celula cu mouse-ul sau
poziionnd cursorul n interiorul ei, apoi selectai din bara de meniu Notebook -> Evaluate
Cell sau apsai combinaia de taste Ctrl+Enter. MATLAB va evalua celula de intrare i va
afia rezultatul ntr-o celul de ieire ce va fi plasat imediat dup celula de intrare. Dac
exist deja o celul de ieire asociat, coninutul existent al acesteia va fi nlocuit n mod
corespunztor. Iat de exemplu celula de intrare (4.80) i cea de ieire asociat dup
evaluarea MATLAB:

[D = det([1 2 3; 3 1 2; 3 2 1])] (4.81)

[D = (4.82)
12 ]

Textul din celula de ieire este marcat cu font albastru i nglobat ntre paranteze ptrate
bold, de culoare gri. Eventualele mesaje de eroare sunt marcate cu rou.


MEDII DE CALCUL N INGINERIE ELECTRIC


95
4.7.3.6. Evaluarea unui grup compact de celule de intrare ntr-un document M-book.
Pentru a regrupa mai multe comenzi MATLAB definite iniial ca celule de intrare separate,
se selecteaz mai nti celulele respective i apoi se apeleaz opiunea din bara de meniu
Notebook -> Grup Cells sau se apas Alt+G.
Dac comenzile MATLAB nu sunt definite iniial ca celule de intrare separate,
constituirea acestora ntr-un grup de celule de intrare presupune selectarea grupului de
comenzi cu mouse-ul i alegerea din bara de meniu a opiunii Notebook -> Define Input
Cell sau apsarea combinaiei de taste Alt+D.
Trebuie menionat faptul c un grup de celule nu trebuie s conin text sau celule de
ieire. Dac grupul conine celule de ieire acestea vor fi terse iar dac conine text acesta
va fi mutat dup grupul de celule. Dac textul selectat odat cu grupul de celule se afl
poziionat naintea primei celule textul nu va suferi nicio modificare.
Pentru a evalua simultan un grup de celule se poziioneaz cursorul n interiorul grupului
de celule i apoi se selecteaz Notebook -> Evaluate Cell sau se apas combinaia de taste
Ctrl+Enter. MATLAB va evalua grupul de celule de intrare i va afia rezultatul ntr-o
celul de ieire ce va fi plasat imediat dup grupul de celule de intrare. Dac celula de
ieire asociat deja exist aceasta va fi reactualizat n mod corespunztor.
S considerm de pild setul de informaii de mai jos ce includ date de tip text, un grup
de celule de intrare ce permit definirea matricei A = [1 2 9; 2 3 4; 3 2 2], respectiv un grup
de celule de ieire pentru calculul inversei i transpusei lui A:

S calculm inversa i transpusa matricei A (4.83)
[A = [1 2 9; 2 3 4; 3 2 2];
A1 = inv(A)
A2 = A']
[A1 =
0.0645 -0.4516 0.6129
-0.2581 0.8065 -0.4516
0.1613 -0.1290 0.0323
A2 =
1 2 3
2 3 2
9 4 2]

4.7.3.7. Evaluarea unui grup de celule de intrare dispersate ntr-un document
M-book. Pentru a evalua un grup de celule de intrare dispersate ntr-un document de tip
M-book trebuie selectat poriunea de document ce conine celulele ce trebuiesc evaluate, ce
pot fi eventual separate de informaii de tip text. Ulterior se selecteaz din bara de meniu
opiunea Notebook -> Evaluate Cell sau se apas combinaia de taste Ctrl+Enter. n urma
acestei operaiuni MATLAB va evalua fiecare celul de intrare din selecie insernd celulele
de ieire asociate sau reactualiznd celulele de ieire existente.

4.7.3.8. Definirea i evaluarea unei zone de calcul dintr-un document M-book. Un
document de tip M-book poate fi partiionat n mai multe seciuni denumite zone de calcul
(calc zone) ce pot conine informaii combinate de tip text, celule de intrare i celule de
ieire. MATLAB insereaz separatoare Microsoft Word nainte i dup fiecare seciune
pentru a defini zonele de calcul. Separatoarele includ indicatoare de tip paranteze drepte,
96 MEDII DE CALCUL N INGINERIE ELECTRIC
bold, de culoare gri, pentru a le distinge de separatoarele Word standard. Variabilele folosite
ntr-o zon de calcul sunt accesibile tuturor zonelor.
Pentre a crea o zon de calcul se selecteaz seciunea respectiv a documentului care
poate include informaii de tip text, celule de intrare i celule de ieire, apoi se activeaz din
bara de meniuri opiunea Notebook -> Define Calc Zone. n faza de definire a unei zone de
calcul trebuiesc selectate att celulele de intrare ct i cele de ieire asociate, n vederea
includerii n zona de calcul corespunztoare
Pentru a evalua o zon de calcul se poziioneaz cursorul n interiorul zonei respective i
apoi se selcteaz din bara de meniuri opiunea Notebook -> Evaluate Calc Zone sau se
apas combinaia de taste Alt+Enter.
MATLAB poziioneaz implicit celula de ieire corespunztoare zonei de calcul imediat
dup zona respectiv n cazul primei evaluri a zonei. Dac zona de calcul are deja o celul
de ieire existent, MATLAB va afia rezultatele n acea celul, oriunde ar fi poziionat
aceasta n documentul M-book.

4.7.3.9. Definirea i evaluarea unui ntreg document M-book. Un document de tip
M-book poate fi evaluat n ntregime apelnd din bara de meniuri opiunea Notebook ->
Evaluate M-book sau se apsnd combinaia de taste Alt+Enter. MATLAB ncepe
evaluarea progresiv a celulelor de intrare ale documentului M-book pornind de sus n jos,
indiferent de poziia cursorului. Pe msur ce evaluarea avanseaz sunt inserate celule de
ieire acolo unde este cazul sau sunt actualizate cele existente.

4.7.3.10. tergerea celulelor de ieire dintr-un document M-book. Un document de tip
M-book poate conine unele celule de ieire ce trebuiesc la un moment dat terse. Pentru a
terge o celul de ieire se selecteaz celula folosind mouse-ul sau poziionnd cursorul n
interiorul acesteia i apoi se face apel la opiunea Notebook -> Purge Selected Output Cells
sau se apas combinaia de taste Alt+P.

4.7.3.11. Conversia celulelor de ieire n format text. Pentru a converti o celul de
ieire n format text se selecteaz celula respectiv i apoi se face apel la opiunea Notebook
-> Undefined Cells sau se apas combinaia de taste Alt+U.

n cazul n care lucrai simultan cu mai multe fiiere M-book ntr-o singur sesiune Word
trebuie inut cont de faptul c fiecare fiier M-book folosete aceeai copie MATLAB, toate
fiierele partajnd acelai workspace comun. Dac utilizai aceleai nume de variabile n
mai multe fiiere M-book, datele utilizate ntr-un fiier pot fi afectate de operaiunile
efectuate n alt fiier.
Putei proteja integritatea workspace-ului curent utiliznd comanda clear n prima celul
autoinit din fiier. Celulele de intrare de tip autoinit sunt evaluate automat la fiecare
deschidere a unui fiier M-book i se definesc tastnd comanda dorit n fiierul Word,
urmat de apelul opiunii Notebook -> Define AutoInit Cell. Dac respectiva comand a
fost definit n prealabil ca celul de intrare aceasta poate fi convertit n celul autoinit prin
selectarea celulei sau prin poziionarea cursorului n interiorul acesteia, urmat de apelul
opiunii Notebook -> Define AutoInit Cell.
Pentru a v asigura asupra consistenei datelor dintr-un fiier M-book se recomand
folosirea periodic a opiunii din bara de meniu Notebook -> Evaluate M-book.
MEDII DE CALCUL N INGINERIE ELECTRIC


97
n afara facilitilor MATLAB de intefaare cu programul Microsoft Word descrise mai
sus exist i altele ce pot fi avute n vedere i care permit printre altele folosirea calculului n
bucle repetitive etc.

4.7.4. Elemente de interfaare MATLAB Microsoft Excel. MATLAB conine
faciliti ce permit interfaarea cu pachetul de programe Microsoft Excel. n acest sens,
deosebit de util poate fi funcia MATLAB xlsread care permite citirea fiierelor de date n
format Microsoft Excel (*.xls). Comanda xlsread se apeleaz folosind una din sintaxele
urmtoare:

A = xlsread('nume_fisier') (4.84)
[A, B ] = xlsread('nume_fisier') (4.85)
[A, B] = xlsread('nume_fisier','nume_foaie') (4.86)

Folosind sintaxa A = xlsread('nume_fisier') se citete fiierul cu numele nume_fisier.xls,
datele numerice din prima foaie de calcul Microsoft Excel fiind stocate n variabila A de tip
matrice. Comanda xlsread ignor antetele existente la nceputul coloanelor sau rndurilor.
n cazul n care exist celule goale sau care conin date de tip text i acestea nu sunt celule
de tip antet, comanda xlsread afecteaz valoarea NaN locaiei corespunztoare din variabila
A de tip matrice.
Utilizarea sintaxei [A, B]= xlsread('nume_fisier') permite citirea fiierului cu numele
nume_fisier.xls, datele numerice din prima foaie de calcul Microsoft Excel fiind stocate n
variabila A de tip matrice, iar datele de tip text fiind stocate n variabila B de tip matrice de
celule. Dac foaia de calcul conine antete la nceputul coloanelor sau rndurilor, comanda
xlsread ntoarce doar acele celule n variabila B. Dac foaia de calcul conine informaii de
tip text n celule ce nu reprezint antete de nceput de coloan sau rnd, comanda xlsread
ntoarce n variabila B o matrice de celule de aceeai dimensiune cu foaia de calcul Excel cu
informaii de tip text doar n celulele ce conin text n foaia original, celulele ce conin date
numerice rmnnd goale.
Sintaxa [A, B] = xlsread('nume_fisier','nume_foaie') permite citirea unei anumite foi de
calcul cu numele nume_foaie inclus n fiierul Excel cu numele nume_fisier.xls. Dac
foaia de calcul apelat nu exist MATLAB ntoarce un mesaj de eroare.
S considerm de exemplu fiierul note.xls de tip Microsoft Excel ce conine n prima
foaie de calcul, denumit Foaia1, urmtoarele informaii de tip text, Tabel 4.10, combinate
cu informaii numerice, reprezentnd notele a 4 studeni la 3 discipline.

Tabel 4.10
Andrei George Cristina Paula
Algebr 8 9 8 10
Chimie 10 9 9 8
Fizic 7 9 10 9

Pentru a importa n MATLAB datele din fiierul note.xls i pentru a stoca datele
numerice n variabila A, respectiv pentru a stoca informaiile de tip text n variabila B se
folosete comanda:

98 MEDII DE CALCUL N INGINERIE ELECTRIC
[A, B] = xlsread('note.xls') (4.87)

n urma apelului comenzii xlsread cele dou variabile A i B vor conine urmtoarele
informaii.
A = (4.88)
8 9 8 10
10 9 9 8
7 9 10 9

B = (4.89)
[ ] 'Andrei' 'George' 'Cristina' 'Paula'
'Algebra' [ ] [ ] [ ] [ ]
'Chimie' [ ] [ ] [ ] [ ]
'Fizica' [ ] [ ] [ ] [ ]

n afara funciei xlsread de citire a fiierelor de tip Microsof Excel, MATLAB include i
funcia xlsfinfo care identific dac un fiier de date este de tip Excel sau nu.

4.8. Aplicaii numerice

APLICAIA 17:
Creai n directorul curent fiierul note.txt folosind un editor exterior MATLAB-ului (de
pild Notepad) i apoi importai-l n MATLAB workspace utiliznd Import Wizard. Fiierul
va conine informaiile de mai jos, coloanele fiind separate ntre ele de un spaiu:

Andrei 8 9 5 7
Ana 9 9 6 8
Marian 10 9 9 9
Cristian 7 8 7 6

Rezolvarea aplicaiei presupune urmtorii pai:

1) Se creaz fiierul note.txt folosind editorul Notepad i se salveaz fiierul n
directorul curent.
2) Se lanseaz Import Wizard, selectnd opiunea Import Data din meniul File din
MATLAB Desktop. MATLAB afieaz o cutie de dialog de selecie de fiiere.
Acelai efect l obinei prin lansarea funciei uiimport la linia de comand n
Command Window.
3) Specificai n cutia de dialog fiierul pe care dorii s-l importai i clicai pe Open.
Import Wizard lanseaz fiierul i ncearc s proceseze coninutul.
4) n aceast cutie de dialog clicai pe butonul Next> pentru ca Import Wizard s
determine automat delimitatorul folosit ntre coloanele alturate.
5) Clicai pe Finish pentru a importa datele n Workspace.


MEDII DE CALCUL N INGINERIE ELECTRIC


99
APLICAIA 18:
Creai n directorul curent un fiier cu numele vectori.doc de tip M-book care s conin
urmtoarele date:
1) pe prima linie informaia de tip text: Calcul vectori,
2) un grup de celule de intrare care s permit definirea vectorului x = 0:pi/10:pi i
calculul vectorilor xs = sin(x) i xc = cos(x),
3) un grup de celule de ieire pentru afiarea rezultatelor numerice.

Rezolvarea aplicaiei presupune parcurgerea etapelor urmtoare:

1) Se lanseaz comanda notebook n MATLAB Command Window care deschide
aplicaia Microsoft Word;
2) Se tasteaz pe prima linie a documentului deschis, informaia de tip text:

Calcul vectori

3) Se tasteaz pe liniile 2, 3 i 4 ale documentului informaiile:

x = 0:pi/10:pi;
xs = sin(x)
xc = cos(x)

4) Se selecteaz liniile 2, 3 i 4 ale documentului cu mouse-ul i se apeleaz din bara de
meniu opiunea Notebook -> Define Input Cell pentru a defini cele 3 comenzi
MATLAB de mai sus ca celule de intrare;
5) Se poziioneaz cursorul n interiorul grupului de celule de intrare i se selecteaz din
bara de meniu opiunea Notebook -> Evaluate Cell;
6) Se salveaz n directorul curent fiierul cu numele vectori.doc.

Parcurgnd etapele de mai sus MATLAB va efectua calculul, coninutul documentului
vectori.doc fiind urmtorul:

Calcul vectori
[x = 0:pi/10:pi;
xs = sin(x)
xc = cos(x)]

[xs =
Columns 1 through 9
0 0.3090 0.5878 0.8090 0.9511 1.0000 0.9511 0.8090
0.5878
Columns 10 through 11
0.3090 0.0000
xc =
Columns 1 through 9
1.0000 0.9511 0.8090 0.5878 0.3090 0.0000 -0.3090 -0.5878
-0.8090
Columns 10 through 11
-0.9511 -1.0000]
100 MEDII DE CALCUL N INGINERIE ELECTRIC

APLICAIA 19:
Creai n directorul curent fiierul Excel It.xls folosind Microsoft Excel i apoi citii datele n
MATLAB utiliznd comanda xlsread. Fiierul va conine informaii de tip text, respectiv
date numerice ca mai jos:

Curent_I(A) 9 7 5 4
Timp_t(s) 0 1 2 3

Rezolvarea aplicaiei presupune urmtorii pai:

1) Se creaz fiierul It.xls folosind Microsoft Excel i se salveaz fiierul n directorul
curent.
2) Se apeleaz n MATLAB Command Window comanda xlsread cu sintaxa:

[A, B] = xlsread('It.xls')

n urma apelului comenzii MATLAB, veriabilele A i B vor conine urmtoarele informaii:

A =
9 7 5 4
0 1 2 3
B =
'Curent_I(A)'
'Timp_t(s)'

MEDII DE CALCUL N INGINERIE ELECTRIC


101

5. REPREZENTAREA GRAFICELOR

MATLAB dispune de o multitudine de faciliti pentru reprezentarea grafic a vectorilor
i matricelor, respectiv editarea i printarea acestor grafice.

5.1. Reprezentarea graficelor 2D

5.1.1. Trasarea unui grafic 2D. O funcie de baz utilizat la trasarea graficelor 2D este
funcia plot care are diferite forme, n funcie de argumentele de intrare. Dac y este un
vector, plot(y) produce un grafic, liniar pe poriuni, al elementelor lui y, n funcie de
index-ul elementelor lui y. Dac specificai doi vectori ca argumente, plot(x, y) creaz un
grafic al lui y funcie de x. Pentru exemplificare, tastai:

x = 0:pi/100:2*pi; (5.1)
y = sin(x);
plot(x, y)

Acum se pot aduga graficului notaii pe cele dou axe, respectiv un titlu. Folosind
caracterele \pi se creaz simbolul .

xlabel('x = 0:2\pi') (5.2)
ylabel('sin( x)')
title('Graficul Funciei sinus','FontSize',12)

n urma execuiei comenzilor de mai sus se obine graficul de mai jos, Fig. 5.1.



Fig. 5.1. Reprezentarea grafic a funciei sinus.

102 MEDII DE CALCUL N INGINERIE ELECTRIC
5.1.2. Funcii de reprezentare grafic 2D. MATLAB include o gam larg de funcii de
reprezentare grafic 2D a curbelor, cum ar fi cele prezentate n Tabelul 5.1.

Tabel 5.1
Funcia Destinaia
plot Grafic 2D cu scar liniar pe ambele axe X i Y
loglog Grafic 2D cu scar logaritmic pe ambele axe X i Y
semilogx Grafic 2D cu scar logaritmic pe axa X i scar liniar pe axa Y
semilogy Grafic 2D cu scar logaritmic pe axa Y i scar liniar pe axa X
plotyy Grafic cu etichetare pe partea dreapt i stng
stem Grafic 2D pentru seturi de date discrete
bar Grafic 2D, reprezentare cu bare
barh Grafic 2D, reprezentare cu bare orizontale
stairs Grafic 2D, reprezentare n scar
area Grafic 2D, reprezentare cu arii
fill Grafic 2D, de reprezentare a poligoanelor

5.1.3. Reprezentarea mrimilor complexe i imaginare. Cnd argumentele funciei
plot sunt complexe, partea imaginar este ignorat cu excepia situaiei cnd funciei i se
transmite un singur argument complex. n acest caz special, comanda este o prescurtare
pentru trasarea unui grafic de tip parte real funcie de partea imaginar. Deci, funcia
plot(Z) unde Z este un vector sau matrice complex, este echivalent cu plot(real(Z),
imag(Z)). Tastai de pild:

t = 0: pi/20: 2*pi; (5.3)
plot(exp(i*t), '-o');
axis equal;

n urma comenzilor de mai sus MATLAB traseaz un poligon cu 40 de laturi cu cercuri
n vrfuri.



Fig. 5.2. Reprezentare grafic a numerelor complexe.
MEDII DE CALCUL N INGINERIE ELECTRIC


103
5.2. Reprezentarea graficelor 3D

5.2.1. Reprezentarea suprafeelor. MATLAB definete o suprafa prin coordonata z a
punctelor situate pe un grid n planul x-y, folosind linii drepte pentru conectarea punctelor
alturate. Diferite funcii de reprezentare grafic 3D a suprafeelor disponibile n MATLAB
sunt prezentate n Tabelul 5.2.

Tabel 5.2
Funcia Aciune
mesh, surf Trasare de suprafee
meshc, surfc Trasare de suprafee cu contur dedesubt
meshz Trasare de suprafee cu perdea vertical
pcolor Trasare de suprafee n plan (valoare proporional cu culoarea)
surfl Trasare de suprafee luminate dintr-o anumit direcie
surface Creare de obiecte tip suprafa

Cu excepia funciei pcolor toate celelalte funcii grafice prezentate n tabelul de mai sus
afieaz suprafeele n trei dimensiuni. Funciile din familia mesh genereaz suprafee de tip
plas colornd doar liniile ce conecteaz punctele definite, iar funciile de tip surf afieaz
att liniile de legtur ct i feele suprafeei colorate. Funcia pcolor permite afiarea n
plan a unei suprafee avnd valoarea proporional cu culoarea.

5.2.2. Reprezentarea grafic a funciilor de dou variabile. Pentru a afia o funcie de
dou variabile, z = f(x, y) trebuiesc urmai paii de mai jos:
Generai matricele X i Y constnd din rnduri i coloane, reprezentnd domeniul de
definiie al funciei.
Folosii X i Y pentru a evalua i a trasa funcia.

Funcia meshgrid transform domeniul specificat printr-un singur vector sau doi vectori x
i y n matrice X i Y pentru evaluarea funciilor de dou variabile. Rndurile lui X sunt
copii ale vectorului x i coloanele lui Y sunt copii ale vectorului y.
Pentru a trasa graficul bi-dimensional al funciei sinc=sin(r)/r, Fig. 5.3, unde r reprezint
distana fa de origine, tastai comenzile de mai jos. Prin adugarea lui eps (cel mai mic
numr MATLAB n virgul mobil) se evit nedeterminarea 0/0 n origine.

[X,Y] = meshgrid(-8:.5:8); (5.4)
R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R)./R;
mesh(X, Y, Z)

104 MEDII DE CALCUL N INGINERIE ELECTRIC


Fig. 5.3. Reprezentarea grafic a funciilor de dou variabile folosind funcia mesh.

O alt form de afiare a graficului funciei sinc const n folosirea comenzii surf. De
aceast dat culoarea feelor este determinat de valorile lui Z i de colormap, Fig. 5.4.
Tastai n acest sens comenzile de mai jos.

surf(X, Y, Z) (5.5)
colormap hsv
colorbar



Fig. 5.4. Reprezentarea grafic a funciilor de dou variabile folosind
funciile surf, colormap i colorbar.
MEDII DE CALCUL N INGINERIE ELECTRIC


105
Comanda colorbar permite afiarea legendei de culori a graficului.

Uneori este util aa numita tehnic de luminare a unui obiect dup o anumit direcie.
Aceast tehnic poate face ca reprezentarea grafica a suprafeei s fie mai clar. Luminarea
poate fi folosit deasemenea pentru a face mai realist o reprezentare tri-dimensional. n
exemplul ce urmeaz, Fig. 5.5, se folosete aceeai funcie sinc ca mai sus dar culoarea
suprafeei este de aceast dat roie. Tastai comenzile de mai jos:

surf(X, Y, Z, 'FaceColor', 'red', 'EdgeColor', 'none'); (5.6)
camlight left; lighting phong;
view(-15, 40);



Fig. 5.5. Reprezentarea grafic a funciilor de dou variabile folosind
opiunile camlight i view.

Comanda view modific poziia din care este privit graficul. ncercai s modificai
parametrii funciei view. De pild tastai view(-25,80).

5.2.3. Alte funcii MATLAB de reprezentare grafic 3D a seturilor de date sunt
prezentate n Tabelul 5.3.

Tabel 5.3
Funcia Destinaia
bar3 Grafic 3D, reprezentare cu bare
bar3h Grafic 3D, reprezentare cu bare orizontale
fill3 Grafic 3D, de reprezentare a poligoanelor
plot3 Grafic 3D cu scar liniar pe ambele axe X i Y
stem3 Grafic 3D pentru seturi de date discrete
106 MEDII DE CALCUL N INGINERIE ELECTRIC
5.3. Configurarea i salvarea graficelor

5.3.1. Ferestre de tip figure. Funciile de reprezentare grafic deschid n mod automat o
nou fereastr de tip figure dac nu exist nici o fereastr figure deja afiat pe ecran.
Dac o fereastr figure exist, MATLAB folosete acea fereastr pentru reprezentri
grafice. Dac exist mai multe ferestre figure deschise, MATLAB se fixeaz la una dintre
ele ce reprezint fereastra figure curent (ultima fereastr de acest tip folosit sau fereastra
pe care s-a executat ultima dat un clic).
Pentru a face ca o fereastr figure existent s devin curent, clicai pe acea fereastr
sau tastai la linia de comand figure(n), unde n reprezint numrul din bara de titlu a
figurii respective. Rezultatele comenzilor grafice ulterioare vor fi afiate n aceast fereastr
devenit curent. Pentru a deschide o nou fereastr figure i pentru a o face fereastr
figure curent, tastai cuvntul cheie figure la linia de comand.

5.3.2. Reprezentri multiple n acelai sistem de coordonate. Perechi multiple (x, y) de
argumente creaz reprezentri grafice multiple printr-un singur apel al funciei plot.
MATLAB acceseaz automat un set predefinit de diverse culori (setul poate fi modificat) ce
permit diferenierea vizual ntre seturile de date. De pild, instruciunile ce urmeaz
afieaz trei curbe de variaie funcie de x, fiecare curb cu o culoare diferit:

x = 0:pi/100:2*pi; (5.7)
y1 = sin(x);
y2 = sin(x-.25);
y3 = sin(x-.5);
plot(x, y1, x, y2, x, y3)
legend('sin(x)', 'sin(x-.25)', 'sin(x-.5)')

Comanda legend permite o cale uoar de identificare a curbelor individuale. n Fig. 5.6,
este prezentat rezultatul MATLAB al execuiei setului de comenzi (5.7).



Fig. 5.6. Reprezentri multiple n acelai sistem de coordonate.
MEDII DE CALCUL N INGINERIE ELECTRIC


107
5.3.3. Adugarea unor curbe la grafice existente. Comanda hold permite adugarea
unor curbe la un grafic existent. Prin utilizarea comenzii hold on MATLAB nu va elimina
graficul existent la apelul unei noi comenzi plot ci va adaug noile curbe la graficul existent,
rescalnd axele dac este necesar. De pild, setul de instruciuni (5.8) de mai jos creaz mai
nti un grafic tip contour al funciei peaks, apoi suprapune o reprezentare grafic n
degrade a aceleiai funciei, Fig. 5.7.

[x, y, z] = peaks; (5.8)
contour(x, y, z, 20, 'k');
hold on;
pcolor(x, y, z);
shading interp;
hold off;



Fig. 5.7. Exemplu de adugare a unor curbe la grafice existente utiliznd
funcia hold.

Comanda hold on permite ca reprezentarea grafic pcolor s se combine cu reprezentarea
contour ntr-o singur figur, Fig. 5.7.

5.3.4. Reprezentri grafice multiple pe o figur. Comanda subplot permite afiarea n
aceeai fereastr a mai multor grafice sau tiprirea acestora pe aceeai coal de hrtie.
Tastnd subplot(m, n, p) fereastra figure este partiionat ntr-o matrice m x n de grafice
mai mici i selecteaz graficul cu index p ca grafic curent. Graficele sunt numerotate nti
pe primul rnd de sus al ferestrei figur, apoi pe cel de-al doilea rnd etc. De pild, setul de
comenzi (5.9) de mai jos traseaz curbele n patru grafice diferite pe fereastra figure,
Fig. 5.8.

[X,Y,Z] = peaks; (5.9)
subplot(2, 2, 1); mesh(X);
108 MEDII DE CALCUL N INGINERIE ELECTRIC
subplot(2, 2, 2); mesh(Y);
subplot(2, 2, 3); mesh(Z);
subplot(2, 2, 4); mesh(X, Y, Z);



Fig. 5.8. Exemplu de reprezentri grafice multiple pe aceeai figur
utiliznd funcia subplot.


5.3.5. Specificarea tipului de linie i culoarea. Este posibil setarea culorii, a tipului de
linie, a markerului (de exemplu simbolul + sau o) cnd plotai datele folosind funcia
plot.

plot(x, y, 'culoare_stil_marker') (5.10)

Stringul culoare_stil_marker conine de la 1 la 4 caractere ce desemneaz o culoare, un stil
de linie, i un tip de marker:

Caracterele ce desemneaz culori sunt 'c', 'm', 'y', 'r', 'g', 'b', 'w', i 'k'. Acestea
corespund culorilor cyan, magenta, yellow, red, green, blue, white, i black.
Stilul de linie este indicat de string-urile: '-' pentru solid, '- -' pentru linie lung
ntrerupt, ':' pentru linie scurt ntrerupt, '-.' pentru linie punct. Nu precizai nici
unul din stilurile de linie pentru linie solid.
Tipurile de marker sunt '+', 'o', '*', 'x' i 's' pentru ptrat, 'd' pentru romb, '^' pentru
triunghi cu vrful n sus, 'v' pentru triunghi cu vrful n jos, '>' pentru triunghi cu
vrful la dreapta, '<' pentru triunghi cu vrful la stnga, 'p' pentru pentagon, 'h'
pentru triunghi hexagon, i nimic dac nu se dorete marker.


MEDII DE CALCUL N INGINERIE ELECTRIC


109
De pild prin lansarea setului de comenzi:

x = 0:pi/100:2*pi; (5.11)
y = sin(x);
plot(x, y, 'ks')

MATLAB va trasa graficul funciei y funcie de x cu markere de tip ptrate negre n fiecare
punct de grafic, dar fr s conecteze marker-ele cu linie, Fig. 5.9.



Fig. 5.9. Reprezentarea funciei sinus cu marker ptrat negru

n urma lansrii setului de comenzi:

x = 0:pi/100:2*pi; (5.12)
y = sin(x);
plot(x, y, 'r:+')

MATLAB va trasa graficul funciei y funcie de x cu marker de tip + de culoare roie,
fr s uneasc punctele de grafic, Fig. 5.10.

110 MEDII DE CALCUL N INGINERIE ELECTRIC


Fig. 5.10. Reprezentarea funciei sinus cu marker + rou

5.3.6. Controlul axelor. Comanda axis admite un numr de opiuni pentru setarea
scalrii, orientrii, i aspectului graficelor. Putei deasemenea seta aceste opiuni interactiv.

5.3.6.1. Setarea limitelor axelor. MATLAB caut implicit maximele i minimelor
seturilor de date pentru a alege limitele axelor. Comanda axis permite specificarea propriilor
dvs. limite pentru axe i prezint sintaxa urmtoare: axis([xmin xmax ymin ymax]) pentru
grafice bi-dimensionale i axis([xmin xmax ymin ymax zmin zmax]) pentru grafice tri-
dimensionale. Folosii comanda axis auto pentru a permite selecia automat a limitelor,
opiune MATLAB implicit.

5.3.6.2. Setarea aspectului axelor. Comanda axis permite deasemenea specificarea unui
numr de stiluri predefinite. De pild, axis square determin limitele axelor x i y de aceeai
lungime. Comanda axis equal determin incrementul pe axele x i y de aceeai lungime. De
pild urmtoarea comand:

plot(exp(i*[0:pi/10:2*pi])) (5.13)

urmat fie de axis square fie de axis equal face ca ovalul s devin cerc, Fig. 5.11.
Comanda axis auto normal face ca modul de scalare s revin la cel iniial, automatic.

MEDII DE CALCUL N INGINERIE ELECTRIC


111


Fig. 5.11. Aplicaii ale funciilor axis square sau axis equal

5.3.6.3. Setarea vizibilitii axelor. Putei folosi comanda axis pentru a face axele
vizibile sau invizibile. Comanda axis on face axele vizibile, aceasta comand fiind cea
implicit. Comanda axis off face axele invizibile.

5.3.7. Setarea gridului. Comanda grid face s apar sau s dispar liniile de grid.
Comanda grid on face ca liniile de grid s apar iar grid off face ca liniile de grid s dispar
din nou.

5.3.8. Etichetarea axelor i a titlului. Comenzile xlabel, ylabel, i zlabel adaug etichete
pe axele x, y, i z. Comanda title adaug un titlu n partea superioara a figurii i funcia text
insereaz text oriunde pe figur. Un set specific de notaii genereaz litere greceti. n urma
tastrii setului de comenzi (5.14) MATLAB va afia Fig. 5.12.

t = -pi:pi/100:pi; (5.14)
y = sin(t);
plot(t, y)
axis([-pi pi -1 1])
xlabel('-\pi \leq {\itt} \leq \pi')
ylabel('sin(t)')
title('Graficul Funciei sinus')
text(1,-1/3,'{\itFuncia sinus}')

112 MEDII DE CALCUL N INGINERIE ELECTRIC


Fig. 5.12. Etichetarea axelor i a titlului unui grafic.


5.3.9. Editarea graficelor. MATLAB permite modificarea graficelor, setarea scalrii
axelor, inclusiv marcajul axelor, culorile stilul liniilor pentru distingerea curbelor ntr-un
grafic. Uneori se dorete personalizarea graficelor prin adugarea etichetelor, titlurilor,
legendelor i a altor notaii. MATLAB permite dou ci de editarea a graficelor:
Folosind mouse-ul pentru a selecta i edita obiectele n mod interactiv, respectiv
Folosind funciile MATLAB la linia de comand sau scrise ntr-un fiier M.

5.3.9.1. Editarea interactiv a graficelor. Putei edita interactiv graficele n fereastra
figure MATLAB prin selectarea butonului . Astfel putei selecta obiectul sau obiectele
grafice pe care dorii s le modificai prin dublu-clic. Aceast comand lanseaz Property
Editor, care permite acces la proprietile grafice ale obiectului, respectiv modificarea lor.
De pild, folosind Property Editor, Fig. 5.13, putei modifica grosimea unei linii, putei
aduga titluri i etichete axelor, aduga lumini, etc.
Putei lansa Property Editor prin dublu-clic pe un obiect grafic, cum ar fi o linie, sau prin
clic-dreapta pe un obiect i selectnd Properties din meniul contextual. Putei deasemenea
lansa Property Editor selectnd fie Figure Properties, Axes Properties, sau Current Object
Properties din meniul Edit al ferestrei figur. Aceste opiuni permit automat accesarea
editorului grafic. O dat lansat Property Editor, pstrai-l deschis pe toat durata sesiunii de
editare ntruct acesta permite acces la toate obiectele grafice. Dac clicai pe un alt obiect
grafic, Property Editor afieaza setul de proprieti asociate cu acel tip de obiect, Fig. 5.14.





MEDII DE CALCUL N INGINERIE ELECTRIC


113
























Fig. 5.13. Editarea unui grafic.


Fig. 5.14. Modificarea proprietilor obiectelor grafice.
Folosii aceste butoane pentru a aduga text, sgei i
linii la un grafic
Folosii acest buton
pentru a edita un grafic
Folosii meniurile Edit,
Insert i Tools pentru a
aduga sau edita obiecte
la un grafic
Prin dublu-clic pe un
obiect acesta e selectat
Poziionarea legendei,
notaiilor i a altor
obiecte se face prin
clicare i mutare
Accesarea anumitor
funcii de editare a
graficelor este posibil
folosind meniurile
contextuale
Folosii aceste butoane pentru a v deplasa printre obiectele
grafice pe care le-ai editat

Folosii bara de navigare pentru
a selecta obiectul de editat

Selectai pentru a vedea
instantaneu efectul schimbrilor
Clicai pe tab pentru a vizualiza
un grup de proprieti
Clicai pentru a vizualiza o
list de valori ale acestui cmp

Clicai pentru a aplica schimbrile i
pentru a prsi fereastra
Clicai pentru a prsi fereastra fr
a aplica schimbrile
Clicai pentru a aplica
schimbrile fr a prsi
fereastra
Clicai pentru a obine
informaii despre anumite
proprieti particulare
114 MEDII DE CALCUL N INGINERIE ELECTRIC
5.3.9.2. Editarea graficelor folosind funciile MATLAB. Dac preferai s editai
grafice direct de la linia de comand sau din fiiere M, putei folosi comenzile MATLAB
dedicate. Folosind sistemul MATLAB Handle Graphics, putei folosi comenzile de
schimbare a proprietilor obiectelor ntr-un grafic.

5.3.10. Salvarea figurilor. Pentru a salva o figur, selectai Save din meniul File. Pentru
a o salva folosind un format grafic, cum ar fi TIFF, pentru utilizare n cadrul altor aplicaii,
selectai Export din meniul File. Putei deasemenea salva figuri de la linia de comand
utiliznd comanda saveas. De pild tastai:

saveas(figure(1), 'figure.tiff') (5.15)

n urma lansrii comenzii (5.15) MATLAB va salva figura figure(1) n fiierul figure.tiff.
Pentru verificarea existenei acestui fiier tastai dir. Figura astfel salvat poate fi inserat de
pild ntr-un document sau utilizat n alt aplicaie.

5.3.11. Tiprirea graficelor. Putei tipri un grafic MATLAB la o imprimant conectat
la calculator sau putei exporta figura ntr-unul din formatele grafice standard suportate de
MATLAB. Exist dou ci de tiprire a figurilor:
Folosind opiunea Print din meniul File
Folosind comanda print

Comanda print permite mai mult flexibilitate. De pild, instruciunea de mai jos
salveaz coninutul ferestrei figura curenta ca fiier TIFF cu numele figura.tiff cu
rezoluie de 200 dpi.

print -dtiff -r200 figura.tiff (5.16)

Dac tastai print la linia de comand, MATLAB imprim figura curent la imprimanta
activ.

5.4. Aplicaii numerice

APLICAIA 20:
Folosind funcia MATLAB plot reprezentai pe acelai grafic funciile:
f(x) = sin(x)/x i
g(x) = cos(x)/(x+1)
pe intervalul [0.001...20
.
].

Se face apel la urmtoarea secven de comenzi MATLAB:

x = 0.001:pi/100:20*pi;
f = sin(x)./x;
g = cos(x)./(x+1);
MEDII DE CALCUL N INGINERIE ELECTRIC


115
plot(x, f, x, g);
grid on;
title('Graficul functiilor sin(x)/x si cos(x)/x');

MATLAB va afia graficul de mai jos:



Fig. 5.15. Graficul funciilor sin(x)/x i cos(x)/x.

APLICAIA 21:
Reprezentai grafic funcia f(x)=sin(x) n grade de la 0 la 360.

Se folosete urmtoarea secven de comenzi MATLAB:

x = 0:pi/100:2*pi;
y = x*180/pi;
f = sin(x);
plot (y, f);
grid on;
xlabel('x [grade]');
ylabel('sin(x)');
title('Graficul functiei sin(x)');

MATLAB va afia graficul urmtor, Fig. 5.16:

116 MEDII DE CALCUL N INGINERIE ELECTRIC


Fig. 5.16. Graficul funciei sin(x).


APLICAIA 22:
Reprezentai grafic funcia f(x) = sin(1/x) unde 0.01 < x < 0.1. Dac reprezentarea nu
este precis efectuai coreciile de rigoare. Adugai titlul Graficul funciei
f(x)=sin(1/x) , pe axa x adugai x [rad] iar pe axa y adugai f(x) .

Se folosete urmtoarea secven de comenzi MATLAB:

x = 0.01:0.000001:0.1;
f = sin(1./x);
plot (x, f);
title(Graficul functiei f(x)=sin(1/x));
xlabel(x [rad]);
ylabel(f (x));
grid on;

MATLAB va afia graficul urmtor, Fig. 5.17:





MEDII DE CALCUL N INGINERIE ELECTRIC


117


Fig. 5.17. Graficul funciilor sin(1/x).

Dup cum se poate observa, la definirea vectorului x s-a ales un pas foarte mic i anume
0.000001. Paii mai mari nu permit o reprezentare grafic fidel a funciei.

APLICAIA 23:
Reprezentai grafic funcia Rosenbrock sau banana: f(x, y) = 100(y-x
2
)
2
+ (1-x)
2
+ 2.
Intervalul de reprezentare este definit de: -3<x<3 i -5<y<10. S se suprapun peste
graficul funciei curbele de nivel corespunztoare.

Se folosete urmtoarea secven de comenzi MATLAB:

[x, y] = meshgrid(-3:0.1:3, -5:0.1:10);
f = 100*(y - x.^2).^2 + (1 - x).^2 + 2;
mesh (x, y, f);
contour (x, y, f);
meshc (x, y, f);
xlabel('x');
ylabel('y');
zlabel('f(x, y)');

MATLAB va afia graficul din Fig. 5.18:





118 MEDII DE CALCUL N INGINERIE ELECTRIC


Fig. 5.18. Graficul funciei Rosenbrock.

APLICAIA 24:
Reprezentai pe acelai grafic funciile:
f(x)=e
x.
sin(x) cu marker tip romb, culoare albastra, cu linie punct i
g(x)= e
x.
cos(x) cu marker tip hexagon, culoare verde linie ntrerupt.
Argumentul funciei x respect condiia 0 < x < 4.

Se folosete urmtoarea secven de comenzi MATLAB:

x = 0:pi/100:4*pi;
f = exp(x).*sin(x);
g = exp(x).*cos(x);
plot (x, f, 'b-.d', x, g, 'g--h');
title('Graficul functiilor e^x.sin(x) si e^x.cos(x)');
xlabel('x [rad]');
grid on;

Rezultatul MATLAB este reprezentat de graficul urmtor, Fig. 5.19:







MEDII DE CALCUL N INGINERIE ELECTRIC


119


Fig. 5.19. Graficul funciilor e
x .
sin(x) i e
x .
cos(x).

APLICAIA 25:
S se reprezinte grafic urmtoarele funcii n intervalul [1, 2] pe acelai grafic:
a) ln(2 + t + t
2
)
b) e
t(1 + cos(3t))

c) cos
-1
(t) + sin
2
(t)
d) tg
-1
(t) (inversa funciei tangent)
e) cotg(t)

Se folosete setul de instruciuni MATLAB:

t = 1: 0.01: 2;
y1 = log(2 + t + t.^2);
y2 = exp(t.*(1 + cos(t)));
y3 = acos(t) + sin(t).^2;
y4 = atan(t);
y5 = cot(t);
plot(t, y1, t, y2, t, y3, t, y4, t, y5);

MATLAB va trasa urmtorul grafic, Fig. 5.20.




120 MEDII DE CALCUL N INGINERIE ELECTRIC


Fig. 5.20. Graficul funciilor ln(2 + t + t
2
), e
t(1 + cos(3t))
, cos
-1
(t) + sin
2
(t), tg
-1
(t), cotg(t).

APLICAIA 26:
Se d un transformator monofazat caracterizat de urmtoarele date nominale:
Sn = 1000 VA, Pjn = 50 W i Pfe = 15 W. S se traseze caracteristica randamentului
transformatorului = f() pentru sarcin pur rezistiv cu [0, 1], tiind c:
=
.
Sn / (
.
Sn +
2

.
Pjn + Pfe )

Se folosete ansamblul de comenzi MATLAB:

Sn = 1000;
Pjn = 50;
Pfe = 15;
beta = 0:0.01:1;
rand = beta*Sn./(beta*Sn + beta.^2*Pjn + Pfe);
plot(beta, rand);
xlabel('\beta [u.r.]');
ylabel('\eta [u.r.]');
grid on;

MATLAB va afia graficul din Fig. 5.21.







MEDII DE CALCUL N INGINERIE ELECTRIC


121


Fig. 5.21. Graficul funciei = f().


APLICAIA 27:
Folosind pe rnd toate funciile din Tabelul 5.2, reprezentai grafic funcia Z obinut
prin comanda MATLAB, [X, Y, Z] = peaks.

Se folosete urmtoarea secven de comenzi MATLAB:

[X, Y, Z] = peaks;
figure(1);
mesh (X, Y, Z);
figure(2);
surf (X, Y, Z);
figure(3);
meshc (X, Y, Z);
figure(4);
surfc (X, Y, Z);
figure(5);
meshz (X, Y, Z);
figure(6);
pcolor (X, Y, Z);
figure(7);
surfl (X, Y, Z);
figure(8);
surface (X, Y, Z);

MATLAB va afia graficele urmtoare, Fig. 5.22.
122 MEDII DE CALCUL N INGINERIE ELECTRIC






MEDII DE CALCUL N INGINERIE ELECTRIC


123


Fig. 5.22. Graficul funciei peaks folosind facilitile grafice MATLAB.
124 MEDII DE CALCUL N INGINERIE ELECTRIC

6. ELEMENTE DE PROGRAMARE MATLAB

MATLAB lucreaz fie n modul linie de comand, caz n care fiecare linie este prelucrat
i rezultatele sunt imediat afiate, fie utiliznd programe scrise n fiiere. Fiierele care
conin instruciuni MATLAB se numesc fiiere M, ntruct au extensia .m. Un fiier M
poate fi de dou tipuri, script sau function. Ambele tipuri de fiiere sunt scrise n format
ASCII, iar algoritmul implementat poate fi urmrit i modificat cu usurin dac se cunosc
conveniile i sintaxa limbajului de programare MATLAB. Aceste tipuri de fiiere M permit
crearea unor noi funcii care pot completa setul funciilor existente. Astfel MATLAB poate
fi extins, permind abordarea anumitor aplicaii specifice din tiin i inginerie.

6.1. Fiiere de tip M

6.1.1. Fiiere de tip script. Fiierele script sunt fiiere externe de tip text care conin
secvene de comenzi MATLAB. Prin apelarea numelui fiierului, se execut secvenele de
comenzi MATLAB coninute n fiier. Dup execuia complet a unui fiier script
variabilele cu care acesta a operat rmn n Workspace. Aceste fiiere nu permit integrarea
n programe mari, realizate pe principiul modularizrii. Fiierele script pot fi folosite la
rezolvarea unor probleme care necesit un numr relativ mare de instruciuni a cror lansare
la linia de comand ar deveni greoaie.

6.1.2. Fiiere de tip function. n cazul n care prima linie a unui fiier M conine
cuvntul cheie function fiierul respectiv intr n categoria fiierelor de tip function. Un
fiier de tip function difer de un fiier de tip script prin faptul c accept argumente de
intrare. Astfel, la terminarea execuiei unei funcii, n memoria calculatorului nu rmn
dect variabilele de ieire ale funciei respective. Forma general a primei linii a unui fiier
funcie este:

function [par_iesire1, par_iesire2 ...] = nume_funcie(par_intrare1, par_intrare2 ...) (6.1)

unde :
function reprezint un cuvnt cheie obligatoriu prin care se declar c fiierul este de tip
function
nume_funcie reprezint numele funciei, adic numele sub care este salvat fiierul, ns
fr extensie. Numele funciei nu poate fi identic cu cel al unui fiier M pre-existent.
par_iesire1, par_iesire2 reprezint parametri de ieire ce trebuiesc separai prin virgul
i cuprini ntre paranteze drepte. Dac funcia nu are parametri de ieire, parantezele
drepte i semnul egal nu mai au sens.
par_intrare1, par_intrare2 reprezint parametri de intrare ce trebuiesc separai prin
virgul i cuprini ntre paranteze rotunde. Dac funcia nu are parametri de intrare,
parantezele rotunde nu mai au sens.

Fiierele funcie pot fi adugate ca funcii noi n structura MATLAB. Instruciunile i
comenzile utilizate de noua funcie sunt nregistrate ntr-un fiier cu extensia .m. De pild
MEDII DE CALCUL N INGINERIE ELECTRIC


125
fiierul de tip funcie avnd numele medie.m calculeaz media aritmetic a elementelor unui
vector i are sintaxa de mai jos:

function m = medie (x) (6.2)
n = length (x)
m = sum (x)/n
y = [Media aritmetica a numerelor este:, num2str(m)];
disp(y)

Aceste instruciuni trebuiesc salvate n fiierul cu numele medie.m

Din punctul de vedere al programatorului, MATLAB transmite prin valoare doar
argumentele funciilor pe care acestea le modific. Dac o funcie nu altereaz un argument
ci l utilizeaz doar ntr-un calcul, MATLAB transmite argumentul prin referin pentru a
optimiza folosirea memoriei.
Fiecare funcie MATLAB are alocat o anumit cantitate de memorie diferit de
Workspace-ul de baz MATLAB. Aceast memorie reprezint Workspace-ul funciei
respective. n cursul rulrii MATLAB-ului, singurele variabile pe care le putei accesa sunt
cele din Workspace-ul curent, fie c acesta este Workspace-ul de baz sau Workspace-ul
unei funcii. Variabilele pe care le transmitei unei funcii trebuie s aparin
Workspace-ului curent i funcia ntoarce argumente de ieire spre Workspace-ul curent.
Putei totui s definii variabile ca variabile globale, acestea putnd fi accesate din mai
multe Workspace-uri.

6.1.3. Includerea de comentarii i informaii de tip help ntr-un fiier M. Introducerea
unui comentariu ntr-un program se realizeaz prin adugarea caracterului procent (%)
plasat la nceputul liniei. Dac semnul procent (%) apare pe prima poziie ntr-o linie,
aceasta va fi omis de compilator, iar dac apare n oricare alt poziie ntr-o linie de
program, partea de program care urmeaz dup acest caracter va fi omis.
Un comentariu poate aprea n oricare poziie ntr-un program ns este recomandat
poziionarea comentariilor la nceputul fiierului script sau dup prima linie care declar o
funcie n cazul fiierelor de tip function. n acest caz, comentariul respectiv care apare la
nceputul unui fiier script sau imediat dup linia de declarare a unei funcii, constituie
help-ul fiierului respectiv. Dac se apeleaz: help nume_script sau help nume_funcie se
afieaz liniile care ncep cu semnul procent i sunt situate ntre prima linie de comentariu i
prima linie liber n cazul fiierelor script, respectiv ntre prima linie de comentariu dup
declararea funciei i prima linie liber sau prima instruciune ce urmeaz acestui grup
compact de linii.
Prin urmare pen tru a ataa un help unui program MATLAB se scriu liniile de program
ncepnd cu semnul procent (%) i sunt plasate ntre prima linie dup declararea funciei i
prima linie liber sau prima instruciune ce urmeaz acestui grup compact de linii.
Dup ultima linie a help-ului se las o linie liber sau se trece direct la o instruciune
MATLAB, ca n exemplul de mai jos:

Function nume_functie % Aceasta linie lipseste la fisierele script (6.3)
% Prima linie de help
126 MEDII DE CALCUL N INGINERIE ELECTRIC
% A doua linie de help
% ...
% Ultima linie de help
Linie libera (aceasta este obligatorie daca urmeaza un alt comentariu care nu este de tip
help)
Instructiuni MATLAB

Dac un program MATLAB salvat ntr-un fiier M care are structura de mai sus este
apelat ca mai jos:

help nume_functie (6.4)

MATLAB va afia mesajul:

% Prima linie de help (6.5)
% A doua linie de help
% ...
% Ultima linie de help

6.1.4. Crearea, editarea i depanarea fiierelor M. Exist mai multe metode de creare,
editare i depanare a fiierelor M, dup cum este prezentat n Tabelul 6.1.

Tabel 6.1
Funcie Metoda
Folosind MATLAB Editor
Folosind MATLAB Editor de sine stttor fr a lansa MATLAB
Crearea i editarea
fiierelor M
Folosind oricare editor de text, cum ar fi Notepad, WordPad, etc.
Folosind instruciunile generale de depanare
Folosind MATLAB Debugger
Depanarea fiierelor M
Folosind MATLAB Debugging Functions

6.1.4.1. Crearea i editarea fiierelor M folosind MATLAB Editor. Crearea i editarea
fiierelor M poate fi efectuat eficient folosind MATLAB Editor. MATLAB Editor pune la
dispoziia utilizatorului o interfa grafic performant de editare clasic de text (vezi
paragraful 1.4.2.8). Aceast aplicaie poate fi folosit att n cadrul MATLAB-ului, ct i ca
o aplicaie de sine stttoare fr a necesita neaprat lansarea pachetului de programe
MATLAB. n afara funciilor de editare obinuite, MATLAB Editor prezint i funcii
specifice cum ar fi, Tabel 6.2:

Tabel 6.2
Funcie Mod de lucru
Transformarea unor linii de cod n
comentarii sau a unor comentarii n
linii de cod prin adugarea sau
eliminarea simbolului %
Se selecteaz liniile respective n MATLAB Editor i
apoi fie se selecteaz meniul Text ->
Comment/Uncomment fie se apas Ctrl+R/Ctrl+T fie se
selecteaz Comment/Uncomment din meniul contextual
Alinierea inteligent a instruciunilor Se selecteaz liniile respective n MATLAB Editor i
apoi fie se selecteaz meniul Text -> Smart Indent fie se
MEDII DE CALCUL N INGINERIE ELECTRIC


127
apas Ctrl+I, fie se selecteaz Smart Indent din meniul
contextual
Identificarea parantezelor i
acoladelor
Se poziioneaz cursorul ntre dou paranteze sau acolade
( ), [ ], { }, i apoi fie se selecteaz meniul Text ->
Balance Delimiters, fie se apas Ctrl+B. Dac nu exist
nici o pereche de paranteze delimitatoare MATLAB
lanseaz un beep sonor.
Indentare Se selecteaz liniile respective n MATLAB Editor i
apoi fie se selecteaz meniul Text -> Decrease Indent/
Increase Indent fie se apas Ctrl+[/Ctrl+]

Fiierele M pot fi create i editate i utiliznd editoare exterioare MATLAB-ului, cum ar
fi Notepad, Wordpad etc. Pentru a fi considerate de ctre MATLAB drept fiiere M,
fiierele create cu aceste editoare trebuiesc salvate cu extensia .m.

6.1.4.2. Depanarea fiierelor M folosind MATLAB Debugger. Depanarea sau
Debugging este procesul prin care sunt identificate i rezolvate problemele din cadrul
codului dvs. MATLAB. n principiu exist dou tipuri de erori:
Erori de sintax de pild, introducerea greit a unui nume de funcie sau omiterea
unei paranteze. Cnd lansai un fiier M cu o eroare de sintax, n mod normal
MATLAB o va detecta i va afia un mesaj de eroare n Command Window descriind
eroarea i numrul liniei n fiierul M. Clicai pe poriunea subliniat a mesajului de
eroare, sau poziionai cursorul pe mesajul de eroare i apsai Ctrl+Enter. Fiierul M ce
conine eroarea se deschide n Editor, cu linia eronat afiat n prim plan.
Erori run-time aceste erori sunt n general de algoritm. Erorile run-time sunt vizibile
cnd fiierul M produce rezultate neateptate.

Identificarea erorilor de sintax nu este de regul dificil dac se ine cont de mesajele de
eroare MATLAB. Erorile run-time sunt ns mai dificil de identificat deoarece acestea pot
apare n interiorul anumitor funcii. Iat cteva sfaturi pentru identificarea i nlturarea
erorilor run-time:
tergei simbolurile ; din instruciunile fiierelor M cu pricina. n urma acestei
operaiuni MATLAB va afia rezultatele pe ecran pe durata execuiei fiierului M;
Adugai instruciunea keyboard la fiierul M. Instruciunile keyboard opresc execuia
fiierului M la un anumit punct unde acestea apar i v permit examinarea i modificarea
Workspace-ul local al funciei. Acest mod este indicat de un prompt special: K>>
Continuarea execuiei funciei se realizeaz tastnd return i apsnd tasta Return;
Folosii MATLAB Debugger sau funciile debugging. Acestea sunt folositoare pentru
corectarea erorilor run-time deoarece putei accesa Workspace-ul funciilor i apoi
putei examina sau schimba valorile pe care le conin. Putei defini sau terge puncte de
ntrerupere sau breakpoints, pentru oprirea execuiei programului la o anumit locaie
(la o anumit linie de program) n interiorul fiierelor M.

A) Definirea punctelor de ntrerupere sau breakpoints. Definirea unor breakpoints
permit oprirea execuiei unei funcii facnd astfel posibil examinarea valorilor unor
variabile la anumite locaii unde exist o posibil eroare. Putei defini breakpoints doar n
128 MEDII DE CALCUL N INGINERIE ELECTRIC
dreptul liniilor executabile din cadrul fiierelor M salvate, care se afl n directorul curent
sau n directoare aflate n calea de cutare. La crearea unui nou fiier M, acesta trebuie
salvat nainte de a defini breakpoints. Nu putei defini breakpoints ct timp MATLAB este
deja lansat n execuia unui program.
Pentru a defini un breakpoint n dreptul unei linii de program clicai pe zona breakpoint
n dreptul liniei de program respectiv. Zona breakpoint este coloana situat imediat n
dreapta coloanei ce conine numerele liniilor. Definii breakpoints n dreptul liniilor
precedate de o liniua -. Celelalte linii, de pild comentariile sau liniile goale, nu sunt
executabile; dac ncercai s definii un breakpoint acolo, acesta este definit n dreptul
urmtoarei linii executabile.
Alte metode de a defini un breakpoint constau n poziionarea cursorului pe linie i apoi
clicai pe butonul de definire/tergere de breakpoints din toolbar, sau selectai Set/Clear
Breakpoint din meniul Breakpoints sau din meniul contextual. Un punct rou va apare n
zona breakpoints, n dreptul liniei selectate, ca n figura de mai jos, Fig. 6.1.
Eliminarea punctelor de ntrerupere din dreptul anumitor linii poate fi realizat plasnd
cursorul pe linia respectiv i fie fcnd apel la butonul din toolbar-ul ferestrei MATLAB
Debugger fie clicnd pe punctul rou existent n zona breakpoint fie clicnd pe Set/Clear
breakpoint n meniul Breakpoints sau n meniul contextual. Punctele de ntrerupere pot fi
eliminate toate odat fcnd apel la opiunea Set/Clear Breakpoint din meniul Breakpoints.



Fig. 6.1. Exemplu de definire a punctelor de ntrerupere (breakpoints).

B) Lansarea fiierelor M ce conin breakpoints. Dup definirea breakpoints, lansai n
execuie fiierul M din Command Window sau din Editor/Debugger. Lansarea fiierului M
conduce la urmtoarele:
Promptul n Command Window se transform n K>> indicnd c MATLAB este n
mod debugger.
Execuia programului este oprit la primul breakpoint.
La continuarea execuiei programului linia curent va intra n execuie.

C) Execuia pas cu pas a instruciunilor fiierului M. n mod debugger, putei executa
pas cu pas instruciunile unui fiier M, oprindu-v n punctele n care dorii s evaluai
MEDII DE CALCUL N INGINERIE ELECTRIC


129
anumite valori. n acest sens folosii butoanele de tip step din meniul Debug al ferestrei
Editor/Debugger dup cum este prezentat n Tabelul 6.3.

Tabel 6.3
Butonul
toolbar
Opiune a meniului
Debug
Descriere

Continue sau Run
sau Save and Run
Continu execuia fiierului M pn la sfrit sau pn
ntlnete un alt breakpoint.
- Go Until Cursor Continu execuia fiierului M pn la linia unde este
poziionat cursorul. Opiune care poate fi apelat i din meniul
contextual.

Step Execut linia curent a fiierului M.

Step In Execut linia curent a fiierului M i dac linia face apel la o
alt funcie, intr n funcia respectiv.

Step Out Dupa ce intr n funcia respectiv execut restul funciei sau
subfunciei, prsete funcia respectiv i se oprete.

Exit Debug Mode Prsete modul Debug.

6.2. Tipuri de variabile i de operatori

6.2.1. Tipuri de variabile. MATLAB conine trei tipuri de variabile: locale, globale i
persistente. Regulile i recomandrile privind folosirea variabilelor n programarea
MATLAB de tip linie de comand rmn valabile i n cazul programarii utiliznd fiiere de
tip M. Astfel trebuiesc avute n vedere urmtoarele aspecte:
Nu este necesar declararea variabilelor folosite n fiiere M, n afar de cazul cnd
acestea trebuiesc declarate ca variabile de tip global sau persistent;
nainte de a asigna o variabil alteia, trebuie s v asigurai c variabila din dreapta
asignrii exist i are o anumit valoare;
Orice operaie de alocare a unei valori unei variabile conduce la crearea variabilei dac
aceasta nu exist, sau n cazul n care aceasta deja exist, alocarea conduce la rescrierea
unei noi valori n respectiva variabil;
Verificarea numelui unei variabile poate fi efectuat folosind funcia isvarname pentru
asigurare c numele este valid nainte de a fi folosit. Funcia isvarname ntoarce 1 dac
numele este valid i 0 n caz contrar;
La definirea unei variabile asigurai-v c numele respectivei variabile nu este deja
afectat unei funcii.

6.2.1.1. Variabile locale. Funciile MATLAB au propriile lor variabile locale. Acestea
sunt separate de variabilele altor funcii i de acelea ale Workspace-ului de baz al
MATLAB-ului. Variabilele definite ntr-o funcie nu rmn n memorie de la un apel la altul
al unei funcii, dect dac sunt definite ca variabile globale sau persistente.
Fiierele script, pe de o parte, nu au Workspace separat. Acestea stocheaz variabilele
ntr-un Workspace care este partajat cu apelatorul scriptului. Cnd sunt apelate de la linia de
comand, acestea partajeaz Workspace-ul de baz. Cnd sunt apelate dintr-o funcie,
acestea partajeaz Workspace-ul acelei funcii.
130 MEDII DE CALCUL N INGINERIE ELECTRIC

6.2.1.2. Variabile globale. Dac o variabil de tip global este declarat n acelai timp n
mai multe funcii i chiar n Workspace-ul de baz al MATLAB-ului, atunci toate acestea
partajeaz o singur copie a acelei variabile. Orice alocare a acelei variabile n oricare dintre
funcii este vizibil pentru celelalte funcii care au declarat acea variabil drept global.
Fiecare funcie MATLAB care folosete variabile globale poate avea propriile sale variabile
locale. nainte ca o funcie s poat folosi o variabil global trebuie mai nti s declare
aceast variabil global. Declaraiile de variabile globale trebuiesc plasate la nceputul
funciei. De pild pentru a declara variabila VAL ca variabil global se folosete
instruciunea:

global VAL (6.6)

Dac fiierul M conine deasemenea subfuncii, atunci fiecare subfuncie care necesit
acces la variabila global trebuie s declare mai nti variabila drept global. Pentru a
accesa variabila de la linia de comand MATLAB, aceasta trebuie mai nti declarat ca
variabil global la linia de comand.
Se recomand ca numele de variabile globale MATLAB s fie n general mai lungi i mai
sugestive dect numele variabilelor locale, i s conin litere mari. Aceste remarci nu sunt
obligatorii, ci sunt recomandri pentru a crete claritatea codului MATLAB i pentru a
reduce ansa de redefinire accidental a unei variabile globale.
Pentru a vizualiza doar variabilele declarate globale, folosii funciile who sau whos cu
specificaia, global. Pentru exemplificare tastai comenzile de mai jos:

global MAXLUNG MAXLAT (6.7)
MAXLUNG = 36; MAXLAT= 78;
lung = 5; lat = 21;

whos global
Name Size Bytes Class
MAXLUNG 1x1 8 double array (global)
MAXLAT 1x1 8 double array (global)
Grand total is 2 elements using 16 bytes

Exist cteva sugestii n ceea ce privete folosirea variabilelor globale. n primul rnd
trebuie tiut faptul c exist un anumit risc asociat folosirii nejustificate a variabilelor
globale i din aceast cauz se recomand s le utilizai fr abuz i anume atunci cnd este
necesar.
Ai putea de exemplu, fr s tii, s dai n interiorul unei funcii, un nume unei
variabile globale care este deja folosit pentru o variabil global n alt funcie. Cnd lansai
aplicaia, o funcie poate suprascrie neintenionat variabila folosit de cealalt funcie. Acest
tip de eroare este uneori dificil de depistat.
O alt problem apare cnd dorii s schimbai numele variabilei. Pentru a face o
schimbare fr a introduce o eroare n aplicaie, trebuie s gsii fiecare apariie a acelui
nume n codul dvs. (i/sau n codul altora dac partajai funcii create de o echip de
programatori).

MEDII DE CALCUL N INGINERIE ELECTRIC


131
6.2.1.3. Variabile persistente. Caracteristicile variabilelor persistente sunt urmtoarele:
Pot fi utilizate doar n funcii;
Alte funcii nu le pot accesa;
MATLAB nu le terge din memorie cnd funcia se ncheie, aa nct valoarea acestora
este reinut de la un apel la altul al funciei;
Dac tergei funcia sau editai fiierul M al acelei funcii, atunci MATLAB terge toate
variabilele persistente folosite n acea funcie.

Variabilele persistente trebuiesc declarate ca persistent nainte s le putei folosi ntr-o
funcie. Este n general foarte bine s plasai declaraiile de variabile persistente la nceputul
funciilor. De pild pentru a declara variabila SUMA_X ca persistent tastai:

persistent SUM_X (6.8)

Putei folosi funcia mlock pentru a pstra un fiier M neters din memorie, astfel
pstrnd neterse variabilele persistente din fiierul M corespunztor.

6.2.2. Tipuri de operatori. Exist trei tipuri de operatori MATLAB: operatori aritmetici,
operatori relaionali i operatori logici.

6.2.2.1. Operatori aritmetici. Operatorii aritmetici sunt folosii n calculul numeric i
sunt prezentai anterior n paragrafele 2.3 i 4.1.

6.2.2.2. Operatori relaionali. Operatorii relaionali permit compararea cantitativ a
dou mrimi i sunt prezentai n Tabelul 6.4.

Tabel 6.4
Operator Descriere
< Mai mic dect
<= Mai mic sau egal cu
> Mai mare dect
>= Mai mare sau egal cu
= = Egal cu
~ = Diferit de

6.2.2.3. Operatori logici. Operatorii logici sunt folosii la diverse operaii logice
MATLAB dup cum este prezentat n Tabelul 6.5. Pentru exemplificare se consider
A = [0 1 1 0 1], B = [1 1 0 0 1].

Tabel 6.5
Operator Descriere Exemplu
& ntoarce 1 pentru fiecare locaie de element care este
adevarat n ambii vectori
A & B = [0 1 0 0 1]
| ntoarce 1 pentru fiecare locaie de element care este
adevarat n unul sau n cellalt vector
A | B = [1 1 1 0 1]
~ ntoarce 0 pentru fiecare locaie de element care este
adevarat i 1 pentru fiecare locaie de element care este
fals
~A = [1 0 0 1 0]
132 MEDII DE CALCUL N INGINERIE ELECTRIC
xor ntoarce 1 pentru fiecare locaie de element care este
adevrat doar ntr-un vector i 0 pentru toate celelalte
elemente
xor(A, B) = [1 0 1 0 0]

6.3. Instruciuni de control logic

Exist mai multe instruciuni de control logic care se folosesc n mod curent n aplicaiile
MATLAB.

6.3.1. Instruciunea if. Instruciunea if mpreun cu else i elseif, execut un grup de
instruciuni n cazul n care este ndeplinit o anumit condiie logic:

if expresie_logica (6.9)
instructiuni
end

Dac expresie_logica este adevarat (1), MATLAB execut toate instruciunile cuprinse
ntre if i end. Ulterior programul continu execuia cu instruciunea situat pe linia imediat
urmtoare dup instruciunea end. Dac expresia logic este fals (0), MATLAB sare peste
toate instruciunile cuprinse ntre if i end i continu execuia ncepnd cu linia plasat
imediat dup instruciunea end. De exemplu tastai urmtoarea secven de instruciuni:

a=3; (6.10)
b=2;
if a>b
disp('a este mai mare dect b')
elseif b>=a
disp('b este mai mare sau egal cu a')
end

6.3.2. Instruciunea switch. Instruciunea switch, mpreun cu case i otherwise, execut
diferite grupuri de instruciuni n funcie de valoarea anumitor condiii logice:

switch expresie (6.11)
case valoare1
instructiuni % Executate daca expresie egal valoare1
case valoare2
instructiuni % Executate daca expresie egal valoare2
...
otherwise
instructiuni % Executate daca expresie nu ia nici o valoare amintit mai sus
end

Acest bloc const n:
Cuvntul switch urmat de o expresie de evaluat;
Un anumit numr de grupuri case. Aceste grupuri constau din cuvntul cheie case urmat
de o valoare posibil, toate pe o singur linie. Liniile urmtoare conin instruciunile ce
MEDII DE CALCUL N INGINERIE ELECTRIC


133
urmeaz a fi executate pentru o valoare dat a expresiei. Acestea pot fi reprezentate de
orice instruciune valid MATLAB incluznd eventual un alt bloc switch. Execuia unui
grup case se sfrete cnd MATLAB ntlnete urmtoarea instruciune case sau
otherwise. Doar instruciunile corespunznd primului case sunt executate;
Un grup opional otherwise. Acesta const din cuvntul otherwise, urmat de
instruciunile de executat dac valoarea expresiei nu se ncadreaz n nici unul din
grupurile case anterioare. Execuia grupului otherwise se sfrete cu instruciunea end;
Instruciune end.

Tastai de pild urmtoarea secven de instruciuni:

var = 9 (6.12)
switch var
case 1
disp('1')
case {2,3,4}
disp('2 sau 3 sau 4')
case 5
disp('5')
otherwise
disp('altceva')
end

6.3.3. Instruciunea while. Instruciunea while execut un grup de instruciuni de un
numr indefinit de ori, avnd la baz anumite condiii logice. Sintaxa instruciunii while
este:

while expresie_logica
instructiuni (6.13)
end

Dac expresie_logica este adevarat sunt executate instruciunile cuprinse ntre while i
end. Tastai spre exemplificare comenzile de mai jos:

n = 1; (6.14)
while prod(1:n) < 1e100
n = n + 1
end

6.3.4. Instruciunea for. Instruciunea for execut un grup de instruciuni de un anumit
numr impus de ori. Sintaxa instruciunii este:

for index = start:increment:end (6.15)
instruciuni
end

134 MEDII DE CALCUL N INGINERIE ELECTRIC
Incrementul implicit este 1. Putei specifica orice increment, inclusiv unul negativ. Pentru
indici pozitivi, execuia se termin cnd valoarea indexului depete valoarea end; pentru
increment negativ, bucla se ncheie cnd indexul devine mai mic dect valoarea end. Tastai
secvena de instruciuni de mai jos:

m=3; (6.16)
n=5;
for i = 1:m
for j = 1:n
A(i, j) = 1/(i + j - 1)
end
end

6.3.5. Instruciunea continue. Instruciunea continue cedeaz controlul iteraiei
urmtoare n cazul unei bucle for sau while, neglijnd orice alt instruciune existent n
corpul buclei, ca n exemplul de mai jos.

m=3; (6.17)
n=5;
for i = 1:m
for j = 1:n
if ( i>2) continue
end
A(i, j) = 1/(i + j - 1)
end
end

6.3.6. Instruciunea break. Instruciunea break termin execuia unei bucle for sau while
ca n exemplul de mai jos.

clc; (6.18)
clear all;
m=30;
for i = 1:m
A(i) =floor(10*rand(1))
if (A(i) ==0) break
end
end

6.3.7. Instruciunile try...catch i return. Instruciunea try...catch este folosit n general
la detectarea erorilor n cursul execuiei, iar instruciunea return permite ntoarcerea la
programul sau funcia invocatoare.



MEDII DE CALCUL N INGINERIE ELECTRIC


135
6.4. Interaciunea program-utilizator

Exist trei modaliti de interaciune a unui program cu utilizatorul pe durata execuiei
unui program MATLAB:
Obinerea unui rspuns de la tastatur;
Definirea unei pauze pn cnd utilizatorul apas o tast;
Construcia unei interfee grafice cu utilizatorul.

6.4.1. Obinerea unui rspuns de la tastatur. Funcia input afieaz un prompt i
ateapt un rspuns al utilizatorului. Sintaxa funciei este

n = input('prompt_string') (6.19)

Funcia afieaz irul de caractere prompt_string, ateapt rspunsul de la tastatur i
apoi ntoarce valoarea introdus de la tastatur. Dac utilizatorul introduce o expresie,
funcia o evalueaz i ntoarce valoarea acesteia. Aceast funcie este folositoare pentru
implementarea aplicaiilor cu meniu. Funcia input poate ntoarce deasemenea un rspuns al
utilizatorului de tip string. Pentru un rspuns de tip string, adugai 's' ca argument al
funciei:

Adresa = input('Introduceti adresa: ','s'); (6.20)

6.4.2. Definirea unei pauze. Anumite fiiere M necesit definirea unor pauze ntre
execuiile anumitor pai. Comanda pause, fr nici un argument, oprete execuia pn cnd
utilizatorul apas o tast. Pentru a face o pauz de n secunde, folosii funcia sub forma
pause(n).

6.4.3. Construcia unei interfee grafice folosind GUI (Graphical User Interfaces).
Pentru a construi o interfa grafic se poate face apel la facilitile MATLAB dezvoltate n
acest sens. n cele ce urmeaz vom exemplifica construcia unei interfee grafice simple de
tip GUI folosind MATLAB GUIDE (Graphical User Interfaces Development
Environment). Se menioneaz c instruciunile prezentate mai jos sunt valabile n
MATLAB versiunea 6.5. Dac se folosete alt versiune de MATLAB pot apare anumite
diferene n ceea ce privete comenzile de dezvoltare a aplicaiei.
Interfaa grafic primete ca parametrii de intrare dou frecvene f1 i f2 i traseaz
graficul funciei sin(2*pi*f1*timp)+f1/f2*sin(2*pi*f2*timp) analiznd spectrul frecvenelor
coninute n acest semnal.
Pentru crearea interfeei grafice se face apel la MATLAB GUIDE tastnd la promptul
ferestrei Command Window comanda guide.
n cutia de dialog care tocmai a aprut, Fig. 6.2, selectai Blank GUI (Default) n cmpul
GUIDE Template.

136 MEDII DE CALCUL N INGINERIE ELECTRIC


Fig. 6.2. Lansarea GUIDE n vederea construciei unei interfee grafice

Dup ce ai efectuat selecia clicai pe butonul OK al csuei de dialog. n urma acestei
aciuni va apare o fereastr ce reprezint mediul de dezvoltare MATLAB GUIDE avnd
nfiarea ca n figura de mai jos, Fig. 6.3.



Fig. 6.3. Fereastra de lucru a unei interfee grafice

n zona din stnga ecranului sunt dispuse obiectele predefinite disponibile n MATLAB.
Adugai pe foaia de lucru dou obiecte de tip Axes, prin dragging. n continuare adugai
dou obiecte de tip Edit Text i cinci obiecte de tip Static Text. Apoi adugai i un obiect
de tip Push Button. Dup ce ai plasat pe foaie aceste obiecte acestea trebuie s arate cam
ca n figura de mai jos, Fig. 6.4.

MEDII DE CALCUL N INGINERIE ELECTRIC


137


Fig. 6.4. Adugarea unor obiecte la o interfa grafic

Acum putei salva interfaa grafic cu numele Proc_sem printr-un clic pe meniul File +
Save As. n urma operaiunii de salvare, MATLAB creaz dou fiiere Proc_sem.fig i
Proc_sem.m cel de-al doilea fiind n mod automat deschis, ca n Fig. 6.5.



Fig. 6.5. Coninutul fiierului Proc_sem.m asociat interfeei grafice

Acest ultim fiier conine codul specific interfeei grafice unde trebuiesc adugate
instruciunile de execuie a anumitor comenzi de interaciune a utilizatorului cu programul.
138 MEDII DE CALCUL N INGINERIE ELECTRIC
Ne vom ntoarce n MATLAB GUIDE n care se vor redimensiona i rearanja obiectele
adugate pe foaie, folosind uneltele MATLAB, aa nct acestea s arate ca n Fig. 6.6.



Fig. 6.6. Aranjarea i dimensionarea obiectelor interfeei grafice

n continuare se vor schimba proprietile obiectelor plasate pe foaia MATLAB GUIDE.
Pentru aceasta executai un dublu clic pe obiectul axes1 deschiznd astfel fereastra Property
Inspector specific acestui obiect grafic, ca n figura de mai jos, Fig. 6.7.



Fig. 6.7. Definirea proprietilor obiectelor interfeei grafice

MEDII DE CALCUL N INGINERIE ELECTRIC


139
Modificai proprietatea Tag a obiectului schimbnd-o din axes1 n frec i apoi nchidei
fereastra Property Inspector. n mod similar se modific proprietatea Tag a obiectului
axes2 schimbnd-o n timp.
n mod identic se modific proprietatea String a obiectului Static Text aflat sub obiectul
frec aceasta fiind schimbat n Frecventa [Hz].
Apoi se modific proprietatea String a obiectului Static Text aflat sub obiectul timp
aceasta fiind schimbat n Timp [s].
Apoi se modific proprietile obiectului Static Text aflat n zon superioar a ferestrei.
Astfel proprietatea String este schimbat n sin(2*pi*f1*timp)+f1/f2*sin(2*pi*f2*timp), iar
proprietatea Font Size este schimbat n 11.
n continuare se modific proprietatea String a obiectului Static Text aflat deasupra
primei csue de tip Edit Text aceasta fiind schimbat n Frecventa f1 [Hz]:.
n mod similar se modific proprietatea String a obiectului Static Text aflat deasupra
celei de-a doua csue de tip Edit Text aceasta fiind schimbat n Frecventa f2 [Hz]:.
Acum urmeaz modificarea proprietilor csuelor tip Edit Text. Mai nti se vor
schimba proprietile csuei Edit Text superioare: proprietatea String devine 50 iar
proprietatea Tag devine in_frec1. n continuare se vor schimba proprietile csuei Edit
Text inferioare: proprietatea String devine 150 iar proprietatea Tag devine in_frec2.
n continuare se modific proprietatea String a obiectului Push Button aceasta devenind
Plot.
n final prin dublu clic pe zona dintre obiectele grafice se modific proprietatea Name a
ferestrei globale aceasta devenind Procesare de semnal.
Dup ce redimensionai corespunztor obiectele interfeei grafice aceasta trebuie s arate
ca n figura de mai jos, Fig. 6.8.



Fig. 6.8. Noua form a interfeei grafice
140 MEDII DE CALCUL N INGINERIE ELECTRIC
n cele ce urmeaz trebuie adugat codul necesar efecturii operaiei propriu-zise de
analiz de semnal i de trasare a graficului funciei superpoziie. n acest sens selectai
butonul Plot i apoi meniul View + Component Callbacks + Callback. Aceast comand va
deschide fiierul cod de tip M n dreptul funciei pushbutton1_Callback.

function pushbutton1_Callback(hObject, eventdata, handles) (6.21)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

Instruciunile de mai jos trebuiesc introduse de ctre utilizator n continuare la corpul
funciei:

f1=str2double(get(handles.in_frec1, 'String')); (6.22)
f2=str2double(get(handles.in_frec2, 'String'));
t=0: 0.001: 0.25;
x=sin(2*pi*f1.*t)+f1/f2*sin(2*pi*f2.*t);
y = fft(x, 512);
m = y.*conj(y)/512;
f = 1000*(0:256)/512;

% Deseneaza frecventa
axes(handles.frec);
plot(f, m(1:257));
grid on;

% Deseneaza timp
axes(handles.timp);
plot(t,x);
grid on;

n continuare se salveaz modificrile efectuate n fiierul M i de la linia de comand a
ferestrei Command Window se tasteaz Proc_sem. Aceast comand va lansa interfaa
grafic creat i aceasta va aprea sub forma din Fig. 6.9.

MEDII DE CALCUL N INGINERIE ELECTRIC


141


Fig. 6.9. Interfaa grafic dup lansarea n execuie

n aceast interfa grafic presupunnd ca se aleg valorile frecvenelor f1=50 Hz i
f2=150 Hz se poate trasa grafic semnalul de tip superpoziie, respectiv spectrul de frecvene
ce intr n componena semnalului rezultant, apsnd pe butonul Plot. Rezultatul este
prezentat n figura de mai jos, Fig. 6.10.



Fig. 6.10. Trasarea graficelor n urma apelului butonului Plot al interfeei grafice
142 MEDII DE CALCUL N INGINERIE ELECTRIC
6.5. Operaii cu iruri de caractere

6.5.1. Evaluarea irurilor de caractere. Evaluarea irurilor de caractere reprezint o
facilitate a limbajului de programare MATLAB care-i confer acestuia putere i
flexibilitate, permind executarea operaiilor de concatenare a irurilor de caractere.

6.5.1.1. Funcia eval. Funcia eval evalueaz un ir de caractere ce conine expresii,
instruciuni sau apeluri de funcii MATLAB. Sintaxa funciei eval n forma sa cea mai
simpl este urmtoarea:

eval('string') (6.23)

De pild, n codul de mai jos este utilizat funcia eval pentru evaluarea unei expresii n
vederea generrii unei matrice de ordin n.

t = '1/(i*j-1)'; (6.24)
for i = 1:n
for j = 1:n
a(i, j) = eval(t);
end
end

Iat i un exemplu n care funcia eval este folosit pentru evaluarea unei instruciuni:

eval('t = clock'); (6.25)

Putei concatena iruri de caractere pentru a crea expresii complete pentru a fi evaluate
utiliznd funcia eval. De pild codul de mai jos permite crearea cu ajutorul funciei eval a
10 variabile numite P1, P2, ...P10, i setarea la fiecare dintre variabile o valoare diferit.

for i=1:10 (6.26)
eval(['P',int2str(i),'= i.^2'])
end

6.5.1.2. Funcia feval. Funcia feval difer de eval prin faptul c aceasta se aplic unei
funcii i nu unei expresii MATLAB. Funcia executat este specificat n primul argument.
Spre exemplificare tastai comenzile de mai jos:

fun = [@sin; @cos; @log]; (6.27)
k = input('Alegeti indexul funciei [1 pentru sin, 2 pentru cos, 3 pentru log]: ');
x = input('Introduceti valoarea: ');
feval(fun(k), x)

6.5.2. Funcii MATLAB cu iruri de caractere. MATLAB pune la dispoziia
utilizatorului o bibliotec de funcii cu iruri de caractere. Cteva dintre acestea sunt
prezentate n Tabelul 6.6.
MEDII DE CALCUL N INGINERIE ELECTRIC


143
Tabel 6.6
Categorie Funcie Descriere
blanks Creaz iruri de blancuri
char Creaz vectori de caractere
General
deblank terge blancurile de la sfritul irurilor de caractere
findstr Caut un ir de caractere n altul
lower Convertete un ir de caractere n litere mici
strcat Concateneaz iruri de caractere
strcmp Compar iruri de caractere
strcmpi Compar iruri de caractere neglijnd faptul c literele sunt
mici sau mari
strjust Aliniaz irurile de caractere
strmatch Caut un ir de caractere n altele
strncmp Compar primele n caractere ale unor iruri de caractere
strncmpi Compar primele n caractere ale unor iruri de caractere
neglijnd faptul ca literele sunt mici sau mari
strrep nlocuiete un ir de caractere cu altul
strvcat Concateneaz iruri de caractere vertical
Operaii cu iruri
de caractere
(stringuri)
upper Convertete iruri de caractere n litere mari
ischar ntoarce adevrat n cazul irurilor de caractere
isletter ntoarce adevrat n cazul literelor alfabetului
Teste pe iruri de
caractere
isspace ntoarce adevrat n cazul blancurilor
double Convertete irurile de caractere n format numeric
int2str Convertete ntregi n iruri de caractere
mat2str Convertete matrice n iruri de caractere
num2str Convertete numere n iruri de caractere
sprintf Scrie date formatate n iruri de caractere
str2double Convertete irurile de caractere n numere dubl precizie
Conversie ntre
iruri de
caractere i
numere
str2num Convertete irurile de caractere n numere

6.6. Aplicaii numerice

APLICAIA 28:
S se scrie intruciunile de mai jos n fiierul script sistem.m. S se salveze fiierul n
directorul curent i s se lanseze n execuie programul tastnd la linia de comand
sistem.

% Program de rezolvare a unui sistem de ecuaii de tipul A*x=b => x=A
-1
*b
clear % Sterge toate variabilele din workspace
clc % Sterge ecranul Command Window
n=1000; % Defineste numarul de necunoscute
A = rand(n, n); % Creaza o matrice A de numere aleatoare
b = rand(n, 1); % Creaza un vector coloana b de numere aleatoare
tic, % Porneste cronometrul
x1 = inv(A)*b; % Rezolva sistemul
toc % Opreste cronometru
144 MEDII DE CALCUL N INGINERIE ELECTRIC
tic, x2 = A\b; toc % Rezolva sistemul i cronometreaza timpul de calcul

Evaluai diferenele ntre soluiile x1 i x2 calculate pe cele dou ci, folosind comanda
sum(abs(x1-x2)). Funcia abs calculeaz modulul elementelor unei matrice.
Sunt diferene ntre cele dou soluii ? Care soluie este calculat mai rapid ?

Folosind MATLAB Editor se creaz n directorul curent fiierul script sistem.m care conine
comenzile MATLAB de mai sus i se lanseaz n execuie prin tastarea n Command
Window:

sistem

MATLAB va rspunde cu:

elapsed_time = 2.4690
elapsed_time = 0.9850

Deci soluia x1 este calculat mai lent dect soluia x2. Diferena dintre cele dou soluii se
calculeaz cu formula:

sum(abs(x1-x2))

MATLAB va rspunde cu:

ans = 5.3549e-011

Dup cum era de ateptat diferena dintre cele dou soluii este foarte redus.

APLICAIA 29:
Creai fiierul funcie medie_a.m coninnd instruciunile de mai jos i salvai-l n
directorul curent. Lansai funcia pentru calculul mediei aritmetice a elementelor
vectorului V=1:2.54:50.

function m = medie_a (x)
n = length (x);
m = sum (x)/n;
y = [Media aritmetica a elementelor vectorului este: num2str(m)];
disp(y)

Folosind MATLAB Editor se creaz n directorul curent fiierul function medie_a.m care
conine urmtoarele comenzile MATLAB de mai sus. Funcia de mai sus se lanseaz n
execuie pentru calculul mediei aritmetice a elementelor vectorului V = 1: 2.54: 50 prin
tastarea n Command Window a comenzilor:

V = 1: 2.54: 50
medie_a (V)
MEDII DE CALCUL N INGINERIE ELECTRIC


145

MATLAB va rspunde cu:

Media aritmetica a elementelor vectorului este: 25.13
ans = 25.1300

APLICAIA 30:
Creai fiierul funcie fact.m care are ca parametru de intrare un numr n i calculeaz
[n]! unde [n] reprezint partea ntreag a lui n. n cadrul fiierului funcie folosii
comenzile MATLAB factorial i floor. Lansai funcia pentru calculul lui [10.1]! i
[20.6]!. Comparai rezultatul cu cel obinut cu funcia MATLAB prod(1:10) i
prod(1:20).

Folosind MATLAB Editor se creaz n directorul curent fiierul function fact.m care
conine urmtoarele comenzile MATLAB:

function f = fact (n)
n = floor(n);
f = factorial(n);

Funcia de mai sus se lanseaz n execuie prin tastarea n Command Window a
comenzilor:

fact (10.1)
fact (20.6)

MATLAB va rspunde respectiv cu:

ans = 3628800
ans = 2.4329e+018

Apoi se execut comenzile MATLAB:

prod(1:10)
prod(1:20)

MATLAB va afia rspunsul de mai jos, care este identic cu cel furnizat de funcia fact.

ans = 3628800
ans = 2.4329e+018

APLICAIA 31:
Adugai dou linii de help la fiierul de tip funcie fact.m definit n cadrul Aplicaiei 30,
care s explice destinaia funciei respective, dup structura de mai sus i executai
comanda help fact pentru a vizualiza rezultatul MATLAB.
146 MEDII DE CALCUL N INGINERIE ELECTRIC

Folosind MATLAB Editor se adaug la fiierul fact.m 3 linii de comentarii explicative
structura fiierului fact.m devenind:

function f = fact (n)
% Functia fact are ca parametru de intrare numarul n si permite calculul lui [n]!
% unde [n] reprezinta partea intreaga a numarului n.
n = floor(n);
f = factorial(n);

Se tasteaz n Command Window comanda:

help fact

MATLAB va rspunde cu:

Functia fact are ca parametru de intrare numarul n si permite calculul lui [n]!
unde [n] reprezinta partea intreaga a numarului n.

APLICAIA 32:
Folosind instruciunile de control logic, creai n directorul curent fiierul funcie ec2.m
care are ca parametrii de intrare trei numere (a, b, c) i care calculeaz rdcinile
ecuaiei de ordinul ax
2
+ bx + c =0. n plus funcia trebuie s traseze graficul funciei
f= ax
2
+ bx + c funcie de x, punnd n eviden rdcinile i maximul sau minimul
funciei. Lansai funcia pentru diferite valori ale parametrilor de intrare a, b, c i
verificai corectitudinea operaiilor.

Folosind MATLAB Editor se creaz n directorul curent fiierul function ec2.m care conine
urmtoarele comenzi MATLAB:

function f = ec2 (a, b, c)
if a == 0
disp('Parametrul a trebuie sa fie nenul');
elseif b^2-4*a*c < 0
disp('Ecuatia are radacini complexe');
else
x1 = (-b + sqrt(b^2-4*a*c))/2/a;
x2 = (-b - sqrt(b^2-4*a*c))/2/a;
disp(['Radacinile ecuatiei sunt: ' num2str(x1) ' si ' num2str(x2)]);
x = [x2-(x1-x2):(x1-x2)/100:x1+(x1-x2)];
y = a*x.^2 + b*x + c;
xm = -b/2/a;
ym = -(b^2-4*a*c)/4/a;
plot(x, y, xm, ym, 'r+', x1, 0, 'mo', x2, 0, 'mo');
end

MEDII DE CALCUL N INGINERIE ELECTRIC


147
Lansnd comanda MATLAB:

ec2(1, 1, 1)

MATLAB va rspunde cu:

Ecuatia are radacini complexe

Lansnd comanda MATLAB:

ec2(0, 1, 1)

MATLAB va rspunde cu:

Parametrul a trebuie sa fie nenul

Lansnd comanda MATLAB:

ec2(1, -5, 6)

MATLAB va rspunde cu urmtorul mesaj i cu graficul din Fig. 6.11:

Radacinile ecuatiei sunt: 3 si 2




Fig. 6.11. Trasarea graficului funciei de gradul 2.



148 MEDII DE CALCUL N INGINERIE ELECTRIC
APLICAIA 33:
Folosind instruciunile de control logic, creai n directorul curent fiierul funcie fx.m
care are ca parametru de intrare un numr x i care calculeaz valoarea funciei:

f(x) = x-10, dac -100<x<100,
0.45*x+900, dac 100<= x<=200,

Trasai apoi graficul funciei pe intervalul [-100; 200].

Folosind MATLAB Editor se creaz n directorul curent fiierul function fx.m care conine
urmtoarele comenzile MATLAB:

function f = fx (x)
if (x > -100) & (x < 100)
f = x - 10;
elseif (x >= 100) & (x <= 200)
f = 0.45*x + 900;
end
x1 = -100:100;
x2 = 100:200;
f1 = x1 - 10;
f2 = 0.45*x + 900;
plot (x1, f1, 'b', x2, f2, 'r')

Se lanseaz comanda MATLAB:

fx(150)

MATLAB va rspunde cu urmtorul mesaj, respectiv grafic:

ans = 967.5000



Fig. 6.12. Trasarea graficului funciei f(x).
MEDII DE CALCUL N INGINERIE ELECTRIC


149
APLICAIA 34:
Folosind instruciunile de control logic, creai n directorul curent fiierul script fib.m
care s calculeze primii n termeni (n s poat fi modificat de utilizator) ai irului
Fibonacci:Fn = Fn-1 + Fn-2, unde F0 = F1 = 1. Pentru acelai n programul s calculeze
raportul Fn/ Fn-1. Este acesta egal cu numrul de aur (1 + sqrt(5))/2 ?
Trasai pe un grafic variaia funcie de n a termenilor Fn i pe alt grafic variaia funcie
de n a raportului Fn/Fn-1 pentru 1<=n<=50.

Folosind MATLAB Editor se creaz n directorul curent fiierul function fib.m care conine
urmtoarele comenzile MATLAB:

n = 100;
F0 = 1;
F(1) = 1;
F(2) = F(1) + F0;
Rap(1) = F(1) / F0;
Rap(2) = F(2) / F(1);
for k = 3:n
F(k) = F(k-1) + F(k-2) ;
Rap(k) = F(k) / F(k-1)
end
vn = 0:50;
figure(1);
plot (vn, F(1:50), 'b')
figure(2);
plot (vn, Rap(1:50),'r')

Se lanseaz n execuie comanda MATLAB:

fib

MATLAB va afia cele dou grafice de mai jos, Fig. 6.13.



Fig. 6.13. Trasarea graficelor specifice irului Fibonacci.
150 MEDII DE CALCUL N INGINERIE ELECTRIC
APLICAIA 35:
Creai n directorul curent un fiier script p_ec2.m care cere interactiv utilizatorului s
introduc de la tastatur valorile a trei parametri de intrare (a, b, c) i care n continuare
apeleaz funcia ec2.m definit n cadrul Aplicaiei 32. Calculai timpul scurs pentru
calculul rdcinilor i pentru trasarea graficului folosind ansamblul de funcii tic, toc.

Folosind MATLAB Editor se creaz n directorul curent fiierul script p_ec2.m care conine
urmtoarele comenzile MATLAB:

a = input('Introduceti parametrul a: ');
b = input('Introduceti parametrul b: ');
c = input('Introduceti parametrul c: ');
tic
ec2(a, b, c);
toc

Se scrie n Command Window instruciunea MATLAB:

p_ec2

MATLAB va rspunde invitnd utilizatorul s introduc pe rnd cei trei parametrii, a, b, c
ca mai jos, apoi este afiat timpul de calcul, respectiv graficul funciei x
2
- 1 cu evidenierea
rdcinilor i a punctului de minim:

Introduceti parametrul a: 1
Introduceti parametrul b: 0
Introduceti parametrul c: -1
Radacinile ecuatiei sunt: 1 si -1
elapsed_time = 0.0310



Fig. 6.14. Trasarea graficului funciei de gradul 2.
MEDII DE CALCUL N INGINERIE ELECTRIC


151
APLICAIA 36:
Creai o interfa grafic folosind MATLAB GUIDE care s conin:
un obiect de tip Axes, pentru reprezentri grafice
un obiect de tip Static Text ce definete titlul graficului
un buton de tip Push Button pentru execuia graficelor
Apsnd pe butonul tip Push Button s se reprezinte grafic funcia peaks folosind n mod
aleator unul din seturile de instruciuni de mai jos:
1) [X,Y,Z] = peaks;
mesh(X,Y,Z);
2) [X,Y,Z] = peaks;
surf(X,Y,Z);
3) [X,Y,Z] = peaks;
surfc(X,Y,Z);
4) [X,Y,Z] = peaks;
surfl(X,Y,Z);
5) [X,Y,Z] = peaks;
pcolor(X,Y,Z);

Pentru crearea interfeei grafice se face apel la MATLAB GUIDE tastnd la promptul
ferestrei Command Window comanda guide.
n cutia de dialog care tocmai a aprut selectai Blank GUI (Default) n cmpul GUIDE
Template.



Fig. 6.15. Fereastra GUIDE Quick Start.

152 MEDII DE CALCUL N INGINERIE ELECTRIC
Dup ce ai efectuat selecia clicai pe butonul OK al casuei de dialog. n urma acestei
aciuni va apare o fereastr ce reprezint mediul de dezvoltare MATLAB GUIDE avnd
nfiarea ca n Fig. 6.16.



Fig. 6.16. Mediul de dezvoltare MATLAB GUIDE.

n zona din stnga ecranului sunt dispuse obiectele predefinite disponibile n MATLAB.
Adugai pe foaia de lucru un obiect de tip Axes, prin dragging. n continuare adugai un
obiect de tip Static Text i un obiect de tip Push Button. Dup ce ai plasat pe foaie aceste
obiecte acestea trebuiesc dimensionate ca s arate ca n Fig. 6.17.



Fig. 6.17. Noua nfiare a mediului de dezvoltare MATLAB GUIDE.
MEDII DE CALCUL N INGINERIE ELECTRIC


153
Acum putei salva interfaa grafic cu numele graf_peaks printr-un clic pe meniul File +
Save As. n urma operaiunii de salvare, MATLAB creaz dou fiiere graf_peaks.fig i
graf_peaks.m cel de-al doilea fiind n mod automat deschis, ca n Fig. 6.18.



Fig. 6.18. Coninutul fiierului graf_peaks.m.

Acest ultim fiier conine codul specific interfeei grafice unde trebuiesc adugate
instruciunile de execuie a comenzilor de interaciune a utilizatorului cu programul.
n continuare se vor schimba proprietile obiectelor plasate pe foaia MATLAB GUIDE.
Pentru aceasta executai un dublu clic pe obiectul axes1 deschiznd astfel fereastra Property
Inspector specific acestui obiect grafic, ca n Fig. 6.19.



Fig. 6.19. Fereastra Property Inspector.
154 MEDII DE CALCUL N INGINERIE ELECTRIC
Modificai proprietatea Tag a obiectului schimbnd-o din axes1 n graf i apoi nchidei
fereastra Property Inspector.
Apoi se modific proprietile obiectului Static Text aflat n zon superioar a ferestrei.
Astfel proprietatea String este schimbat n Graficul functiei peaks, iar proprietatea Font
Size este schimbat n 11.
n continuare se modific proprietatea String a obiectului Push Button aceasta devenind
Plot.
n final prin dublu clic pe zona dintre obiectele grafice se modific proprietatea Name a
ferestrei globale aceasta devenind Grafic - peaks.
Dup efectuarea acestor modificri interfaa grafic trebuie s arate ca n Fig. 6.20.



Fig. 6.20. Noua nfiare a mediului de dezvoltare MATLAB GUIDE.

n cele ce urmeaz trebuie adugat codul necesar plotrii aleatoare a graficului functiei
peaks. n acest sens selectai butonul Plot i apoi meniul View + Component Callbacks +
Callback. Aceast comand va deschide fiierul cod de tip M n dreptul funciei
pushbutton1_Callback.

function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

MEDII DE CALCUL N INGINERIE ELECTRIC


155
Instruciunile de mai jos trebuiesc introduse de ctre utilizator n continuare la corpul
funciei:

n = round(4*rand);
[X, Y, Z] = peaks;
axes(handles.graf);

if n == 0
mesh(X, Y, Z);
elseif n == 1
surf(X, Y, Z);
elseif n == 2
surfc(X, Y, Z);
elseif n == 3
surfl(X, Y, Z);
else
pcolor(X, Y, Z);
end

n continuare se salveaz modificrile efectuate n fiierul M i de la linia de comand a
ferestrei Command Window se tasteaz graf_peaks. Aceast comand va lansa interfaa
grafic creat i aceasta va aprea ca n Fig. 6.21.



Fig. 6.21. nfiarea interfeei grafice dup comanda de lansare.

Apsnd pe butonul Plot se traseaz graficul funcie peaks n mod aleator ntr-unul din
formatele propuse, ca n Fig. 6.22.
156 MEDII DE CALCUL N INGINERIE ELECTRIC


Fig. 6.22. Graficul funciei MATLAB peaks ca rezultat la apelul butonului Plot.

APLICAIA 37:
S se creeze n directorul curent un fiier script princ.m care apeleaz un alt fiier de tip
funcie functie.m care are la rndul su ca parametri de intrare 5 numele reale, i anume
(a, b, x0), i care traseaz graficul funciei
2
0
) x - -b(x
e a f = n intervalul [xmin, xmax] cu
pasul (xmax-xmin)/1000. Parametrii xmin=-5, xmax=5 necesari trasrii graficului vor fi
definii n programul principal ca variabile globale.

Folosind MATLAB Editor se creaz n directorul curent fiierul script princ.m care conine
urmtoarele comenzile MATLAB:

global xmin
global xmax
xmin=-5;
xmax=5;
functie(1, 2, 3);

Apoi se creaz n directorul curent fiierul function functie.m care conine urmtoarele
comenzile MATLAB:

function f= functie(a, b, x0)
global xmin
global xmax
x = xmin:(xmax-xmin)/1000:xmax;
MEDII DE CALCUL N INGINERIE ELECTRIC


157
f = a*exp(-b*(x-x0).^2);
plot(x, f);

n urma lansrii n execuie a programului principal MATLAB va trasa urmtorul grafic.



Fig. 6.23. Graficul funciei
2
0
) x - -b(x
e a f = .


APLICAIA 38:
S se creeze n directorul curent un fiier script cauta.m care s cear interactiv
introducerea a dou iruri de caractere sirsursa i ir. Acest fiier trebuie s apeleze un
fiier de tip funcie cautastring.m care trebuie creat i care are ca parametri de intrare
sirsursa i ir. Funcia trebuie s caute ir n sirsursa i s nlocuiasc apariiile acestuia
cu un ir de blancuri i s afieze noul ir de caractere modificat.

Folosind MATLAB Editor se creaz n directorul curent fiierul script cauta.m care conine
urmtoarele comenzile MATLAB:

sirsursa = input('Introduceti sirul sursa: ');
sir = input('Introduceti sirul ce trebuie inlocuit: ');
cautastring(sirsursa, sir);

Apoi se creaz n directorul curent fiierul function cautastring.m care conine urmtoarele
comenzile MATLAB:

function f= cautastring(sirsursa, sir)
sirrez = strrep(sirsursa, sir, ' ');
disp(sirrez);
158 MEDII DE CALCUL N INGINERIE ELECTRIC
n urma lansrii n execuie a programului cauta.m MATLAB va cere utilizatorului
introducerea irurilor de caractere surs, respectiv de nlocuit i va afia irul rezultant.

Introduceti sirul sursa: 'Intre;cuvinte;trebuie;spatiu';
Introduceti sirul ce trebuie inlocuit: ';'
sirul rezultant este:
Intre cuvinte trebuie spatiu

APLICAIA 39:
S se creeze n directorul curent un fiier script mare.m care s cear interactiv
introducerea unui ir de caractere. Acest fiier trebuie s nlocuiasc toate caracterele
irului cu litere mari i s afieze noul ir de caractere modificat.

Folosind MATLAB Editor se creaz n directorul curent fiierul script mare.m care conine
urmtoarele comenzile MATLAB:

sirsursa = input('Introduceti sirul sursa: ');
sirrez = upper(sirsursa);
disp(sirrez);

n urma lansrii n execuie a programului mare.m MATLAB va cere utilizatorului
introducerea irului de caractere surs, i-l va afia pe cel rezultant:

Introduceti sirul sursa: 'literele mici se fac mari'
LITERELE MICI SE FAC MARI

APLICAIA 40:
S se creeze n directorul curent fiierul de tip funcie sumasin.m care are ca parametru
de intrare vectorul x=0:0.0001:5 de numere reale, calculeaz funcia sumasin = sin +
sinh + asin + asinh i care traseaza graficul lui abs(sumasin) funcie de x.

Folosind MATLAB Editor se creaz n directorul curent fiierul script sumasin.m care
conine urmtoarele comenzi MATLAB:

function f=sumasin(x)
f = sin(x)+sinh(x)+asin(x)+asinh(x);
plot(x, abs(f));

nti se definete vectorul x i apoi se apeleaz funcia sumasin:

x=0:0.0001:5;
sumasin(x);


MEDII DE CALCUL N INGINERIE ELECTRIC


159
n urma apelului funciei sumasin MATLAB va afia graficul urmtor.



Fig. 6.24. Graficul funciei sumasin.

APLICAIA 41:
S se creeze n directorul curent un fiier de tip script lista.m care cere ca date de intrare,
n mod repetat, numele i prenumele, grupa i media unor studeni i apoi afieaza lista
de studeni, grupa i mediile corespunztoare n ordinea descresctoare a mediilor.
Programul se ncheie cnd n loc de nume utilizatorul introduce un blanc.
Se vor folosi structurile de tip cells, respectiv funcia sort. Structurile de tip cells sunt
identice cu matricele clasice ns elementele pot fi de diverse tipuri (numerele reale,
iruri de caractere etc.). Accesarea elementelor structurilor de tip cells se face folosind
acolade {} n loc de paranteze () cum se folosete n cazul matricelor.

Folosind MATLAB Editor se creaz n directorul curent fiierul script lista.m care conine
setul de comenzi MATLAB de mai jos.

clc;
clear all;
i = 1;
gata = 0;
while gata == 0
numes = input('Introduceti nume student: ');
if numes == ' '
gata = 1;
break;
end
nume{i} = numes;
prenume{i} = input('Introduceti prenume student: ');
grupa{i} = input('Introduceti grupa student: ');
160 MEDII DE CALCUL N INGINERIE ELECTRIC
medie(i) = input('Introduceti medie student: ');
i = i + 1;
end

if i~=1
[medieord I] = sort(medie);
numeord = nume(I);
prenumeord = prenume(I);
grupaord = grupa(I);

for k=1:length(medie)
situatie{k, 1} = numeord{length(medie)-k+1};
situatie{k, 2} = prenumeord{length(medie)-k+1};
situatie{k, 3} = grupaord{length(medie)-k+1};
situatie{k, 4} = medieord(length(medie)-k+1);
end
situatie
end

Lansarea n execuie a fiierului de tip script lista.m conduce la rezultate similare cu cele
prezentate mai jos. n urma introducerii interactive a datelor programul afieaz lista
studenilor n ordinea descresctoare a mediilor.

Introduceti nume student: 'Popescu'
Introduceti prenume student: 'Ion'
Introduceti grupa student: '111IE'
Introduceti medie student: 9.2
Introduceti nume student: 'Ionescu'
Introduceti prenume student: 'George'
Introduceti grupa student: '111IE'
Introduceti medie student: 8.9
Introduceti nume student: 'Stanescu'
Introduceti prenume student: 'Cristian'
Introduceti grupa student: '111IE'
Introduceti medie student: 9.7
Introduceti nume student: ' '
situatie =
'Stanescu' 'Cristian' '111IE' [9.7000]
'Popescu' 'Ion' '111IE' [9.2000]
'Ionescu' 'George' '111IE' [8.9000]
MEDII DE CALCUL N INGINERIE ELECTRIC


161
APLICAIA 42:
Calculai valorile curenilor I
1
, I
2
, I
3
, I
4
, I
5
folosind teoremele lui Kirchoff i operaiile cu
matrice din MATLAB. Pentru rezolvare s se creeze fiierul script kirc5.m care s cear
interactiv utilizatorului valorile rezistenelor R1, R2, R3 i R4 i ale tensiunilor E1, E2 i E3.
Cele 5 ecuaii punei-le sub forma [R]*[I]=[E], unde [R] reprezint o matrice cunoscut de
coeficieni de dimensiune 5x5, [I] reprezint un vector coloan necunoscut care conine cei 5
cureni, iar [E] reprezint un vector coloan cunoscut. Rezolvai sistemul de ecuaii prin
dou metode distincte i afiai rezultatele.


Se scriu ecuaiile lui Kirchoff corespunztoare circuitului studiat:

I1 - I2 + I5 = 0
- I3 + I4 + I5 = 0
R1I1 + R2I2 = E1
R2I2 + R3I3 = E2
R3I3 + R4I4 = E3

Sistemul de ecuaii trebuie pus sub forma matriceal [R][I] = [U] ca mai jos:

1I1 - 1I2 + 0I3 + 0I4 + 1I5 = 0
0I1 + 0I2 - 1I3 + 1I4 + 1I5 = 0
R1I1 + R2I2 + 0I3 + 0I4 + 0I5 = E1
0I1 + R2I2 + R3I3 + 0I4 + 0I5 = E2
0I1 +0I2 + R3I3 + R4I4 + 0I5 = E3

E1
R1 R2 R3
E2
I
1
I
2
I
3

E3
R4
I
4

I
5

I
5

162 MEDII DE CALCUL N INGINERIE ELECTRIC
adic sub forma:
|
|
|
|
|
|

\
|
=
|
|
|
|
|
|

\
|

|
|
|
|
|
|

\
|

3
2
1
0
0
5
4
3
2
1
0 4 3 0 0
0 0 3 2 0
0 0 0 2 1
1 1 1 0 0
1 0 0 1 1
E
E
E
I
I
I
I
I
R R
R R
R R


Folosind MATLAB Editor se creaz n directorul curent fiierul script kirc5.m ce conine
urmtoarele comenzile MATLAB:

R1 = input('Rezistenta 1: ');
R2 = input('Rezistenta 2: ');
R3 = input('Rezistenta 3: ');
R4 = input('Rezistenta 4: ');
E1 = input('Tensiunea 1: ');
E2 = input('Tensiunea 2: ');
E3 = input('Tensiunea 3: ');
R = [1 -1 0 0 1; 0 0 -1 1 1; R1 R2 0 0 0; 0 R2 R3 0 0; 0 0 R3 R4 0];
U = [0; 0; E1; E2; E3];
I = R\U
I = inv(R)*U

Apelnd programul kirc5.m cu parametrii de mai jos, MATLAB va calcula curenii prin
cele 5 laturi ale circuitului electric.

kirc5
Rezistenta 1: 1
Rezistenta 2: 2
Rezistenta 3: 3
Rezistenta 4: 4
Tensiunea 1: 10
Tensiunea 2: 20
Tensiunea 3: 30

I =
3.2000
3.4000
4.4000
4.2000
0.2000

I =
3.2000
3.4000
4.4000
4.2000
0.2000
MEDII DE CALCUL N INGINERIE ELECTRIC


163
Prin ambele metode se obin aceleai rezultate. Prin urmare valorile celor cinci cureni sunt:
I1 = 3.2 A
I2 = 3.4 A
I3 = 4.4 A
I4 = 4.2 A
I5 = 0.2 A
164 MEDII DE CALCUL N INGINERIE ELECTRIC


7. CALCULE NUMERICE CU POLINOAME

n acest capitol se prezint funciile MATLAB de calcul polinomial pentru evaluarea i
generarea polinoamelor cnd se cunosc rdcinile, pentru calculul derivatei polinoamelor i
descompunerea acestora n fracii simple.
Polinomul este o funcie cu o singur variabil, care poate fi exprimat sub urmtoarea
form general:

F(x) = a
1
x
n
+ a
2
x
n-1
+ a
3
x
n-2
+ ... + a
n
x
1
+ a
n+1
(7.1)

unde x este variabila, iar a
1
, a
2
, ... , a
n
sunt coeficienii polinomului. Gradul polinomului este
egal cu cea mai mare valoare a exponentului.
Reprezentarea MATLAB a unui polinom const ntr-un vector linie care conine
coeficienii n ordinea descresctoare a puterii variabilei. Coeficienii polinomului au indicii
de la 1 la n+1. Spre exemplu reprezentarea MATLAB a polinomului:

F(x) = x
4
+ x
2
+ 2x + 3, (7.2)

este dat de vectorul rnd:

F = [1 0 1 2 3] (7.3)

7.1. Evaluarea polinoamelor

MATLAB pune la dispoziia utilizatorului mai multe modaliti de evaluare a
polinoamelor. Cea mai simpl este evaluarea pentru o singur valoare a variabilei, ca n
exemplul de mai jos. Presupunem c polinomul ce urmeaz a fi evaluat este f(x) = x
4
+ x
2
+
2x + 3.

x = 1; (7.4)
f = x^4 + x^2 + 2*x + 3

Rezultatul MATLAB al operaiilor de mai sus este 7.
A doua metod const n evaluarea polinomului n mai multe puncte. n acest caz avem
de a face cu operaii cu tablouri. Operaiile n acest caz sunt de tip element cu element i
presupun adugarea unui punct naintea operatorilor nmulire, mprire sau ridicare la
putere. De pild evaluarea polinomului f n punctele -1, 0, 1, 2 presupune utilizarea
urmtoarei secvene MATLAB.

x = [-1 0 1 2] ; (7.5)
f = x.^4 + x.^2 + 2*x + 3

A treia metod de evaluare a polinoamelor const n utilizarea funciei polyval cu
urmtoarea sintax MATLAB:
MEDII DE CALCUL N INGINERIE ELECTRIC


165

f = polyval(pf, x), (7.6)

unde pf = [1 0 1 2 3] este polinomul f(x) = x
4
+ x
2
+ 2x + 3 declarat n sintaxa MATLAB,
iar x conine punctele n care se evalueaz polinomul, acesta putnd fi exprimat sub forma
unui scalar, vector sau matrice. De pild pentru a evalua polinomul f n punctele -1, 0, 1, 2
se utilizeaz secvena de comenzi MATLAB de mai jos:

pf = [1 0 1 2 3]; (7.7)
x = [-1 0 1 2] ;
f = polyval(pf, x)

Rezultatul MATLAB este urmtorul:

f = [3 3 7 27] (7.8)

7.2. Operaii aritmetice cu polinoame

7.2.1. Adunarea i scderea. S presupunem dou polinoame f(x) i g(x) avnd
coeficienii nregistrai n vectorii rnd f i g conform cu sintaxa MATLAB. Operaiile de
adunare i scdere n MATLAB presupun c lungimile vectorilor f i g s fie identice i
egale cu lungimea vectorului corespunztor polinomului de ordin mai mare. Coeficienii
nuli ai celor dou polinoame sunt adugai explicit n vectorii corespunztori. De pild s
presupunem c:

f(x) = x
4
+ x
2
+ 2x + 3 (7.9)
g(x) = x
2
2
s(x) = f(x) + g(x)
d(x) = f(x) g(x)

Dimensiunea vectorilor f i g va fi de 5 i anume:

f = [1 0 1 2 3] (7.10)
g = [0 0 1 0 -2]

Polinoamele corespunztoare vectorilor de mai sus sunt echivalente cu:

f(x) = x
4
+ 0x
3
+ x
2
+ 2x + 3 (7.11)
g(x) = 0x
4
+ 0x
3
+ x
2
+ 0x 2

Pentru a calcula polinoamele s(x) i d(x) tastai secvena de comenzi MATLAB:

f = [1 0 1 2 3] (7.12)
g = [0 0 1 0 -2]

166 MEDII DE CALCUL N INGINERIE ELECTRIC
s = f + g
d = f - g

Rspunsul MATLAB este:

s = [1 0 2 2 1] (7.13)
d = [1 0 0 2 5]

ceea ce corespunde urmtoarelor polinoame:

s(x) = x
4
+2x
2
+ 2x + 1 (7.14)
d(x) = x
4
+ 2x + 5

7.2.2. nmulirea i mprirea. nmulirea unui polinom cu un scalar este echivalent
cu nmulirea coeficienilor acelui polinom cu acel scalar. nmulirea a dou polinoame este
echivalent operaiei de convoluie, realizat cu ajutorul funciei MATLAB conv care se
apeleaz cu sintaxa:

p = conv(f, g) (7.15)

unde f i g sunt doi vectori rnd ce conin coeficienii celor dou polinoame exprimate n
sintaxa MATLAB, iar c reprezint vectorul coeficienilor polinomului rezultat prin operaia
de nmulire p(x) = f(x)g(x).
Operaia de mprire a dou polinoame este echivalent unei operaii de deconvoluie
realizat apelnd funcia MATLAB deconv cu sintaxa:

[c r] = deconv(f, g) (7.16)

unde f i g sunt doi vectori rnd ce conin coeficienii celor dou polinoame exprimate n
sintaxa MATLAB, iar c i r reprezint vectorii coeficienilor polinoamelor ct i rest
rezultate prin operaia de mprire f(x) = c(x)g(x) + r(x).
Pentru exemplificarea operaiilor de nmulire i mprire s considerm polinoamele:

f(x) = x
2
- 2x - 3 (7.17)
g(x) = x +1

Se vor calcula polinoamele obinute prin nmulirea i mprirea celor dou polinoame f
i g, i nume p(x) = f(x)g(x) i d(x) = f(x)/g(x), folosind urmtoarea secven MATLAB:

f = [1 -2 -3] (7.18)
g = [1 1]
p = conv(f, g)
[c r] = deconv(f, g)


Rezultatele MATLAB sunt:
MEDII DE CALCUL N INGINERIE ELECTRIC


167

p = [1 -1 -5 -3] (7.19)
c = [1 -3]
r = [0 0 0],

ceea ce corespunde polinoamelor:

produs p(x) = x
3
x
2
5x 3 (7.20)
ct c(x) = x 3
rest r(x) = 0

7.3. Descompunerea n fracii simple

Descompunerea n fracii simple presupune scrierea raportului a dou polinoame ca sum
de fracii cu polinoame de ordinul I:

F(x)/G(x) = r(1)/(x- p(1)) + r(2)/(x- p(2)) + ... + r(n)/(x- p(n)) + k(x) (7.21)

Dac polul p(i) este de ordinul m, descompunerea conine termeni de forma:

r(i)/(x- p(i)) + r(i+1)/(x- p(i))
2
+ ... + r(i+m-1)/(x- p(i))
m
(7.22)

Funcia MATLAB care efectueaz operaii de descompunere n fracii simple este
residue care se apeleaz cu sintaxa:

[r, p, k] = residue(F, G) (7.23)

unde F i G reprezint vectorii rnd ai polinoamelor numitor i numrtor, iar r, p i k
vectorii coloan ai reziduurilor, polilor i termenilor liberi.
Dac funcia residue se apeleaz cu sintaxa:

[F, G] = residue(r, p, k) (7.24)

aceasta returneaz coeficienii polinoamelor F i G, numrtor i numitor, al cror raport are
reziduurile r, polii p i termenii liberi k.
Pentru exemplificare se va descompune n fracii simple expresia:

F(x)/G(x) = (x
3
+ 2x
2
+ 2)/(x
2
+1) (7.25)

Folosind secvena de comenzi MATLAB:

F = [1 2 0 2]; (7.26)
G = [1 0 1];
[r, p, k] = residue(F, G)

168 MEDII DE CALCUL N INGINERIE ELECTRIC
Se obin urmtoarele rezultate MATLAB:

r = [-0.5 -0.5] (7.27)
p = [ i -i]
k = [1 2]

care corespund urmtoarei descompuneri:

F(x)/G(x) = -0.5/(x - i) - 0.5/(x + i) + x +2 (7.28)

7.4. Calculul derivatei

Derivata unui polinom n MATLAB se calculeaz folosind funcia polyder care se
apeleaz cu sintaxa:

D = polyder(F) (7.29)

F reprezint vectorul rnd al coeficienilor polinomului, n ordinea descresctoare a
puterilor variabilei, iar D este vectorul rnd al coeficienilor polinomului derivat.
Apelat cu sintaxa:

D = polyder(F, G) (7.30)

Funcia polyder returneaz n vectorul D coeficienii derivatei polinomului produs F
.
G:

D(x) = [F(x)G(x)] = F(x)G(x) + F(x)G(x) (7.31)

Apelat cu sintaxa:

[D, E] = polyder(F, G) (7.32)

Funcia polyder returneaz n vectorii D i E coeficienii numratorului i numitorului
derivatei raportului polinoamelor D/E:

D(x)/E(x) = [F(x)/G(x)] = [F(x)G(x) - F(x)G(x)]/G(x)
2
(7.33)

Pentru exemplificare s considerm polinoamele:

F(x) = x
3
+ 2x
2
+ 2 (7.34)
G(x) = x
2
+1

Pentru a calcula derivatele urmtoare:

Fd(x) = F(x) (7.35)
Gd(x) = G(x)
MEDII DE CALCUL N INGINERIE ELECTRIC


169
FGd(x) = [F(x)G(x)]
AB(x) = A(x)/B(x) = [F(x)/G(x)],

se va face apel la urmtoarea secven de comenzi MATLAB:

F = [1 2 0 2]; (7.36)
G = [1 0 1];
Fd = polyder(F);
Gd = polyder(G);
FGd = polyder(F, G);
[A, B] = polyder(F, G);

Se vor obine urmtoarele rezultate MATLAB:

Fd = [3 4 0] (7.37)
Gd = [2 0]
FGd = [5 8 3 8 0]
A = [1 0 3 0 0]
B = [1 0 2 0 1]

7.5. Calculul rdcinilor

MATLAB permite prin intermediul unor funcii speciale calculul rdcinilor unui
polinom, respectiv calculul coeficienilor unui polinom cnd se cunosc rdcinile acestuia.
Dac funcia f(x) este o funcie polinomial de gradul n, atunci f(x) = 0 are n rdcini,
care pot fi reale sau complexe. n cazul n care coeficienii funciei polinomiale sunt numere
reale, rdcinile complexe sunt grupate n perechi complex conjugate.
Funcia MATLAB roots determin rdcinile polinoamelor i se apeleaz cu sintaxa:

r = roots(f) (7.38)

Funcia MATLAB poly determin coeficienii unui polinom ale crui rdcini sunt
cunoscute i se apeleaz cu sintaxa:

f = poly(r) (7.39)

n ambele situaii f este un vector rnd care conine coeficienii polinomului, n ordine
descresctoare a puterilor variabilei, iar r este un vector coloan care conine rdcinile
polinomului.
Funciile MATLAB roots i poly sunt funcii reciproce efectund trecerea de la
coeficieni la rdcini sau de la rdcini la coeficieni.
Pentru exemplificare se consider polinomul F(x) = x
3
+ 2x
2
+ 2 i se vor calcula
rdcinile acestuia folosind urmtoarea secven de instruciuni MATLAB:

F = [1 2 0 2] (7.40)
R = roots(F)
170 MEDII DE CALCUL N INGINERIE ELECTRIC

Rezultatul MATLAB este:

R = [-2.3593 0.1797 + 0.9030i 0.1797 - 0.9030i] (7.41)

n mod similar pentru a determina polinomul caracterizat de rdcinile 1, -2, 0 se face
apel la urmtoarea secven de instruciuni MATLAB:

R = [1; - 2; 0] (7.42)
F = poly(R)

Rezultatul MATLAB este:

F = [1 1 -2 0] (7.43)

Ceea ce corespunde polinomului f(x) = x
3
+ x
2
- 2x.


7.6. Aplicaii numerice


APLICAIA 43:
S se efectueze operaiile de adunare, scdere, nmulire i mprire ale polinoamelor:
f(x) = 3x
4
+ 2x + 3
g(x) = x
3
1

Se folosesc comenzile MATLAB:

f = [3 0 0 2 3];
g = [0 1 0 0 -1];
g1 = [1 0 0 -1];
s = f + g
d = f - g
p = conv(f, g)
[c r] = deconv(f, g1)

n urma lansrii comenzilor de mai sus se obin rezultatele:

s = 3 1 0 2 2
d = 3 -1 0 2 4
p = 0 3 0 0 -1 3 0 -2 -3
c = 3 0
r = 0 0 0 5 3

Prin urmare polinomul sum este: s = 3X
4
+ X
3
+ 2X + 2
MEDII DE CALCUL N INGINERIE ELECTRIC


171
Polinomul diferen este: d = 3X
4
- X
3
+ 2X + 4
Polinomul produs este: p = 3X
7
- X
4
+ 3X
3
- 2X - 3
Adic polinomul ct i rest sunt: c = 3X, respectiv r = 5X + 3

APLICAIA 44:
S se descompun n fracii simple expresia:
f(x)/g(x) = (3x
4
+ 2x + 3)/( x
3
1)

Se folosesc comenzile MATLAB:

F = [3 0 0 2 3];
G = [1 0 0 -1];
[r, p, k] = residue(F, G)

n urma lansrii comenzilor de mai sus se obin rezultatele:

r = 2.6667
-1.3333 - 0.5774i
-1.3333 + 0.5774i

p = 1.0000
-0.5000 + 0.8660i
-0.5000 - 0.8660i

k = 3 0

Acest rezultat nseamn c raportul F(x)/G(x) se descompune sub forma:

F(x)/G(x) = r(1)/(x - p(1)) + r(2)/(x - p(2)) + r(3)/(x - p(3)) + k(x)

APLICAIA 45:
S se calculeze derivata polinoamelor:
f(x) = 3x
4
+ 2x + 3
g(x) = x
3
1
f(x)g(x)
f(x)/g(x)

Se folosesc comenzile MATLAB:

f = [3 0 0 2 3];
g = [1 0 0 -1];
fd = polyder(f)
gd = polyder(g)
fgd = polyder(f, g)
[a, b] = polyder(f, g)
172 MEDII DE CALCUL N INGINERIE ELECTRIC
n urma lansrii comenzilor de mai sus se obin rezultatele:

fd = 12 0 0 2
gd = 3 0 0
fgd = 21 0 0 -4 9 0 -2
a = 3 0 0 -16 -9 0 -2
b = 1 0 0 -2 0 0 1

Acest rezultat nseamn c:
derivata polinomului f este: fd (x) = 12x
3
+ 2
derivata polinomului g este: gd (x) = 3x
2

derivata polinomului f
.
g este: fgd (x) = 21x
6
- 4x
3
+ 9x
2
- 2
derivata polinomului f/g este: fpg (x) = (3x
6
- 16x
3
- 9x
2
- 2)/(x
6
-2x
3
+1)

APLICAIA 46:
Folosind funcia MATLAB de calcul al rdcinilor polinoamelor s se creeze n directorul
curent un fiier script care s calculeze soluiile ecuaiei: 1/x
2
+x + 3 = 0.

Se folosesc comenzile MATLAB:

f = [1 3 0 1];
r = roots(f)

Rezultatul MATLAB este:

r = [-3.1038 0.0519 + 0.5652i 0.0519 - 0.5652i]'







MEDII DE CALCUL N INGINERIE ELECTRIC


173

8. FUNCII MATLAB DE INTERPOLARE I APROXIMARE A DATELOR

Interpolarea unui set discret de date [x
i
, y
i
] presupune determinarea unei funcii f(x) astfel
nct f(x
i
) = y
i
, n vederea completrii setului de date n orice alt punct x
0
x
i
. Spre
exemplu, fie date punctele de coordonate (x
1
, y
1
) i (x
2
, y
2
). Se cere estimarea valorii y(x), n
cazul n care x
1
<x<x
2
. Dac punctele sunt unite prin printr-o dreapt, interpolarea se
numete liniar, iar dac sunt unite printr-un polinom de gradul trei, interpolarea este de tip
spline cubic.
Un alt aspect const n aproximarea unui set de date cu o funcie care constituie cea mai
bun aproximare. n acest caz nu este neaprat necesar ca funcia determinat s treac prin
toate punctele date, ns trebuie s fie cea mai bun aproximare dup un criteriu de eroare
impus. n contextul celor precizate metoda celor mai mici ptrate furnizeaz cea mai bun
aproximare n sensul minimizrii sumei ptratelor distanelor dintre punctele date i funcia
de aproximare.

8.1. Cutarea datelor n tabele

Prin cutarea datelor n tabele se nelege operaia prin care o anumit valoare este citit
dintr-un tabel predefinit. Aceste operaii de cutare sunt utile n multe situaii practice, de
pild n proiectare cnd trebuie efectuat o cutare automat a anumitor date de catalog etc.

8.1.1. Cutarea n tabele unidimensionale. Cutarea datelor n tabele unidimensionale
poate fi efectuat utiliznd funcia table1, apelat cu sintaxa:

z = table1(tab, x) (8.1)

Tabelul tab din care se citesc datele trebuie organizat sub forma unei matrice care are n
prima coloan valorile lui x (abscisa ordonat cresctor), iar n coloanele 2:n+1 cele n
variabile cutate. Dac valoarea x se gsete ntre dou valori din prima coloan a tabelului
tab, funcia returneaz o valoare interpolat liniar.
n vederea exemplificrii se vor folosi funciile de interpolare MATLAB pentru citirea
valorii y corespunztoare lui x = 1 din tabelul unidimensional de mai jos, Tabel 8.1.

Tabel 8.1
x -5 -4 1 7
y 25 16 1 49

n acest scop se va crea matricea Tabel avnd prima coloan format din elementele lui x
ordonate cresctor, iar a doua coloan format din elementele lui y asociate cu x. Citirea
valorii lui y corespunztoare elementului x = 1 presupune secvena de comenzi MATLAB:

Tabel = [-5 -4 1 7; 25 16 1 49] (8.2)
Tabel = Tabel
y = table1(Tabel, -1)
174 MEDII DE CALCUL N INGINERIE ELECTRIC
Rezultatul MATLAB este: y = 7

Pentru a utiliza funcia table1, prima coloan a tabelului unidimensional din care se citesc
datele trebuie s fie monoton, iar valoarea lui x trebuie s fie cuprins ntre x
min
i x
max
.
Totui funcia table1 este pe cale de a fi scoas din limbajul MATLAB, n versiunile
viitoare aceasta urmnd a fi nlocuit de alte funcii mai performante.

8.1.2. Cutarea n tabele bidimensionale. Cutarea datelor n tabele bidimensionale
poate fi efectuat utiliznd funcia table2, apelat cu sintaxa:

z = table2(tab, x, y) (8.3)

Tabelul bidimensional tab din care se citesc datele trebuie s fie organizat ca o matrice
care are n prima coloan valorile lui x ordonate cresctor, iar n prima linie valorile lui y
ordonate cresctor. Celelalte elemente din tabel sunt valorile lui z asociate perechilor (x, y).
Elementul z(1, 1) = 0. Dac valorile x, respectiv y se gsesc ntre dou valori din prima
coloan sau linie a tabelului tab, funcia returneaz o valoare interpolat liniar.
Spre exemplificare s considerm cazul n care se dorete evaluarea valorii z
corespunztoare perechii (x, y) = (2.3, 3.1) din tabelul bidimensional de mai jos,
Tabel 8.2.

Tabel 8.2
x\y 1 2 3 4
1 2 4 6 8
2 4 16 36 64
3 8 64 216 512

Secvena MATLAB de cutare const n primul rnd n crearea matricei tab care s
ndeplineasc condiiile:
Elementul din prima linie i prima coloan s fie zero, tab(1, 1) = 0,
Prima linie, mai puin primul element s conin elementele lui y ordonate cresctor,
tab(1, 2:n+1) = y(1:n),
Prima coloan, mai puin primul element s conin elementele lui x ordonate cresctor,
tab(2:n+1, 1) = x(1:n),
Celelalte elemente ale matricei s reprezinte elementele asociate perechilor (x, y).
Prin urmare matricea tab se definete astfel:

tab =
(
(
(
(

512 216 64 8 3
64 36 16 4 2
8 6 4 2 1
4 3 2 1 0
(8.4)

Secvena MATLAB este urmtoarea:

tab = [0, 1, 2, 3, 4; 1, 2, 4, 6, 8; 2, 4, 16, 36, 64; 3, 8, 64, 216, 512] (8.5)
z = table2(tab, 2.3, 3.1)
MEDII DE CALCUL N INGINERIE ELECTRIC


175
Se obine rezultatul:

z = 100.84 (8.6)

Pentru a utiliza funcia table2, prima linie i prima coloan a tabelului bidimensional din
care se citesc datele trebuie s fie monotone. Valorile utilizate pentru x trebuie s fie
cuprinse ntre prima i ultima valoare din prima coloana (ntre x
min
i x
max
) iar cele pentru y
s fie cuprinse ntre prima i ultima valoare din prima linie (ntre y
min
i y
max
).

8.2. Interpolarea funciilor de o singur variabil

MATLAB pune la dispoziia utilizatorului trei tipuri de interpolari: liniar, spline cubic
i polinomial. n toate aceste cazuri se presupune c exist un set de date care reprezint
coordonatele (x
i
, y
i
). Obiectivul l constituie estimarea valorilor funciei f(x), pentru orice
punct x [x
1
, x
2
]. Curba de interpolare trece prin toate punctele care o definesc, legea de
interpolare ntre puncte putnd fi liniar, cubic sau polinomial. Valorile estimate prin
interpolare ntre punctele date depind de tipul de interpolare ales.

8.2.1. Interpolarea liniar. Dac se presupune c valoarea funciei ntre dou puncte x
1

i x
2
poate fi estimat printr-o linie dreapt, ca n Fig. 8.1, atunci valoarea funciei n orice
punct x situat ntre cele dou valori se deduce prin expresia:

y = f(x) = y
1
+ (x x
1
)(y
2
y
1
)/(x
2
x
1
) (8.7)



Fig. 8.1. Principiul interpolrii liniare.


Interpolarea liniar a funciilor de o singur variabil presupune utilizarea funciei table1
care se apeleaz cu sintaxa:

y = table1(tab, x) (8.8)

Primul argument al funciei este numele tabelului (de pild tab) ce conine datele care se
refer la coordonatele (x
i
, y
i
). Dac acesta este un fiier pe disc, atunci fiierul trebuie nti
ncrcat folosind funcia load.
x
1
x
2
x
y
2

y
1

y
x
f(x)
176 MEDII DE CALCUL N INGINERIE ELECTRIC
Al doilea argument se refer la valoarea (sau valorile) lui x pentru care se dorete
determinarea valorii (sau valorilor) interpolate. Datele din prima coloan a tabelului
(valorile lui x) trebuiesc aranjate n ordine cresctoare, iar valorile lui x trebuie s se
gseasc ntre prima i ultima valoare a primei coloane, n caz contrar MATLAB afieaz
un mesaj de eroare.
Dac tabelul din care se citesc datele conine mai mult de dou coloane, funcia table1
returneaz un vector linie cu N-1 elemente unde N reprezint numrul de coloane ale
tabelului. Fiecare valoare returnat este interpolat din coloana corespunztoare a datelor.

8.2.2. Interpolarea spline cubic. Curba obinut prin interpolare spline cubic este o
curb neted, definit de un set de polinoame de gradul trei. Curba pe poriuni, ntre fiecare
pereche de puncte este un polinom de gradul trei calculat astfel nct s conduc la tranziii
netede de la un polinom de gradul trei la altul. De pild ase puncte sunt conectate prin
intermediul a cinci curbe diferite de gradul trei, ce constituie o funcie neted ntre toate cele
ase puncte.
Curba de interpolare spline cubic se calculeaz cu funcia spline care se apeleaz cu
sintaxa:

yi = spline(x, y, xi) (8.9)

unde :
x i y sunt vectorii care conin abscisele i ordonatele datelor iniiale,
xi este un vector care conine noile abscise, de regul cu pas mai fin,
yi este vectorul returnat, asociat lui xi.

Spre exemplificare s considerm un reostat care se nclzete prin efect Joule, evoluia
n timp a temperaturii sale medii fiind prezentat n Tabelul 8.3.

Tabel 8.3
Teta [C] 20 60 120 200 300 430
Timp [sec.] 0 30 60 90 120 150

Pentru a calcula temperatura medie din 10 n 10 secunde, interpolat folosind funcia
MATLAB spline, se va urma setul de instruciuni de mai jos.

Timp = [0 30 60 90 120 150]; (8.10)
Teta = [20 60 120 200 300 430];
Timpn = 0:10:150;
Tetan = spline(Timp, Teta, Timpn)

Rezultatul MATLAB este urmtorul:

Tetan = [20.0000 31.1523 44.4774 60.0000 77.7449 97.7366 120.0000 144.5350
171.2428 200.0000 230.7819 263.9588 300.0000 339.3745 382.5514 430.0000] (8.11)

Reprezentarea grafic a celor dou tipuri de interpolri este prezentat n Fig. 8.2 i se
realizeaz folosind urmtoarea comand MATLAB:

plot(Timp, Teta,r-o, Timpn, Tetan) (8.12)
MEDII DE CALCUL N INGINERIE ELECTRIC


177


Fig. 8.2. Rezultatele numerice obinute prin interpolare liniar i spline.

8.2.3. Interpolarea prin metoda transformatei Fourier. Funcia MATLAB interpft
permite interpolarea datelor utiliznd metoda FFT (Fast Fourier Transform). Sintaxa
funciei este urmtoarea:

y = interpft(x, n) (8.13)

Funcia returneaz un vector y de lungime n obinut din vectorul x ce conine valorile
unei funcii periodice. Numrul n trebuie s fie mai mare dect numrul de elemente ale
vectorului x, iar rezultatul are o periodicitate circular dat de utilizarea Transformatei
Fourier.
De pild pentru a interpola cu pas dublu un set de date corespunztor funciei periodice
y = sin(2 k/8) se folosete urmtoarea secven de comenzi MATLAB. n final se evalueaz
diferena ntre valorile interpolate i valorile reale corespunztoare funciei y i se ploteaz
valorile n cele dou cazuri, Fig. 8.3. Diferenele ntre cele dou seturi de valori este foarte
mic.

k = 0:7; (8.14)
y = sin(2*pi*k/8);
yi = interpft(y, 16);
k1 = 0:15;
yr = sin(2*pi*k1/16);
err = max(abs(yr - yi));
plot(k1, yi, k1, yr, 'or');

178 MEDII DE CALCUL N INGINERIE ELECTRIC


Fig. 8.3. Interpolare prin metoda transformatei Fourier.

8.2.4. Interpolarea Hermite. Funcia MATLAB pchip poate realiza interpolarea datelor
folosind funcii polinomiale cubice de tip Hermite, pe poriuni. Sintaxa de apel este:

yi = pchip(x, y, xi) (8.15)

unde :
x i y sunt vectorii care conin abscisele i ordonatele datelor iniiale,
xi este un vector care conine noile abscise, de regul cu pas mai fin,
yi este vectorul returnat, asociat lui xi.

8.2.5. Interpolarea multipl. Funcia MATLAB interp1 poate realiza interpolarea
datelor dup o lege liniar, cubic sau spline cubic i se apeleaz cu sintaxa:

yi = interp1(x, y, xi, metoda); (8.16)

unde prin metoda se nelege unul din cuvintele cheie:
linear pentru interpolare liniar;
spline pentru interpolare spline cubic;
cubic pentru interpolare cubic;
nearest pentru interpolare de tipul cel mai apropiat vecin;
pchip' pentru interpolare Hermite cubic pe poriuni etc.
Funcia interp1 permite totodat i extrapolarea rezultatelor n cazul n care xi se extinde
dincolo de limitele inferioar sau superioar a vectorului x. n acest caz funcia se apeleaz
cu sintaxa:

yi = interp1(x, y, xi, 'metoda', 'extrap'); (8.17)


MEDII DE CALCUL N INGINERIE ELECTRIC


179
Toate regulile de interpolare presupun o ordonare monoton a vectorului x. n plus,
metoda cubic cere ca punctele pe axa x s fie egal distanate.
Dac y este o matrice cu numrul de linii egal cu cel al vectorului x i cu N coloane,
interp1 returneaz o matrice cu un numr de linii egal cu cel al vectorului xi i cu N
coloane.
Fiind dat setul de valori de mai jos, Tabel 8.4, se vor interpola valorile temperaturii Teta
din 10 n 10 secunde, folosind interpolare liniar, cubic i spline cubic.

Tabel 8.4
Teta [C] 20 60 120 200 300 430
Timp [sec.] 0 30 60 90 120 150

n acest sens se folosete secvena de comenzi MATLAB de mai jos.

Timp = [0 30 60 90 120 150]; (8.18)
Timpn = 0:10:150;
Teta = [20 60 120 200 300 430];
Tetal = interp1(Timp, Teta, Timpn, linear)
Tetas = interp1(Timp, Teta, Timpn, spline)
Tetac = interp1(Timp, Teta, Timpn, cubic)

Rezultatele grafice sunt prezentate n Fig. 8.4, n care se remarc similitudinea evident
ntre seturile de valori obinute prin interpolare liniar, cubic i spline cubic.



Fig. 8.4. Rezultatele interpolrii multiple.

8.3. Interpolarea funciilor de dou variabile

Interpolarea funciilor de dou variabile presupune utilizarea unor funcii MATLAB
special destinate unor astfel de calcule, cum ar fi interp2 i griddata.

180 MEDII DE CALCUL N INGINERIE ELECTRIC
8.3.1. Interpolarea multipl. Funcia interp2 permite interpolarea funciior de dou
variabile dup diferite legi i se apeleaz cu sintaxa:

zi = interp2(x, y, z, xi, yi,metoda) (8.19)

unde metoda poate fi unul din cuvintele cheie:
nearest pentru interpolare de tipul cel mai apropiat vecin;
linear pentru interpolare biliniar;
cubic pentru interpolare bicubic;
spline pentru interpolare spline cubic;
Metoda implicit de interpolare este cea liniar.
De pild pentru o interpolare spline a funciilor de dou variabile, funcia interp2 se
apeleaz cu sintaxa:

zi = interp2(x, y, z, xi, yi,spline) (8.20)

Funcia returneaz n matricea zi valorile interpolate corespunztoare lui xi i yi. Matricele x
i y specific punctele n care sunt date valorile lui z. Dac x i y sunt vectori, valorile
acestora trebuie s fie monotone i egal distanate ca cele obinute cu funcia meshgrid n
exemplul de mai jos:

[X, Y] = meshgrid(1:3, 10:14) (8.21)

X = (8.22)
1 2 3
1 2 3
1 2 3
1 2 3
1 2 3

Y = (8.23)
10 10 10
11 11 11
12 12 12
13 13 13
14 14 14

n cazul valorilor n afara intervalelor de definiie ale lui x i y se returneaz NaN n
matricea zi.
Apelat cu sintaxa :

zi = interp2(z, xi, yi), (8.24)

funcia interp2 subnelege c x=1:n i y=1:m unde [m, n] = size(z) i returneaz o matrice
zi cu dimensiunea m x n, ce reprezint interpolarea datelor din matricea z

Apelat cu sintaxa:


MEDII DE CALCUL N INGINERIE ELECTRIC


181
zi = interp2(z, k), (8.25)

funcia returneaz o matrice zi care expandeaz matricea z prin ntreeserea unei coloane i a
unei linii interpolate biliniar ntre cele existente, opernd recursiv de k ori. Prin urmare
pentru o matrice z cu dimensiunea 3 x 4 i pentru k = 2 rezult la prima interpolare matricea
zi cu dimensiunea 5 x 7, iar dup a doua interpolare o matrice de dimensiune 9 x 13. Prin
acest procedeu pasul devine de p = 2
k
ori mai fin.
Spre deosebire de funciile care citesc din tabele prin interpolare valorile precizate,
aceast funcie returneaz o matrice a tuturor valorilor interpolate.
Considernd de exemplu matricea:

A =
(
(
(

5 9 6 4
6 8 4 3
5 6 6 2
(8.26)

Interpolarea biliniar a matricei A presupune folosirea secvenei de comenzi MATLAB:

A = [2 6 6 5; 3 4 8 6; 4 6 9 5]; (8.27)
Ai = interp2(A, 2, linear)
A1 = interp2(A, 1, linear)
V = A1(4, 6)

Rspunsul MATLAB este V = 7.

8.3.2. Comparaie ntre metodele de interpolare. Pentru a compara rezultatele obinute
cu diverse metode de interpolare bidimensional s considerm o matrice de date de
dimensiune 7 x 7. Vom genera funcia peaks cu o rezoluie slab:

[x,y] = meshgrid(-3: 1: 3); (8.28)
z = peaks(x, y);
figure(1)
surf(x, y, z)



Fig. 8.5. Reprezentarea grafic a funciei peaks cu rezoluie slab.
182 MEDII DE CALCUL N INGINERIE ELECTRIC

Vom genera un mesh mai fin pentru interpolare.

[xi, yi] = meshgrid(-3: 0.25: 3); (8.29)

Vom interpola datele folosind metodelenearest, bilinear, bicubic:

zi1 = interp2(x, y, z, xi, yi, 'nearest'); (8.30)
zi2 = interp2(x, y, z, xi, yi, 'bilinear');
zi3 = interp2(x, y, z, xi, yi, 'bicubic');

Pentru comparaie vom trasa graficele, Fig. 8.6, obinute cu funciile surf i contour.

figure(2); (8.31)
subplot(2, 3, 1); surf(xi, yi, zi1);
subplot(2, 3, 2); surf(xi, yi, zi2);
subplot(2, 3, 3); surf(xi, yi, zi3);
subplot(2, 3, 4); contour(xi, yi, zi1);
subplot(2, 3, 5); contour(xi, yi, zi2);
subplot(2, 3, 6); contour(xi, yi, zi3);



Fig. 8.6. Rezultatele interpolrii bidimensionale multiple ale funciei peaks.

8.3.3. Interpolarea datelor pe un grid 2D. Aceast facilitate a MATLAB-ului
presupune interpolarea unui set de date funcie de dou variabile n nodurile unui grid
uniform 2D. Interpolarea datelor se efectueaz cu ajutorul funciei griddata care se apeleaz
cu sintaxa:

zi = griddata(x, y, z, xi, yi) (8.32)

MEDII DE CALCUL N INGINERIE ELECTRIC


183
Astfel valorile matricei zi corespund elementelor matricelor xi i yi. Matricea z asociaz
fiecrei perechi (x, y) cte o valoare z. Matricele xi i yi sunt de tipul celor obinute cu
funcia meshgrid i formeaz un grid uniform.
Apelat cu sintaxa:

[Xi, Yi, Zi] = griddata(x, y, z, xi, yi), (8.33)

funcia griddata ntoarce matricea interpolat Zi, ca mai sus, ns ntoarce i matricele Xi, Yi
formate din vectorul rnd xi i din vectorul coloan yi.

S considerm de pild funcia
2 2
y x
xe z

= calculat n 100 de puncte aleatoare ntre
[-2; 2].

x = rand(100, 1)*4-2; y = rand(100, 1)*4-2; (8.34)
z = x.*exp(-x.^2-y.^2);

Vectorii x, y, i z conin date neuniform distribuite. Vom defini un grid uniform i vom
interpola datele pe acest grid:

gr = -2:.25:2; (8.35)
[XI,YI] = meshgrid(gr, gr);
ZI = griddata(x, y, z, XI, YI);

Vom plota datele interpolate mpreun cu datele iniiale folosite la interpolare:

mesh(XI, YI, ZI), hold (8.36)
plot3(x, y, z, 'o'), hold off



Fig. 8.7. Interpolarea datelor pe un grid folosind funcia griddata.



184 MEDII DE CALCUL N INGINERIE ELECTRIC
8.4. Aproximarea polinomial prin metoda celor mai mici ptrate

Pentru ca aproximarea unui set de date de tip perechi (xi, yi), i = 1...n, printr-o curb, s
fie considerat cea mai bun, trebuie ca suma ptratelor distanelor de la fiecare punct la
curba aproximat (de tip polinomial) s fie minim. Lund n cosiderare aceast condiie
este posibil ca nici un punct al setului de date s nu se gseasc pe curba aproximat. Acest
aspect separ n mod evident noiunea de aproximare de cea de interpolare, n ultimul caz
toate punctele fiind obligatoriu situate pe curba respectiv.
n acest context aproximarea setului de date presupune identificarea coeficienilor a
i
ai
unui polinom de tipul:

p(x) = a
0
x
n
+ a
1
x
n-1
+ a
2
x
n-2
+ ... + a
n-1
x
1
+ a
n
(8.37)

Dac setul de date are n elemente toate datele se afl pe curba de aproximare. Pentru un
grad al polinomului mai mic dect lungimea setului de date, aproximarea este cu att mai
bun cu ct gradul polinomului este mai apropiat de lungimea setului de date. Utilizarea
unui polinom cu grad mai mare dect lungimea setului de date poate conduce la erori de
aproximare importante.
Determinarea celei mai bune aproximri a unui set de date (x, y), cu un polinom de ordin
n, presupune folosirea funciei MATLAB polyfit care se apeleaz cu sintaxa:

p = polyfit(x, y, n) (8.38)

Funcia polyfit gsete coeficienii polinomului p care aproximeaz cel mai bine setul de
date, n sensul celor mai mici ptrate.
n apelul funciei x i y sunt vectori coninnd datele ce trebuiesc aproximate i n este
ordinul polinomului rezultant.
S considerm de pild setul de date (x, y):

x = [1 2 3 4 5]; (8.39)
y = [5.5 43.1 128 290.7 498.4];

Un polinom de ordinul 3 care aproximeaz setul anterior de date este:

p = polyfit(x, y, 3) (8.40)

Rezultatul MATLAB este:

p = -0.1917 31.5821 -60.3262 35.3400 (8.41)

Pentru a calcula valorile polinomului rezultant obinut cu polyfit pe un set de date mai fin
i pentru a plota comparativ rezultatele urmai secvena MATLAB de mai jos.

x2 = 1:.1:5; (8.42)
y2 = polyval(p, x2);
plot(x, y, 'o', x2, y2)
grid on

MEDII DE CALCUL N INGINERIE ELECTRIC


185


Fig. 8.8. Aproximarea polinomial a setului de date folosind funcia polyval.

8.5. Interpolarea funciilor de trei variabile

MATLAB permite interpolarea funciilor de trei variabile prin utilizarea unor funcii
specifice cum ar fi interp3 i griddata3.

8.5.1. Interpolarea multipl. Funcia interp3 permite interpolarea funciior de trei variabile
dup diferite legi i se apeleaz cu sintaxa:

vi = interp3(x, y, z, v, xi, yi, zi, metoda) (8.43)

unde metoda poate fi unul din cuvintele cheie:
nearest pentru interpolare de tipul cel mai apropiat vecin;
linear pentru interpolare biliniar;
cubic pentru interpolare bicubic;
spline pentru interpolare spline cubic;
Metoda implicit de interpolare este cea liniar.

De pild pentru o interpolare spline a funciilor de trei variabile, funcia interp3 se
apeleaz cu sintaxa:

vi = interp3(x, y, z, v, xi, yi, zi, spline) (8.44)

Funcia returneaz n matricea vi valorile interpolate corespunztoare lui xi, yi i zi.
Matricele x, y i z specific punctele n care sunt date valorile lui v. Dac x, y i z sunt
vectori, valorile acestora trebuie s fie monotone i egal distanate ca cele obinute cu
funcia meshgrid. n cazul valorilor n afara intervalelor de definiie ale lui x, y i z se
returneaz NaN n matricea zi.
Apelat cu sintaxa :
186 MEDII DE CALCUL N INGINERIE ELECTRIC

vi = interp3(v, xi, yi, zi), (8.45)

funcia interp3 subnelege c x = 1:n, y = 1:m i z = 1:p unde [m, n, p] = size(v) i
returneaz o matrice vi cu dimensiunea m x n x p, ce reprezint interpolarea datelor din
matricea v.
Apelat cu sintaxa:

vi = interp3(v, k), (8.46)

funcia returneaz o matrice vi care expandeaz matricea v prin ntreeserea unor coloane i
linii interpolate liniar ntre cele existente, opernd recursiv de k ori.

Considernd de pild funcia MATLAB flow, prin interpolare se obin urmtoarele
rezultate.

[x, y, z, v] = flow(10); (8.47)
[xi, yi, zi] = meshgrid(.1:.25:10,-3:.25:3,-3:.25:3);
vi = interp3(x, y, z, v, xi, yi, zi);
slice(xi, yi, zi, vi, [6 9.5], 2, [-2 .2])



Fig. 8.9. Interpolarea multipl funciilor de 3 variabile.

8.5.2. Interpolarea datelor pe un grid 3D. Funcia griddata3 permite interpolarea datelor
funcie de trei variabile, pe un grid uniform 3D, dup diferite legi i se apeleaz cu sintaxa:

vi = griddata3(x, y, z, v, xi, yi, zi, metoda) (8.48)

MEDII DE CALCUL N INGINERIE ELECTRIC


187
8.6. Aplicaii numerice

APLICAIA 47:
Se d o bobin cu miez feromagnetic avnd caracteristicile prezentate n figura de mai
jos. Curba de magnetizare a miezului feromagnetic se d n tabelul de mai jos i va trebui
introdus ntr-un fiier text care s fie citit de programul MATLAB.

H [A/m] B [T]
0 0
500 0,2
1400 0,49
5000 1,08
8200 1,34
11500 1,53
15000 1,67
20000 1,84
26800 1,96
36700 2,03
57200 2,1

Aplicnd legea circuitului magnetic

= NI dl H pe conturul nchis s se determine


valorile induciei magnetice B
o
i a fluxului fascicular
o
n miezul magnetic (aceste valori
se consider constante pe toat regiunea miez magnetic).
Pentru rezolvarea problemei va trebui creat un fiier M care s cear interactiv
utilizatorului valorile celor trei parametri NI, L, i S. Pe baza acestora programul
MATLAB trebuie s apeleze funcia table1 care s fac interpolarea liniar a valorilor
B-H.
n final se va trasa grafic curba de magnetizare B-H cu evidenierea punctului H
o
-B
o
.

Folosind editorul Notepad se creaz fiierul b-h.txt care conine dependena B-H a miezului
magnetic al bobinei, ca mai jos.

0 0
500 0.2
1400 0.49
5000 1.08
8200 1.34
11500 1.53
15000 1.67
20000 1.84
26800 1.96
36700 2.03
57200 2.1


NI=10000 A
L=100 mm
S = 900 mm
2

188 MEDII DE CALCUL N INGINERIE ELECTRIC
n cazul n care fiierul deja este creat se trece peste aceast etap.
Se creaz n directorul curent fiierul bobina1.m ce conine instruciunile MATLAB:

bh = load('b-h.txt');
NI = input('Solenatie [A]: ');
L = input('Lungime miez [m]: ');
S = input('Arie miez [m**2]: ');
Hm = NI/4/L;
[Bm] = table1(bh, Hm);
disp('Bm = ');
disp(Bm);
Fi0 = Bm*S;
disp('Fi0 = ');
disp(Fi0);
plot(bh(:,1), bh(:,2), Hm, Bm, 'ro')
xlabel ('H [A/m]');
ylabel ('B [T]');

n urma apelului fiierului bobina1.m MATLAB va cere introducerea parametrilor NI, L, i
S i va rspunde cu urmtoarele mesaje, respectiv cu graficul din Fig. 8.10:

bobina1
Solenatie [A]: 10000
Lungime miez [m]: 0.1
Arie miez [m**2]: 900*1e-6
Bm = 1.9282
Fi0 = 0.0017



Fig. 8.10. Interpolarea liniar a curbei de magnetizare B-H.


Deci inducia n miez este Bm = 1.9282 T iar fluxul fascicular este Fi0 = 0.0017 Wb.
MEDII DE CALCUL N INGINERIE ELECTRIC


189
APLICAIA 48:
S se reia aplicaia anterioar dar folosind pentru interpolare funcia MATLAB spline.

Considerndu-se fiierul b-h.txt care conine dependena B-H a miezului magnetic al
bobinei deja creat se creaz n directorul curent fiierul bobina2.m ce conine instruciunile
MATLAB:

bh = load('b-h.txt');
NI = input('Solenatie [A]: ');
L = input('Lungime miez [m]: ');
S = input('Arie miez [m**2]: ');
Hm = NI/4/L;
[Bm] = spline(bh(:, 1), bh(:, 2), Hm);
disp('Bm = ');
disp(Bm);
Fi0 = Bm*S;
disp('Fi0 = ');
disp(Fi0);

n urma apelului fiierului bobina2.m MATLAB va cere introducerea parametrilor NI, L, i
S i va rspunde cu:

bobina2
Solenatie [A]: 10000
Lungime miez [m]: 0.1
Arie miez [m**2]: 900*1e-6

Bm = 1.9382
Fi0 = 0.0017

Deci inducia n miez este Bm = 1.9382 T iar fluxul fascicular este Fi0 = 0.0017 Wb.
Valorile sunt foarte apropiate de cele obinute cu funcia de interpolare table1.

APLICAIA 49:
S se interpoleze cu pas de 500 A/m curba de magnetizare B-H dat n tabelul alturat,
folosind interpolarea liniar, cubic i spline cubic. S se traseze pe acelai grafic
curba iniial i curbele obinute prin interpolare.

H [A/m] B [T]
0 0
500 0,2
1400 0,49
5000 1,08
8200 1,34
11500 1,53
15000 1,67
190 MEDII DE CALCUL N INGINERIE ELECTRIC
20000 1,84
26800 1,96
36700 2,03
57200 2,1

Considerndu-se fiierul b-h.txt care conine dependena B-H a miezului magnetic al
bobinei deja creat se creaz n directorul curent fiierul interpolare_m.m ce conine
instruciunile MATLAB:

bh = load('b-h.txt');
h1 = 0:500:57200;
bl = interp1(bh(:, 1), bh(:, 2), h1, 'linear')
b2 = interp1(bh(:, 1), bh(:, 2), h1, 'spline')
b3 = interp1(bh(:, 1), bh(:, 2), h1, 'cubic')
plot(bh(:, 1), bh(:, 2), 'o', h1, b1, h1, b2, h1, b3)
xlabel ('H [A/m]');
ylabel ('B [T]');

n urma lansrii n execuie a fiierului interpolare_m.m se obine graficul:



Fig. 8.11. Interpolarea multipl a curbei de magnetizare B-H.

APLICAIA 50:
S se interpoleze funcia
2 2
y x
e z

= n intervalul [-2; 2] calculat n 50 de puncte
aleatoare i s se reprezinte grafic datele interpolate mpreun cu datele iniiale folosite
la interpolare.
MEDII DE CALCUL N INGINERIE ELECTRIC


191
Se folosesc comenzile MATLAB:

gr = -2:.25:2;
[XI,YI] = meshgrid(gr, gr);
x = rand(100,1)*4-2; y = rand(100, 1)*4-2;
z = exp(-x.^2-y.^2);
ZI = griddata(x, y, z, XI, YI);
mesh(XI, YI, ZI), hold on;
plot3(x, y, z, 'o'), hold off;

MATLAB va afia graficul urmtor:



Fig. 8.12. Interpolarea funciei
2 2
y x
e z

= calculat n 50 de puncte aleatoare.

APLICAIA 51:
Aproximai cu polinoame de gradele {0, 1, 2, 3, 4, 5, 6} setul de date din tabelul de mai
jos. S se traseze pe acelai grafic, cu pas de dx=0.1 rezultatele obinute, evideniind setul
de date iniiale.

X Y
1 5.5
2 43.1
3 128
4 290.7
5 200

Se folosete setul de comenzi MATLAB de mai jos:
192 MEDII DE CALCUL N INGINERIE ELECTRIC

x = [1 2 3 4 5];
y = [5.5 43.1 128 290.7 290];
p0 = polyfit(x, y, 0);
p1 = polyfit(x, y, 1);
p2 = polyfit(x, y, 2);
p3 = polyfit(x, y, 3);
p4 = polyfit(x, y, 4);
p5 = polyfit(x, y, 5);
p6 = polyfit(x, y, 6);
xn = 1: 0.1: 5;
y0 = polyval(p0, xn);
y1 = polyval(p1, xn);
y2 = polyval(p2, xn);
y3 = polyval(p3, xn);
y4 = polyval(p4, xn);
y5 = polyval(p5, xn);
y6 = polyval(p6, xn);

plot(x, y, 'o', xn, y0, xn, y1, xn, y2, xn, y3, xn, y4, xn, y5, xn, y6);
grid on;

n urma lansrii comenzilor MATLAB va trasa graficul din Fig. 8.13.



Fig. 8.13. Aproximarea polinomial a setului de date specifice Aplicaiei 51.
MEDII DE CALCUL N INGINERIE ELECTRIC


193

9. DERIVAREA I INTEGRAREA NUMERIC A FUNCIILOR

Derivarea i integrarea sunt operaii matematice fundamentale utilizate la rezolvarea unui
mare numr de probleme din inginerie i tiin. n anumite situaii soluiile analitice sunt
dificil sau chiar cu neputin de obinut, n asemenea cazuri fiind necesar aplicarea
metodelor de derivare i integrare numeric.

9.1. Derivarea numeric

Derivata unei funcii f(x) reprezint viteza de variaie a funciei n raport cu variabila x.
Derivata este definit prin raportul dintre variaia funciei f(x), notat cu df(x) i variaia lui
x, notat cu dx:

f(x) = df(x)/dx (9.1)

Interpretarea geometric a derivatei ntr-un punct este dat de panta tangentei la graficul
funciei n punctul considerat, Fig. 9.1.












Fig. 9.1. Interpretarea geometric a derivatei. Fig. 9.2. Minime locale i globale.

Punctele cu derivat nul (puncte critice) pot reprezenta fie o regiune orizontal a
funciei, fie un punct de maxim sau minim local sau global al funciei, Fig. 9.2. Dac
derivata a doua ntr-un punct critic este pozitiv, atunci valoarea funciei n punctul
respectiv este un minim local, iar dac derivata a doua n punctul critic este negativ, atunci
valoarea funciei n acel punct reprezint un maxim local.
Derivarea numeric poate amplifica micile erori conducnd astfel la o deprtare
semnificativ de soluia analitic.

9.1.1. Aproximarea derivatelor prin diferene finite. Aproximarea derivatei de ordinul
I n punctul x
k
poate fi efectuat folosind aproximarea prin diferene finite regresive,
progresive sau centrate, Fig 9.3:


f(x)

x b a
f(a)
0

f(x)

x
b
Maxim global
0
Maxim local
Minim local
194 MEDII DE CALCUL N INGINERIE ELECTRIC
(a) diferene finite regresive
1
1 '
) ( ) (
) (

k k
k k
x x
x f x f
x f (9.2)

(b) diferene progresive
k k
k k
x x
x f x f
x f

+
+
1
1 '
) ( ) (
) ( (9.3)

(c) diferene centrate
1 1
1 1 '
) ( ) (
) (
+
+

k k
k k
x x
x f x f
x f (9.4)














a) b)












c)

Precizia acestor estimri depinde de distana dintre punctele utilizate pentru calcul, o
distan mai mic conducnd n general la o estimare mai precis a derivatei.

9.1.2. Aproximarea numeric a derivatelor. Aproximarea derivatelor poate fi efectuat
folosind funcia MATLAB diff. Aceast funcie evalueaz diferenele dintre elementele
succesive ale unui vector sau dintre elementele unei coloane ale unei matrice i se apeleaz
cu una din sintaxele:

Y = diff(X) (9.5)
Y = diff(X, n)

f(x)

x b
x
k

f(x
k-1
)
0
f(x
k
)
f(x
k+1
)
x
k+1
x
k-1


x b
x
k

f(x
k-1
)
0
f(x
k
)
f(x
k+1
)
x
k+1
x
k-1


f(x)
Fig. 9.3. Aproximarea numeric a
derivatelor prin diferene finite.
a) diferene regresive;
b) diferene progresive;
c) diferene centrate;


x b x
k

f(x
k-1
)
0
f(x
k
)
f(x
k+1
)
x
k+1
x
k-1


f(x)
MEDII DE CALCUL N INGINERIE ELECTRIC


195
Dac X este vectorul X=[X(1), X(2), ..., X(n)], rezultatul apelului funciei:

Y= diff(X) (9.6)

este un vector ce conine diferenele dintre elementele succesive ale vectorului X, i anume:

Y=[X(2)-X(1), ..., X(n)-X(n-1)] (9.7)

Lungimea vectorului Y este mai mic cu un element dect lungimea vectorului X. Dac X
este o matrice, diferenele se calculeaz pe fiecare coloan prin scderea elementului curent
din linia imediat superioar, conform relaiei :

Y = diff(X) (9.8)

Rezultatul apelului funciei este matricea:

Y= X(2:m,:)- X(1:m-1,:) (9.9)

Unde m reprezint numrul de linii ale matricei X.

Apelat cu argumentul n, funcia diff returneaz diferena de ordinul n a vectorului X. De
pild diferenele de ordinul I i II ale vectorului x = [1 2 3 4 5] se calculeaz cu sintaxa
MATLAB:

x = [1 2 3 4 5]; (9.10)
do1 = diff(x)

do1 =
1 1 1 1

do2 = diff(x,2) (9.11)

do2 =
0 0 0

Funcia diff permite calculul derivatei numerice a unei funcii y(x) cu relaia:

dy = diff(y)./diff(x) (9.12)

De pild pentru calculul derivatei lui y = [0 3 4 4 2 3 5] funcie de x = [0 1 2 3 4 5 6] i
plotarea acestor dou funcii, Fig. 9.4, se face apel la urmtoarea sintaxa MATLAB:

x = [0 1 2 3 4 5 6] (9.13)
y = [0 3 4 4 2 3 5]
dy = diff(y)./diff(x)
plot(x, y, x(1:end-1), dy)
196 MEDII DE CALCUL N INGINERIE ELECTRIC



Fig. 9.4. Aproximarea numeric i plotarea derivatei.

9.1.3. Aproximarea numeric a Laplaceanului. Aproximarea Laplaceanului prin
formula n cinci puncte poate fi efectuat cu ajutorul funciei MATLAB del2. Aceast
funcie se apeleaz cu sintaxa :

V = del2(U) (9.14)

n care elementele matricei V, de aceeai dimensiune cu matricea U sunt calculate cu relaia:

j i
j i j i j i j i
j i
U
U U U U
V
,
1 , 1 , , 1 , 1
,
4

+ + +
=
+ +
(9.15)

n cazul nodurilor situate la marginea domeniului de calcul, media este calculat doar cu
nodurile ce aparin domeniului de calcul.
Dac matricea U este asociat funciei u(x, y) evaluat n nodurile unei reele cu pas
constant, atunci :

D = 4*del2(U) (9.16)

este aproximarea cu diferene finite a operatorului diferenial Laplace, aplicat lui u, adic:

2
2
2
2
2
y
u
x
u
u

= (9.17)

Pentru a calcula i plota, Fig. 9.5, aproximarea numeric a Laplaceanului funciei
u(x, y) = 2x
4
+ 3y
5
n intervalul x [-4, 4] i y [-4, 4], se face apel la secvena de comenzi
MATLAB:

MEDII DE CALCUL N INGINERIE ELECTRIC


197
[x, y] = meshgrid(-4:4, -4:4); (9.18)
U = 2*x.^4 + 3*y.^5
V = 4*del2(U)
mesh(x, y, V)



Fig. 9.5. Aproximarea numeric i plotarea derivatei.

9.1.4. Aproximarea numeric a gradientului. Aproximarea i reprezentarea grafic a
gradientului unei funcii u(x, y) este posibil n MATLAB prin intermediul funciilor
gradient i quiver.
Funcia gradient se apeleaz cu sintaxa:

[dux, duy] = gradient(u, dx, dy) (9.19)

i returneaz derivatele pariale numerice ale matricei funciei u n matricele dux=du/dx i
duy=du/dy. n apelul de mai sus dx i dy pot reprezenta nite scalari ce conin pasul de
discretizare pe direciile X i Y sau pot fi vectori ce conin toate coordonatele dup aceste
direcii. Dac dx i dy sunt omii se consider c dx = dy = 1.
Dac funcia gradient este apelat cu una din sintaxele:

dyx = gradient(Y) (9.20)
dyx = gradient(Y, dy)

aceasta returneaz un vector care conine derivata numeric dy/dx.
Funcia quiver permite reprezentarea grafic sub forma unor mici sgei (vectori
orientai) a unui cmp de vectori. Vectorii astfel reprezentai corespund fiecrei perechi
(X, Y) a matricelor X i Y.
Funcia quiver se apeleaz cu una din sintaxele:

198 MEDII DE CALCUL N INGINERIE ELECTRIC
quiver (X, Y, dx, dy) (9.21)
quiver (X, Y, dx, dy, S)
quiver (dx, dy)

Perechile (dx, dy) formate din matricele dx i dy determin direcia i modulul cmpului
de vectori orientai. Dac X i Y sunt vectori, X corespunde coloanelor lui dx i dy, iar Y
corespunde liniilor acestora (X trebuie s aib lungimea egal cu numrul de coloane, iar Y
cu numrul de linii).
Dac X i Y sunt omii, se consider c X = 1:n i Y=1:m, unde m este numrul de linii al
matricelor dx i dy, iar n numrul de coloane al acestora.
Argumentul S, care este un scalar, permite aplicarea unui factor de scalare lungimii
vectorilor orientai i reprezentai grafic. Se pot folosi toate tipurile de linii i culori
specificate n instruciunea plot.
Spre exemplificare s calculm i s reprezentm grafic, Fig. 9.6, gradientul funciei
2 2
x
e x y) (x, z
y
= n intervalul x [-2, 2] i y [-2, 2]. Vom face apel la sintaxa
MATLAB:

[X,Y] = meshgrid(-2: .2: 2); (9.22)
Z = X.*exp(-X.^2 - Y.^2);
[dx,dy] = gradient(Z, .2, .2);
contour(X, Y, Z)
hold on
quiver(X, Y, dx, dy)
grid off
hold off



Fig. 9.6. Aproximarea numeric a gradientului.

MEDII DE CALCUL N INGINERIE ELECTRIC


199
9.2. Integrarea numeric

Integrala unei funcii f(x) pe intervalul [a, b]:

S =

b
a
dx x f ) ( , (9.23)

are semnificaia ariei delimitat de axa Ox, curba f(x) i dreptele x = a i x = b, Fig. 9.7.














Fig. 9.7. Semnificaia grafic a integralei.


Calculul numeric al unei integrale poate fi efectuat prin:
Aproximarea funciei de integrat f(x) printr-o alt funcie g(x), unde g(x) este
determinat astfel nct integrala s fie uor de calculat.
Aproximarea funciei de integrat f(x) printr-un set de funcii liniare sau parabolice, pe
poriuni. Dac aproximarea se face cu funcii liniare pe poriuni, aria se poate calcula ca
sum a trapezelor care o compun, aceast metod fiind cunoscut sub numele de Metoda
Trapezelor. Dac aproximarea se face cu funcii ptratice pe poriuni, metoda este
cunoscut ca Metoda lui Simpson.

9.2.1. Metoda trapezelor i metoda lui Simpson Dac integrala se aproximeaz prin
trapeze, iar intervalul [a, b] este mprit n n seciuni egale, adic pasul i abscisa curent
sunt:

h = (b-a)/n > 0, x
i
= a + i
.
h pentru 1 i n (9.24)

atunci integrala poate fi estimat prin:

S
T
= h/2(y
a
+ y
b
+ 2

=
1
1
n
i
i
y ), unde y
i
= f(x
i
). (9.25)
Dac integrala este aproximat prin suma ariilor unor curbe ptratice, iar intervalul [a, b]
divizat n 2n seciuni egale:

x

y
a
f(x)

S
b
200 MEDII DE CALCUL N INGINERIE ELECTRIC
h = (b - a)/(2n) = x
i+1
- x
i
> 0, unde x
i
= a + i
.
h, cu 1 i 2n (9.26)

atunci integrala poate fi estimat prin expresia:

S
S
= h/3[y
a
+ y
b
+ 4(y
1
+ y
3
+ ... + y
2n-1
) + 2(y
2
+ y
4
+ ... + y
2n-2
)], unde y
i
= f(x
i
) (9.27)

Aceast ultima expresie este cunoscut sub numele de formula generalizat a lui
Simpson. n general, obinerea unei evaluri mai precise a integralei presupune utilizarea
unui pas mai fin de discretizare a intervalului [a, b], Fig. 9.8.












Fig. 9.8. Calculul numeric al integralei.

9.2.2. Calculul numeric al integralelor pe intervale infinite. Pentru calculul
integralelor convergente de forma:

S =

a
dx x f ) ( (9.28)

Se folosesc dou metode:
Schimbarea variabilei, care uneori presupune transformarea intervalului [a, +) ntr-un
interval finit;
Separarea integralei n dou integrale:



+ =
a b
b
a
dx x f dx x f dx x f ) ( ) ( ) ( (9.29)

n ultimul caz, prima integral se evalueaz printr-una dintre metodele expuse anterior, iar
pentru a doua se procedeaz astfel:
Fie se neglijeaz acest termen, dac b este suficient de mare i dac:


>>
b
b
b
a
dx x f dx x f
2
) ( ) ( (9.30)


y
x
0
= a
f(x)


S
x
1
x
n-1
x
n
=b
x
MEDII DE CALCUL N INGINERIE ELECTRIC


201
Fie se aproximeaz forma asimptotic a lui f(x) printr-o funcie g(x) f(x), care
pentru x suficient de mare permite calculul analitic al integralei funciei g(x).

9.2.3. Funcii MATLAB de integrare numeric. MATLAB pune la dispoziia
utilizatorului mai multe funcii de calcul numeric al integralelor i anume quad, quad8,
quadl, trapz, dblquad, triplequad.
Funciile MATLAB quad, quad8 i quadl permit calculul numeric al integralelor
funciilor de o variabil, acestea putnd fi apelate de pild cu una din sintaxele:

s = quad8(fun, a, b) (9.31)
s = quad8(fun, a, b, tol)
s = quad(fun, a, b)
s = quad(fun, a, b, tol)
s = quadl(fun, a, b)
s = quadl(fun, a, b, tol)

n apelurile de mai sus s desemneaz valoarea integralei, adic suprafaa cuprins ntre
curba determinat de funcia fun i abscisa, a i b reprezint limitele domeniului de
integrare [a, b], iar tol reprezint eroarea relativ admis ntre doi pai consecutivi. Dac
apelul de integrare numeric include i tol atunci integrarea funciei continu s se rafineze
pn cnd eroarea relativ a estimrii este mai mic dect tolerana. Dac tolerana tol este
omis, valoarea implicit este 10
-3
.

(Estimare anterioara Estimare curent)/Estimare curent tol (9.32)

S considerm ca exemplu calculul numeric al integralei funciei y = f(x) = 1/(x
2
+1) n
intervalul [0, 2]. n general funcia fun poate fi:

Un obiect inline ca de pild:

fun = inline('1./(x.^2+1)'); (9.33)

n acest caz calculul numeric al integralei funciei y = 1/(x
2
+1) n intervalul [0, 2]
presupune sintaxa MATLAB:

S1 = quad(fun, 0, 2) (9.34)
S2 = quad8(fun, 0, 2)
S3 = quadl(fun, 0, 2)

Rezultatul MATLAB obinut prin utilizarea celor trei funcii MATLAB este identic i
anume: 1.1071

Un fiier MATLAB de tip funcie, ca de pild fiierul fun.m:

function y = fun(x) (9.35)
y = 1./(x.^2+1);

202 MEDII DE CALCUL N INGINERIE ELECTRIC
Astfel, calculul numeric al integralei funciei y = 1/(x
2
+1) n intervalul [0, 2] presupune
sintaxa MATLAB:

S1 = quad(@fun, 0, 2) (9.36)
S2 = quad8(@fun, 0, 2)
S3 = quadl(@fun, 0, 2)

Rezultatul MATLAB obinut prin utilizarea celor trei funcii MATLAB este identic i
anume: 1.1071.

Funciile quad, quad8, quadl, se utilizeaz dac integrandul se poate exprima sub forma
unei funcii analitice. Dac funcia de integrat este descris prin valori numerice, se
aproximeaz mai nti acestea printr-o funcie corespunztoare i apoi funcia se scrie n
sintaxa MATLAB de mai sus.

Funcia trapz realizeaz calculul numeric al integralei prin metoda trapezelor i se
apeleaz cu una din sintaxele:

Z = trapz(X, Y) (9.37)
Z = trapz(Y)

Apelat cu dou argumente, funcia trapz calculeaz integrala funciei y(x). X este un
vector coloan care conine abscisele, iar Y este un vector coloan sau o matrice, cu acelai
numr de linii ca X, care conine valorile funciei corespunztoare acelor abscise. Z este un
scalar dac Y este un vector. Dac Y este o matrice, Z este un vector linie n care sunt
returnate ariile calculate pentru fiecare coloan a lui Y.
Dac funcia trapz este apelat numai cu argumentul Y, distana dintre dou abscise
succesive este considerat egal cu unitatea. n acest caz limitele de integrare sunt a = 1 i
b = N (N numarul de elemente ale vectorului Y).
Funcia trapz presupune c integrandul este dat prin valori numerice n noduri
echidistante ale intervalului de integrare. Dac funcia de integrat este descris sub forma
analitic y=f(x), n primul rnd se creaz cei doi vectori care conin valorile perechilor
abscis-ordonat (x-y). Acest lucru se realizeaz prin evaluarea funciei f(x) cu un pas
adecvat pentru x i ulterior se aplic funcia trapz.

Integrarea funciilor de dou variabile presupune un calcul de forma:

S =

max
min
max
min
) , (
y
y
x
x
dxdy y x f (9.38)

Pentru a calcula o integral ca cea de mai sus, se poate folosi funcia dblquad, care se poate
apela de pild cu una din sintaxele MATLAB:

s = dblquad(fun, xmin, xmax, ymin, ymax) (9.39)
s = dblquad(fun, xmin, xmax, ymin, ymax, tol),

unde primul argument fun este un ir de caractere coninnd numele funciei integrand, iar
al doilea pn la al cincilea argument reprezint:
MEDII DE CALCUL N INGINERIE ELECTRIC


203
xmin limita inferioar a domeniului de integrare corespunztor integralei interioare,
xmax limita superioar a domeniului de integrare corespunztor integralei interioare,
ymin limita inferioar a domeniului de integrare corespunztor integralei exterioare,
ymax limita superioar a domeniului de integrare corespunztor integralei exterioare.
tol tolerana cu care este evaluat numeric integrala.

S considerm c f(x, y) = y sin(x) + x cos (y). Primul pas const n construcia funciei a
crei integral trebuie evaluat. Funcia trebuie s fie capabil s ntoarc un vector atunci
cnd se introduce un vector. Trebuie deasemenea stabilit care variabil este n integrala
interioar i care este n integrala exterioar. n acest exemplu, variabila interioar este x i
variabila exterioar este y (ordinea n integrala este dxdy). n acest caz, funcia integrand
este definit n fiierul MATLAB de tip funcie fun2.

function f = fun2(x, y) (9.40)
f = y*sin(x) + x*cos(y);

Pentru a evalua integrala dubl, se folosete sintaxa:

s = dblquad(@fun2, xmin, xmax, ymin, ymax); (9.41)

Considernd integrala funciei fun2 n domeniul mrginit de [ , 2 ] i [0, ] prin apelul
sintaxei MATLAB:

xmin = pi; (9.42)
xmax = 2*pi;
ymin = 0;
ymax = pi;
s = dblquad(@fun2, xmin, xmax, ymin, ymax)

se obine rezultatul -9.8696.

Integrarea funciilor de trei variabile presupune un calcul de forma:

S =

max
min
max
min
max
min
) , , (
z
z
y
y
x
x
dxdydz z y x f (9.43)

Pentru a evalua integrale ale funciilor cu trei variabile se folosete funcia MATLAB
triplequad putnd fi apelat de pild cu una din sintaxele:

triplequad(fun, xmin, xmax, ymin, ymax, zmin, zmax) (9.44)
triplequad(fun, xmin, xmax, ymin, ymax, zmin, zmax, tol),

unde primul argument fun reprezint un ir de caractere ce desemneaz funcia de integrat,
xmin, xmax, ymin, ymax, zmin, zmax reprezint limitele domeniului de integrare, iar tol
tolerana de evaluare numeric a integralei.
204 MEDII DE CALCUL N INGINERIE ELECTRIC
Considernd de pid funcia f(x, y, z) = y sin(x)+z cos(x), calculul integralei acestei
funcii pe domeniul x [0, ], y [0, 1], z [-1, 1] presupune de pild o sintaxa MATLAB
ca cea de mai jos.

s = triplequad(inline('y*sin(x) + z*cos(x)'), 0, pi, 0, 1, -1, 1) (9.45)

Rezultatul MATLAB este s = 2.

9.3. Aplicaii numerice

APLICAIA 52:
S se calculeze derivata de ordinul I i II al lui y = [0 3 4 4 2 3 5 7 11 11 9] funcie de
x = [0 1 2 3 4 5 6 7 8 9 10] i s se ploteze pe acelasi grafic funcia y(x), y(x) i y(x).

Se folosete setul de comenzi MATLAB de mai jos:

x = [0 1 2 3 4 5 6 7 8 9 10];
y = [0 3 4 4 2 3 5 7 11 11 9];
dy = diff(y)./diff(x)
d2y = diff(dy)./diff(x(1:end-1))
plot(x, y, x(1:end-1), dy, x(1:end-2), d2y);
grid on;

MATLAB va rspunde cu urmtoarele rezultate numerice i grafice:

dy = 3 1 0 -2 1 2 2 4 0 -2
d2y = -2 -1 -2 3 1 0 2 -4 -2



Fig. 9.9. Graficul funciilor y, y' i y".
MEDII DE CALCUL N INGINERIE ELECTRIC


205
APLICAIA 53:
S se evalueze numeric Laplaceanul V al funciei U(x, y) = x
4
y
5
n intervalul x[-4, 4] i
y[-4, 4] i s se ploteze pe acelai grafic funcia U i V.

Se folosete urmtorul set de comenzi MATLAB:

[x, y] = meshgrid(-4:4, -4:4);
U = x.^4.*y.^5;
V = 4*del2(U);
mesh(x, y, U);
hold on;
mesh(x, y, V);
hold off;

MATLAB va afia graficul urmtor.



Fig. 9.10. Graficul funciilor U i V.

APLICAIA 54:
Presupunnd c potenialul magnetic scalar are expresia
2 2
x
e y x y) (x,
y
= , s
se calculeze numeric i s se ploteze mrimea intensitate a cmpului magnetic irotaional
H, n intervalul x[-2, 2] i y[-2, 2], pentru dx = dy = 0.2.

Se folosete urmtorul set de comenzi MATLAB:

[X,Y] = meshgrid(-2: .2: 2);
FI = X.*Y.*exp(-X.^2 - Y.^2);
206 MEDII DE CALCUL N INGINERIE ELECTRIC
[dx,dy] = gradient(FI, .2, .2);
contour(X, Y, FI);
hold on;
quiver(X, Y, dx, dy);
grid off;
hold off;

MATLAB va afia graficul din Fig. 9.11.



Fig. 9.11. Graficul funciei H.


APLICAIA 55:
S se calculeze integrala numeric a funciei e f(x)
2
x
= n intervalul [-2; 2] calculat cu
cele trei funcii MATLAB i cu tolerane de {10
0
, 10
-2
, 10
-4
}. Comparai rezultatele.

Se folosete setul de comenzi MATLAB de mai jos:

fun = inline('exp((x).^2)');
S10 = quad(fun, -2, 2, 1)
S12 = quad(fun, -2, 2, 1e-2)
S14 = quad(fun, -2, 2, 1e-4)

S20 = quad8(fun, -2, 2, 1)
S22 = quad8(fun, -2, 2, 1e-2)
S24 = quad8(fun, -2, 2, 1e-4)

S30 = quadl(fun, -2, 2, 1)
S32 = quadl(fun, -2, 2, 1e-2)
S34 = quadl(fun, -2, 2, 1e-4)

MEDII DE CALCUL N INGINERIE ELECTRIC


207
MATLAB va rspunde cu:

S10 = 33.0045
S12 = 32.9144
S14 = 32.9053
S20 = 32.9053
S22 = 32.9053
S24 = 32.9053
S30 = 33.0567
S32 = 32.9053
S34 = 32.9053

APLICAIA 56:
S se calculeze integrala numeric a funciei de dou variabile 1)e (y f(x)
2
x
+ = n
intervalul x[-2, 2] i y [-2, 2] calculat cu funcia MATLAB dblquad i cu tolerane
de {10
0
, 10
-2
, 10
-4
}.

Folosind MATLAB Editor se creaz n directorul curent fiierul function fun2.m ce conine
urmtoarele comenzile MATLAB:

function f = fun2(x, y)
f = (y+1)*exp(x.^2);

Pentru calculul integralei se folosete setul de comenzi MATLAB de mai jos scris n
Command Window:

xmin = -2;
xmax = 2;
ymin = -2;
ymax = 2;
s0 = dblquad(@fun2, xmin, xmax, ymin, ymax,1)
s2 = dblquad(@fun2, xmin, xmax, ymin, ymax,1e-2)
s4 = dblquad(@fun2, xmin, xmax, ymin, ymax,1e-4)

MATLAB va rspunde cu:

s0 = 132.0180
s2 = 131.6278
s4 = 131.6210

APLICAIA 57:
S se calculeze integrala numeric a funciei de trei variabile
) xe 1)(ye z y (x f(x)
2
y
2
x
+ + + + = n intervalul x[-2, 2,], y [-2, 2] i z [-2, 2] calculat
cu funcia MATLAB triplequad i cu tolerane de {10
0
, 10
-2
, 10
-4
}.
208 MEDII DE CALCUL N INGINERIE ELECTRIC
Folosind MATLAB Editor se creaz n directorul curent fiierul function fun3.m ce conine
urmtoarele comenzile MATLAB:

function f = fun3(x, y, z)
f = (x+y+z+1)*(y.*exp(x.^2) + x.*exp(y.^2));

Pentru calculul integralei se folosete setul de comenzi MATLAB de mai jos scris n
Command Window:

xmin = -2;
xmax = 2;
ymin = -2;
ymax = 2;
zmin = -2;
zmax = 2;
s0 = triplequad(@fun3, xmin, xmax, ymin, ymax, zmin, zmax,1)
s2 = triplequad(@fun3, xmin, xmax, ymin, ymax, zmin, zmax,1e-2)
s4 = triplequad(@fun3, xmin, xmax, ymin, ymax, zmin, zmax,1e-4)

MATLAB va rspunde cu:

s0 = 1.4082e+003
s2 = 1.4040e+003
s4 = 1.4040e+003













MEDII DE CALCUL N INGINERIE ELECTRIC


209

10. INTEGRAREA NUMERIC A ECUAIILOR DIFERENIALE

n acest capitol se prezint funciile MATLAB de rezolvare a ecuaiilor difereniale de
ordinul nti i metodele de rezolvare a ecuaiilor difereniale de ordin superior, prin
convertire n sisteme de ecuaii difereniale de ordinul nti. Funciile MATLAB din aceast
categorie au la baza metoda de integrare Runge-Kutta.

10.1. Ecuaiile difereniale de ordinul nti

O ecuaie diferenial de ordinul nti are forma:

y = dy/dx = g(x, y) (10.1)

unde x este variabil independent, iar y este funcia necunoscut.
Dei soluiile analitice ale ecuaiilor difereniale sunt preferate, acestea nu pot fi
ntotdeauna obinute.
Metodele numerice cele mai cunoscute de rezolvare a ecuaiilor difereniale sunt: metoda
Euler i metoda Runge-Kutta. Ambele metode rezolv ecuaiile aproximnd funciile prin
descompunere n serii Taylor:

... ) ( f
n!
a) - (b
... ) ( f
2!
a) - (b
) ( a)f - (b f(a) f(b)
(n)
n
' '
2
'
+ + + + + = a a a (10.2)

Aproximarea de ordinul nti folosete funcia i derivata de ordinul nti a acesteia:

) ( a)f - (b f(a) f(b)
'
a + = (10.3)

iar aproximarea de ordinul doi folosete funcia i derivata sa de ordinul doi:

) ( f
2!
a) - (b
) ( a)f - (b f(a) f(b)
' '
2
'
a a + + = (10.4)

Creterea numrului de termeni n dezvoltarea n serie Taylor crete precizia aproximrii.

10.2. Funcii MATLAB pentru integrare numeric a ecuaiilor difereniale

MATLAB pune la dispoziie mai multe funcii pentru integrarea numeric a ecuaiilor
difereniale de ordinul nti printre care: ode45, ode23, ode113, ode15s, ode23s, ode23t,
ode23tb care rezolv ecuaiile folosind metoda Runge-Kutta.
Funciile odeX (unde X reprezint unul dintre indicativele 45, 23, 113, 15s, 23s, 23t,
23tb) se pot apela de pild cu una din sintaxele de mai jos:

[x, y] = odeX(yprim, x0, xf, y0) (10.5)
[x, y] = odeX(yprim, x0, xf, y0)
210 MEDII DE CALCUL N INGINERIE ELECTRIC
[x, y] = odeX(yprim, x0, xf, y0, tol, trace)
[x, y] = odeX(yprim, x0, xf, y0, tol, trace),

unde:
yprim este o variabil de tip ir de caractere reprezentnd numele unui fiier M, de tip
funcie, ce definete derivata funciei necunoscute y,
x0 este valoarea iniial a variabilei x,
xf este valoarea final a variabilei x,
y0 este un vector coninnd condiiile iniiale,
tol este precizia dorit a soluiei (opional). Implicit tol = 10
-3
pentru ode23, tol = 10
-6

pentru ode45 etc.
trace este un parametru care asigur tiprirea rezultatelor intermediare n mod opional.
Valoarea implicit este zero, adic fr tiprire.

Numrul de puncte x
i
aparinnd intervalului (x
0
, x
f
), n care funciile odeX returneaz
valorile y
i
ale necunoscutei, este un parametru intern al acestora. Funciile odeX apeleaz
metode de integrare de tip Runge-Kutta, cu stabilirea automat a pasului. Algoritmul
Runge-Kutta cu pas automat i alege pasul n funcie de gradientul soluiei, respectiv un pas
mai mare cnd gradientul y(x) are o valoare mai mic.
Funciile MATLAB au dou argumente de ieire: valorile variabilei x i mrimile
corespunztoare ale necunoscutei y, care reprezint soluia numeric a ecuaiei difereniale.
Pentru exemplificare s rezolvm ecuaia diferenial y=x
2
pe intervalul [2, 4], cu
condiia iniiala y(2) = 0.5. Soluia analitic a ecuaiei este ya =1/3*x^3-6.5/3. Astfel, pentru
a rezolva numeric ecuaia diferenial vom crea un fiier funcie MATLAB ce conine:

function dy = g1(x, y) (10.6)
dy = x^2;

Fiierul are numele g1.m, i se apeleaz cu secvena MATLAB:

[x, yn] = ode23(g1, [2, 4], 0.5); (10.7)

Pentru a plota pe acelai grafic soluia analitic i cea numeric vom executa setul de
comenzi MATLAB (10.8), rezultatul grafic fiind prezentat n Fig. 10.1:

ya =1/3*x^3-6.5/3; (10.8)
plot(x, yn o, x, ya);
grid;
MEDII DE CALCUL N INGINERIE ELECTRIC


211


Fig. 10.1. Integrarea unei ecuaii difereniale de ordinul I
i plotarea soluiei.

S continum cu rezolvarea ecuaiei difereniale y = sin(100*pi*x) + 30*y pe intervalul
[0, 0.1], cu condiia iniial y(0) = 0. Rezolvarea numeric a ecuaiei difereniale presupune
crearea unui fiier funcie MATLAB ce conine:

function dy = g2(x, y) (10.9)
dy = sin(100*pi*x) + 30*y;

Fiierul are numele g2.m, i se apeleaz cu secvena MATLAB:

[x, y] = ode23(g2, [0:0.001:0.1], 0); (10.10)

Pentru a plota soluia numeric, Fig. 10.2, vom executa comenzile MATLAB:

plot(x, y); (10.11)
grid;


Fig. 10.2. Plotarea soluiei unei ecuaii difereniale de ordinul I.
212 MEDII DE CALCUL N INGINERIE ELECTRIC
10.3. Integrarea ecuaiilor difereniale de ordin superior i a sistemelor de ecuaii
difereniale

O ecuaie diferenial de ordin superior este echivalent cu un sistem de ecuaii
difereniale cuplate, de ordinul nti. De pild ecuaia ecuaia diferenial de ordinul n :

y
(n)
= f(x, y, y, y, ..., y
(n-1)
) (10.12)

la care se asociaz notaiile:

y
1
(x) = y
(n-1)
(10.13)
y
2
(x) = y
(n-2)
...
y
n-2
(x) = y

y
n-1
(x) = y

y
n
(x) = y


este echivalent cu un sistem de n ecuaii difereniale de ordinul nti:

y
1
= y
(n)
= g(x, u
n
, u
n-1
, ..., u
1
) (10.14)
y
2
= y
1

...
y
n-2
= y
n-3

y
n-1
= y
n-2


S rezolvm de pild urmtoarea ecuaie diferenial liniar de ordinul doi :

y + (y
2
- 2)
.
y -1 = 0; condiii iniiale: y(0) = 1, y(0) = 0 (10.15)

Ecuaia este echivalent cu sistemul:

y
1
= y
1
(2 - y
2
2
) +1 (10.16)
y
2
= y
1

Rezolvarea acestui sistem presupune nti crearea unui fiier funcie MATLAB care conine:

function yprim = ecdif(x, y); (10.17)
yprim =[ y(1).*(2 - y(2).^2) + 1; y(1)];

Pentru integrarea sistemului de ecuaii difereniale de ordinul nti pe intervalul [0, 20], i
pentru plotarea funciei i a derivatei sale, Fig. 10.3, se utilizeaz instruciunile MATLAB:

t0 = 0; (10.18)
tf = 3;
y0 = [0, 1];
[t, yy] = ode23(ecdif, [t0, tf], y0);
MEDII DE CALCUL N INGINERIE ELECTRIC


213
plot(t, yy(:, 1), --b, t, yy(:, 2), -r);
grid;
text(2.1, 2.6, 'functia y');
text(2.1, 0.75, 'derivata functiei y');



Fig. 10.3. Integrarea unei ecuaii difereniale de ordin superior i
plotarea soluiei i a derivatei.

10.4. Aplicaii numerice

APLICAIA 58:
Se consider un transformator monofazat caracterizat de: R
k
= 2 , L
k
= 13 mH,
U
1n
= 220V, = 100.
Se consider c n secundarul transformatorului apare un scurtcircuit brusc la momentul
t=0. Transformatorul este alimentat cu o tensiune de forma u
1
(t)=U
1n
2sint. Se
consider i
1k
(0) = 0. Considernd ecuaia de tensiuni a transformatorului la scurtcircuit:
R
k
i
1k
+ L
k
di
1k
/dt = U
1n
2sint,
s se traseze variaia n timp pe zece perioade a curentului de scurtcircuit brusc i
1k
.

Folosind MATLAB Editor se creaz n directorul curent fiierul function tr_scc.m care
conine urmtoarele comenzile MATLAB:

function dik = tr_scc(t, ik)
Rk = 2;
Lk = 13*1e-3;
U1n = 220;
omega = 100*pi;
dik = 1/Lk*(U1n*sqrt(2)*sin(omega*t) - Rk*ik);
214 MEDII DE CALCUL N INGINERIE ELECTRIC
Apoi se apeleaz funcia creat cu succesiunea de comenzi MATLAB:

[t, ik] = ode23('tr_scc', [0:0.001:0.2], 0);
plot(t, ik);
grid on;
xlabel('t [s]');
ylabel('i_1_k [A]');

MATLAB va afia variaia n timp a curentului ca n Fig. 10.4.



Fig. 10.4. Graficul funciei i
1k
.

APLICAIA 59:
Se consider o plac plan de grosime Dx = 0,1 m. Cmpul termic staionar al plcii
verific ecuaia diferenial:
2
2
2
15 1000
d T
T
dx
= . Pe suprafaa x = 0 se cunosc temperatura (T(0) = 100), respectiv
gradientul de temperatur (-T(0) = 10). S se ploteze pe acelai grafic temperatura T,
respectiv gradientul de temperatur -T, funcie de coordonata x.

Folosind MATLAB Editor se creaz n directorul curent fiierul function termic.m care
conine urmtoarele comenzile MATLAB:

function th = termic(x, teta)
th =[ 15*teta(2)^2 + 1000; teta(1)];

Apoi se apeleaz funcia creat cu succesiunea de comenzi MATLAB:

MEDII DE CALCUL N INGINERIE ELECTRIC


215
Dx = 0.1;
teta0 = [100, -10];
[x, teta] = ode23('termic', [0:0.001:Dx], teta0);
plot(x, teta);
grid on;
xlabel('x [m]');
ylabel('teta [degC]')

MATLAB va afia variaia funcie de x a temperaturii ca n figura de mai jos.



Fig. 10.5. Graficul funciei i
1k
.

216 MEDII DE CALCUL N INGINERIE ELECTRIC

11. FUNCII DE OPTIMIZARE NUMERIC

Problema optimizrii unor funcii matematice de una sau mai multe variabile apare
deseori n inginerie. Funciile ce trebuiesc optimizate (minimizate sau maximizate)
modeleaz de regul anumite caracteristici specifice unor echipamente sau procese ce
trebuiesc, la rndul lor, optimizate.
Definirea problemei de minimizare pe un interval a unei funcii obiectiv
F(x1, x2, x3, ..., xn) dependent de un set de n parametri, const n gsirea setului optim de
parametri x1, x2, ..., xn, aparinnd intervalului impus, pentru care funcia are valoarea cea
mai mic.
Funciile de minimizare implementate pe platforma de baz a pachetului de programe
MATLAB (exist un modul special denumit Optimization Toolbox destinat exclusiv
problemelor de optimizare numeric), n cazul n care avem de a face cu una sau mai multe
variabile sunt:

fminbnd pentru minizarea funciilor de o singur variabil ntr-un interval impus,
fminsearch pentru minizarea funciilor de mai multe variabile,
fzero pentru determinarea zeroului funciilor de o singur variabil ntr-un interval impus.

11.1. Minimizarea funciilor de o variabil

Funcia fminbnd de minimizare a funciilor de o variabil poate fi apelat folosind mai
multe sintaxe, cteva dintre acestea fiind prezentate mai jos:

x = fminbnd(fun, x1, x2) (11.1)
x = fminbnd(fun, x1, x2, optiuni)
[x, fval] = fminbnd(fun, x1, x2, optiuni)

Funcia ntoarce valoarea parametrului x din intervalul [x1, x2] pentru care funcia fun este
minim i eventual valoarea corespunztoare a funciei fval.
Apelul funciei cu opiuni permite afiarea valorilor intermediare, permite fixarea numrului
maxim de iteraii i de evaluri, fixarea criteriului de eroare etc. (pentru detalii tasteaz help
options n Command Window).

S calculm minimul funciei sin(x) n intervalul [0; 2 ]. Pentru aceasta vom folosi
sintaxa MATLAB:

[x, fmin] = fminbnd(sin, 0, 2*pi) (11.2)

Rezultatul MATLAB este:

x = 4.7124 (11.3)
fmin = -1.0000

Deci minimul funciei este -1 i se obine la x = 4.7124 adic 3 /2.
MEDII DE CALCUL N INGINERIE ELECTRIC


217
11.2. Minimizarea funciilor de mai multe variabile

Funcia de minimizare multidimensional fminsearch poate fi apelat n mai multe feluri,
cteva dintre sintaxele de apel fiind prezentate mai jos:

x = fminsearch(fun,x0) (11.4)
x = fminsearch(fun,x0,optiuni)
[x,fval] = fminsearch(...)

Funcia fminsearch ntoarce valoarea parametrului multidimensional x cea mai apropiat de
valoarea x0, pentru care funcia fun prezint un punct de minim local. n variabila fval este
ntoars valoarea funciei corespunztoare punctului de minim local.
Apelul funciei cu optiuni permite afiarea valorilor intermediare, permite fixarea numrului
maxim de iteraii i de evaluri, fixarea criteriului de eroare etc.

S calculm minimul funciei Rosenbrock sau banana, fiuncie utilizat deseori pentru
testarea algoritmilor de optimizare:

f(x, y) = 100(y-x
2
)
2
+ (1-x)
2
+ 2 (11.5)

Pentru aceasta vom crea nti fiierul funcie care conine:

function b = banana(x, y); (11.6)
b = 100*(y x^2)^2 + (1 x)^2 + 2

Pentru determinarea punctului de minim putem folosi sintaxa MATLAB:

[xy, fmin] = fminsearch(banana, [0, 0]) (11.7)

Rezultatul MATLAB este:

xy = 1.0000 1.0000 (11.8)
fmin = 2.0000

Deci minimul funciei este 2 i se obine la xy = [1, 1] adica x = 1 i y = 1.
11.3. Calculul zerourilor funciilor de o variabil real

MATLAB permite calculul zeroului unei funcii de o variabil real prin intermediul
funciei fzero. Sintaxele de apel ale funciei MATLAB sunt multiple ca de exemplu:

x = fzero(fun, x0) (11.9)
x = fzero(fun, x0, optiuni)
[x, fval] = fzero(fun, x0, optiuni)

218 MEDII DE CALCUL N INGINERIE ELECTRIC
Funcia MATLAB returneaz zeroul funciei f(x) situat cel mai aproape de valoarea iniial
impus x0. Valoarea x0 poate fi un scalar sau un interval. Dac x0 este un interval atunci
valorile funciei la capetele intervalului trebuie s aib semne diferite, altfel funcia ntoarce
un mesaj de eroare. n fval funcia ntoarce valoarea funciei n punctul x.
Apelul funciei cu optiuni permite afiarea valorilor intermediare, fixarea numrului maxim
de iteraii i de evaluri, fixarea criteriului de eroare etc.

Diferena ntre funcia fzero i roots const n faptul c funcia roots se aplic funciilor
polinomiale i calculeaz toate zerourile (rdcinile) polinomului, reale sau complexe, pe
cnd funcia fzero se aplic oricrei funcii de o variabil real i returneaz un singur zero,
situat n preajma valorii iniiale x0.

Spre exemplificare s calculm zeroul funciei f(x) = (x-5)
2
4, cel mai apropiat de
x0 = 2. Pentru aceasta s creem fiierul funcie fct.m care conine instruciunile:

function ff = fct(x); (11.10)
ff = (x-5)
2
4;

Funcia se apeleaz cu sintaxa MATLAB:

[x, fx] = fzero(fct, 2) (11.11)

i se obine rezultatul: x = 3 i fx = 0.

11.4. Aplicaii numerice

APLICAIA 60:
S se calculeze minimul funciei f(x) = (x - 10)
2
- 1 pe intervalul [0, 20] i valoarea
funciei n acel punct folosind funcia MATLAB fminbnd.

Se folosete urmtorul set de comenzi MATLAB:

fun = inline('(x - 10)^2 - 1');
[xmin, funval] = fminbnd(fun, 0, 20)

MATLAB va afia urmtoarele rezultate numerice:

xmin = 10
funval = -1

APLICAIA 61:
S se calculeze minimul funciei f(x, y) = sin(x)*(x - 10)
2
+ (x
2
+ y)
2
+ 3 i valoarea
funciei n acel punct folosind funcia MATLAB fminsearch. Plotai grafic funcia
evideniind punctul de minim.

MEDII DE CALCUL N INGINERIE ELECTRIC


219
Se folosete urmtorul set de comenzi MATLAB:

fun = inline('sin(x(1))*(x(1) - 10)^2 + (x(1)^2+x(2))^2 + 3');
[xmin, funval] = fminsearch(fun, [0, 0])
[x, y] = meshgrid(-10: 0.1: 10);
z = sin(x).*(x - 10).^2 + (x.^2+y).^2 + 3;
mesh(x, y, z);
hold on;
plot3(xmin(1), xmin(2), funval,'ro');
hold off;

MATLAB va afia urmtoarele rezultate numerice i grafice:

xmin = -1.7395 -3.0260
funval = -132.8593



Fig. 11.1. Graficul funciei f(x, y).

APLICAIA 62:
S se calculeze zeroul funciei f(x) = sin
2
(x)

+ x
2
- 3 n intervalul [0, 3] folosind funcia
MATLAB fzero.

Se folosete urmtorul set de comenzi MATLAB:

fun = inline('sin(x)^2 + x^2 - 3');
[xmin, funval] = fzero(fun, [0, 3])
220 MEDII DE CALCUL N INGINERIE ELECTRIC
x = 0: 0.01: 3;
y = sin(x).^2 + x.^2 - 3;
plot(x, y, xmin, funval,'ro');
grid on;

MATLAB va afia urmtoarele rezultate numerice i grafice:

xmin = 1.4220
funval = 0



Fig. 11.2. Graficul funciei f(x, y).


















MEDII DE CALCUL N INGINERIE ELECTRIC


221
12. BIBLIOGRAFIE I WEBOGRAFIE

[1] Mathworks: MATLAB Users Guide Version 6.5.
[2] Ghinea M., Fireeanu V.: MATLAB Calcul numeric i grafic, Ed. Teora, Bucureti,
2000.
[3] Hunt B., Lipsman R., Rosenberg J.: A Guide to MATLAB: for Beginners and
Experienced Users, Cambridge University Press, 2001, ISBN: 0521-00859-X.
[4] Laprest JT: Aide-mmoire MATLAB, Elipses, France, 2002, ISBN: 2-7298-0952-X.
[5] Kharab A., Guenther R.: An Introduction to Numerical Methods: A MATLAB
Approach, Chapman & Hall/CRC, 2002, ISBN: 1-58488-281-6.
[6] Otto SR, Denier JP: An Introduction to Programming and Numerical Methods in
MATLAB, Springer, 2005, ISBN: 1-85233-919-5.
[7] Sticklen J., Eskil MT: An Introduction to Technical Problem Solving with MATLAB
v. 7, Great Lakes Press, 2005, ISBN: 1-881018-80-6.
[8] Mokhtari M., Marie, M.: Applications de MATLAB 5 et Simulink 2, Springer, 1998,
ISBN: 2-287-59651-8.
[9] Hanselman D., Littlefield B.: Mastering MATLAB 7, Prentice Hall, 2005, ISBN: 0-13-
143018-1
[10] Redfern D., Campbell C.: The MATLAB 5 Handbook, Springer, 1998, ISBN: 0-387-
94200-9.
[11] Yang W.: Applied Numerical Methods Using MATLAB, Wiley New York, ISBN:
0471698334.
[12] Hahn BD: Essential MATLAB for Scientists and Engineers, ISBN: 0750652403.
[13] http://www.mathworks.com/academia/student_center/tutorials/index.html?link=body
[14] http://texas.math.ttu.edu/~gilliam/ttu/mlhtml_1/m4330_ml_1.html
[15] http://www.yorku.ca/jdc/courses/Matlab/
[16] http://www.math.udel.edu/~driscoll/teaching/matlab_adv.pdf
[17] http://physics.gac.edu/~huber/matlab/
[18] http://www.math.utah.edu/lab/ms/matlab/matlab.html
[19] http://www.glue.umd.edu/~nsw/ench250/matlab.htm
[20] http://staff.science.uva.nl/~brandts/SIMPROG/matlab.html

You might also like