Professional Documents
Culture Documents
\
|
=
|
|
|
\
|
|
|
|
\
|
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
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