pi - suport

Upload: ssh-das

Post on 29-May-2018

251 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/8/2019 PI - Suport

    1/42

    APLICAII MATLAB

    Numele MATLAB provine de laMatrix laboratoryFirma productoare este The MathWorks, Inc., SUA

    MATLAB permite dezvoltarea unei familii de aplicaii sub forma toolbox-urilor.

    Sistemul MATLAB const n cinci pri principale:

    Limbajul MATLAB Mediul de lucru MATLAB Handle Graphics

    Biblioteca de funcii matematice a MATLAB-ului Interfaa de aplicaii program a MATLAB-ului (API)

    Interfaa de aplicaii program a MATLAB-ului (API) este o bibliotec care permite

    scrierea de programe n C sau Fortran care interacioneaz cu MATLAB-ul. Include facilitipentru apelarea rutinelor din MATLAB, apelarea MATLAB-ului ca main de calcul, scrierea icitirea fiierelor de tip .MAT .

    1. FUNDAMENTELE PROGRAMRII N MATLAB

    1.1. Expresii fundamentaleMATLAB-ul lucreaz cu expresii matematice ca i celelalte limbaje de programare, dar spre

    deosebire de majoritatea acestor limbaje, aceste expresii implic la scar larg lucrul cu matrici.Expresiile sunt alctuite cu ajutorul urmtoarelor tipuri: Variabile Numere Operatori Funcii

    OperatoriExpresiile utilizeaz operatori aritmetici uzuali:

    + Adunare

    - Scdere

    * Multiplicare

    / mprire

    \ mprire la stnga

    ^ Ridicarea la o putere

    ' Transpusa complex conjugat

    ()

    Operatorul de specificare aordinii de evaluare

    1

  • 8/8/2019 PI - Suport

    2/42

    O parte din funcii (cum ar fi sqrt,sin)sunt de tipbuilt-in, adic sunt o parte a nucleuluiMATLAB, au o mare eficien, dar detaliile constructive nu sunt accesibile utilizatorului.

    Funcia eval

    Funcia eval lucreaz cu variabil text pentru implementarea unei faciliti puternice de tipmacro text.

    Expresiaeval(s)

    folosete interpreter-ul MATLAB pentru evaluarea expresiei sau execuia declaraiei din irul decaractere s.

    Vectorizarea

    Pentru a obine o vitez de calcul mare, este foarte important aa-numita vectorizare aalgoritmilor n fiierele MATLAB. Acolo unde alte limbaje folosesc bucle de tip for sau DO,

    MATLAB-ul poate utiliza operaii matriceale sau vectoriale.Un exemplu simplu este urmtorul:

    x = 0;for k = 1:1001

    y(k) = log10(x);x = x + .01;

    end

    Versiunea vectorizat a aceluiai program estex = 0:.01:10;y = log10(x);

    Funcii de funcii

    n MATLAB exist o clas de funcii care lucreaz cu funcii neliniare ca argument. Funciile defuncii includ:

    Gsirea zerourilor

    Optimizare

    Integrare numeric

    Ecuaii difereniale ordinare

    Exemplu:Urmtorul fiier creeaz o funcie neliniar:

    function y = humps(x)y = 1./((x-.3).^2 + .01) + 1./((x-.9).^2 + .04) - 6;

    Aceast funcie poate fi evaluat pentru un set de puncte n intervalul 0 x 1 cu programul:x = 0:.002:1;y = humps(x);

    i apoi se poate reprezenta grafic funcia cu comandaplot(x,y)

    Graficul arat c funcia are un minim local la aproximativ x = 0.6. Dac de exemplu utilizmfuncia fmins putem gsi imediat valoarea exact a lui x . Primul argument al funciei fmins este

    chiar numele funciei pentru care calculm minimul (al doilea parametru este o aproximare grosiera localizrii minimului).

    2

  • 8/8/2019 PI - Suport

    3/42

    p = fmins('humps',.5)p =

    0.6370

    Se poate acum evalua valoarea funciei n punctul de minim local:

    humps(p)

    ans =

    11.2528

    1.2. Matrici, vectori i polinoame

    . Suma elementelor de pe coloane se calculeaz rapid cu: sum(A)ans =

    34 34 34 34

    Pentru calcularea sumelor pe linii, efectum nti transpunerea matricii i apoi aplic din noucomanda sum.

    Transpusa se calculeaz cu: A'ans =

    16 5 9 43 10 6 152 11 7 1413 8 12 1

    i apoi sum(A')'ans =

    34343434

    Suma elementelor de pe diagonal se calculeaz cu tot cu funcia sum, dar dup ce n prealabil

    vom sorta cu funcia diag elementele de pe diagonala principal: diag(A)ans =

    16

    3

  • 8/8/2019 PI - Suport

    4/42

  • 8/8/2019 PI - Suport

    5/42

    Aceast matrice este aproape identic cu matricea lui Drer singura diferen fiind c cele doucoloane din mijloc sunt schimbate ntre ele. Pentru obinerea din B a matricii lui Drer se poateutiliza urmtoarea comand MATLAB:

    A = B(:,[1 3 2 4])A =

    16 3 2 13

    5 10 11 89 6 7 124 15 14 1

    Polinoame

    Polinoamele sunt descrise n MATLAB prin vectori linie ale cror elemente sunt defapt coeficienii polinoamelor n ordinea descresctoare a puterilor.

    Exemplu: polinomul p(x)=x3+5x+6 este reprezentat n MATLAB astfel:

    p = [1 0 5 6]

    Un polinom poate fi evaluat pentru o valoare a lui x cu ajutorul funciei polyval: polyval(p,1)ans=

    12

    n exemplul de mai sus este evaluat polinomul p n punctul x =1.

    Se pot afla cu uurin rdcinile polinomului folosind funcia roots:

    r=roots(p)r =

    0.5000 + 2.3979i0.5000 - 2.3979i

    -1.0000

    Exist numeroase alte funcii i comenzi care se ocup cu operaii asuprapolinoamelor, funcii care vor fi abordate ntr-un capitol special. Dintre acestea amintimcomanda care permite nmulirea a dou polinoame, i anume conv:

    p1=[1 3 5]p1 =

    1 3 5

    p2=[2 0 1 0 5]p2 =

    2 0 1 0 5

    p3=conv(p1,p2)p3 =2 6 11 3 10 15 25

    1.3. Operaiuni elementare cu matrici i funcii

    Exemplu:

    A=[2 3;15 -3]A =

    2 315 -3

    B=[11 -21; 12 4]

    B = 11 -2112 4

    5

  • 8/8/2019 PI - Suport

    6/42

    C=A+BC =

    13 -1827 1

    Pentru nmulirea a dou matrici se folosete operatorul * , valabil de altfel i pentru operaiilecu scalari. Exemplu:

    D=A*BD =58 -30129 -327

    size(A)

    De exemplu, pentru operaiunea scalar r=17>55r =

    0

    MATLAB-ul rspunde cu r = 0, adicfals. Dac dorim de exemplu s comparm fiecare element almatricii A cu elementul corespunztor din matricea B, procedm asemntor: L=A

  • 8/8/2019 PI - Suport

    7/42

    1;2;34;5;6

    B. Setarea Breakpoint-urilor

    Punctele de oprire (breakpoint-uri) determin oprirea execuiei fiierului la linia specificat i

    permit evaluarea i schimbarea variabilelor din workspace nainte de reluarea execuiei. Breakpoint-ul este indicat printr-un semn rou de stop ( ) nainte de linia respectiv.

    Pentru exemplul considerat, la nceputul depanrii nu se tie unde ar putea fi eroarea, ns un loclogic de amplasare a unui breakpoint pentru a face verificri este n linia 4 a funcieivariance.m:

    y = tot/(length(x)-1);

    Pentru setarea breakpointului se poziioneaz cursorul pe linia 4 i se face click pe butonul dintoolbar sau se alege Set Breakpoint din meniul Debug.

    5. MATRICI, ALGEBR LINIAR, POLINOAME, TEHNICI DE INTERPOLARE

    Funciile de algebr liniar sunt localizate n directorul matfun. n continuare suntprezentate cteva din funciile care lucreaz cu matrici.

    Categoria Funcia Descriere

    Analiza matriceal norm Norma unei matrice sau a unui vector.

    normest Estimeaz norma-2 a matricei.

    rank Rangul matricei.

    det Determinant.

    trace Suma elementelor de pe diagonal.

    null Spaiul Nul.

    orth Ortogonalizare.

    subspace Unghiul dintre 2 subspaii.

    Ecuaii liniare \ i / Utilizate la calculul soluiilor ecuaiilor liniare.inv Inversa matricei.cond Numrul de condiie pentru inversare.chol Factorizarea Cholesky.lu Factorizarea LU.qr Decompoziia ortogonal-triunghiular.pinv Pseudoinversa.lscov Cele mai mici ptrate cu covarian cunoscut.

    Valori proprii ivalori singulare

    eig Valori proprii i vectori proprii.

    7

    http://e/MATLABR11/help/techdoc/ref/arithmeticoperators.htmlhttp://e/MATLABR11/help/techdoc/ref/arithmeticoperators.html
  • 8/8/2019 PI - Suport

    8/42

    svd Decompoziia n valori singulare.

    poly Polinomul caracteristic.

    hess Forma Hessenberg.

    qz

    Factorizarea QZ.schur Decompoziia Schur.

    Funcii de matrice expm Exponeniala de matrice.logm Logaritmul de matrice.

    sqrtm Rdcina ptrat de matrice.

    funm Evaluarea unei funcii generale de matrice.

    Operaiunile elementare cu matrici au fost deja prezentate (adunarea matricilor, nmulirea

    acestora, transpusa unei matrice, funciile sum, diag etc.).

    - Matricea identitate (unitate)Este o matrice cu elementele de pe diagonala principal egale cu 1 iar restul elementelor suntnule. Notaia matematic Iprovine de la denumirea matricii i nu este folosit n MATLAB,

    pentru evitarea unor confuzii. Se utilizeaz sintaxa:eye(m,n)

    Aceast funcie returneaz o matrice identitate mxn. Dac se folosete:eye(n)

    atunci este vorba de o matrice identitate ptratic nxn.

    -MatriceaonesEste o matrice care are toate elementele egale cu 1. Forme posibile: ones(n) este o matrice nxn cu elemente de 1 ones(m,n) sau ones([m,n]) sunt matrici mxn cu elemente de 1. ones(size(A)) are aceeai dimensiune cu o matrice A i are elemente de 1

    -Matricea zerosEste o matrice care are toate elementele egale cu 0. Forme posibile:zeros(n) este o matrice nxn de zerourizeros(m,n) sau zeros([m,n]) sunt matrici mxn de 0

    zeros(size(A))are aceeai dimensiune cu o matrice A i are elemente de 0

    5.2. Rezolvarea ecuaiilor liniareUna din cele mai importante probleme ale calculului din domeniul tehnic este soluionarea

    sistemelor de ecuaii liniare.Definirea problemei este pe scurt urmtoarea:

    8

  • 8/8/2019 PI - Suport

    9/42

    Dac se dau dou matrici A iB, exist o matrice unicXastfel nctAX = B sau XA = B ?

    MATLAB utilizeaz notaia din cazul scalar i pentru descrierea soluiei unui sistem de ecuaiiliniare. Cele dou simboluri utilizate n cazul scalar al diviziunii (mpririi) i anume slash, /, ibackslash, \, sunt folosite pentru definirea soluiei:

    X = A\B este soluia ecuaiei matricealeAX = B.X = B/A este soluia ecuaiei matricealeXA = B.

    n practic, ecuaiile liniare de formaAX = B sunt mai des ntlnite.

    Deoarece matriceaA, care conine de fapt coeficienii sistemului, poate s nu fie ptratic ci detipul general mxn, exist trei cazuri posibile:

    m = n. Sistem ptratic. Se poate cuta o soluie exact.m > n. Sistem supradeterminat (incompatibil). Se caut o soluie de tip cele mai

    mici ptrate.m < n. Sistem nedeterminat. Se poate cuta o soluie cu cel mult m componente

    nenule.

    n multe cazuri MATLAB-ul d un diagnostic (o soluie) automat prin examinareacoeficienilor matricelor. Cteva din aceste cazuri:

    Permutarea matricilor triunghiulare

    Matrici simetrice, pozitiv definite

    Matrici ptratice nesingulare

    Sisteme rectangulare supradeterminate

    Sisteme rectangulare nedeterminate

    Sisteme ptraticeCel mai simplu caz este cel corespunztor unei matrice ptratice A i a unui vector coloan b.

    Soluia x = A\b are aceeai dimensiune ca b.Dac A i B sunt ptratice de aceleai dimensiuni atunci soluia X = A\B are aceeai

    dimensiune caA sau B.Observaie: Dac matriceaA este singular (determinant nul) atunci soluia ecuaieiAX = B nu

    exist sau nu este unic.

    Sisteme nedeterminateSistemele liniare nedeterminate au mai multe necunoscute dect ecuaii. Dac exist iconstrngeri (restricii) suplimentare, atunci este vorba de o problem de programare liniar.

    Operatorul backslash din MATLAB permite cutarea soluiei n cazul fr restricii. Soluia nueste niciodat unic. MATLAB-ul gsete o soluie de baz (care are cel mult m componentenenule). Gsirea soluiei particulare se bazeaz pe factorizarea QR (decompoziia ortogonal-triunghiular).

    Vom prezenta un exemplu (care utilizeaz funcia matriceal random rand). R = fix(10*rand(2,4))R =

    6 8 7 3

    3 5 4 1

    b = fix(10*rand(2,1))b =

    9

  • 8/8/2019 PI - Suport

    10/42

    12

    Sistemul liniarRx = b implic dou ecuaii cu 4 necunoscute. Soluia se poate afia n formatraional (coeficienii sunt numere ntregi). Soluia particular se obine astfel:

    format rat p = R\bp =

    05/70

    -11/7

    Soluia complet a sistemului nedeterminat se obine prin adugarea unui vector arbitrar dinspaiul nul folosind funcia null:

    Z = null(R,'r')Z =

    -1/2 -7/6-1/2 1/21 00 1

    Orice vector de forma x=p+Z*q pentru q vector arbitrar satisface R*x=b.

    5.3. Inverse i determinani Dac matricea A este ptratic i nesingular, ecuaiile AX = Ii XA = Iau aceeai soluie X.

    Aceast soluie este chiar inversa luiA, notat matematic prinA-1, i poate fi calculat cu funciainv.

    Determinantul unei matrice se poate calcula cu funcia det (trebuie acordat atenieproblemelor de scalare i rotunjire care apar n calcule).

    Exemple:

    A=[1 1 1;1 2 3;1 3 6];

    d = det(A)d =

    1

    X = inv(A)X =

    3 -3 1-3 5 -21 -2 1

    PseudoinverseMatricile dreptunghiulare (rectangulare) nu au inverse sau determinani. Atunci cel puin unadin ecuaiile AX = Isau XA = Inu are soluie. Se poate utiliza n acest caz o pseudoinvers care

    poate fi calculat cu funcia pinv:

    A1=[A;[1 3 5]]

    A1 =1 1 11 2 31 3 61 3 5

    X=pinv(A1)

    X =1.5000 -0.0000 1.0000 -1.5000

    10

  • 8/8/2019 PI - Suport

    11/42

    -0.8333 0.6667 -2.0000 2.16670.1667 -0.3333 1.0000 -0.8333

    5.4. Funcii de matrice. Valori propriiPuteri de matrice

    Dac A este o matrice ptratic i p este un numr ntreg pozitiv, atunci A^p multiplic pe A cu

    ea nsi de p ori. X = A^2X =

    3 6 106 14 2510 25 46

    Dac A este ptratic i nesingular, atunci A^(-p) multiplic pe inv(A) cu ea nsi de pori.

    Y=A^(-2)Y =

    19.0000 -26.0000 10.0000

    -26.0000 38.0000 -15.000010.0000 -15.0000 6.0000

    Ridicarea la putere element cu element se face utiliznd operatorul (funcia) .^. De exemplu:

    X = A.^2A =

    1 1 11 4 91 9 36

    Rdcina ptrat de matrice

    Funcia sqrtm(A) permite calculul lui A^(1/2) printr-un algoritm mai precis dectutilizarea puterii de matrice.

    Exponeniala de matriceUn sistem de ecuaii difereniale ordinare cu coeficieni constani poate fi scris:

    undex = x(t) este un vector de funcii de timp iA este o matrice independent de timp.Soluia sistemului poate fi scris prin intermediul exponenialei de matrice

    Funcia expm(A)permite calculul exponenialei de matrice.

    Valori propriiO valoare proprie i un vector propriu ale unei matrice ptraticeA sunt un scalar i un vectorv care satisfac egalitatea

    Cu valorile proprii pe diagonala unei matrice de tip diagonal i cu vectorii propriicorespunztori care formeaz coloanele unei matrice Vvom avea

    Dac Veste nesingular obinem decompoziia (descompunerea) pe baza valorilor proprii:

    Exemplu:

    A=[-1 -3 1;2 -2 -1;0 1 -3]A =

    11

  • 8/8/2019 PI - Suport

    12/42

    -1 -3 12 -2 -10 1 -3

    lambda=eig(A)lambda =-1.7593 + 2.4847i-1.7593 - 2.4847i

    -2.4814

    Lambda va fi un vector care conine valorile proprii ale matricei.Dac funcia eig este utilizat cu dou argumente de ieire vom obine vectorii proprii i

    valorile proprii (acestea sub forma diagonal):

    [V,D]=eig(A)

    V =0.2233 + 0.6835i 0.2233 - 0.6835i 0.31600.6481 - 0.0862i 0.6481 + 0.0862i 0.43680.0765 - 0.2227i 0.0765 + 0.2227i 0.8422

    D =

    -1.7593 + 2.4847i 0 00 -1.7593 - 2.4847i 00 0 -2.4814

    Observaie: Toolbox-ul Symbolic Math extinde capacitatea MATLAB-ului prin conectarea laMaple, care este un sistem de calcul algebric performant. Una din funciile toolbox-ului permitecalculul formei canonice Jordan.

    [X,J]=jordan(A)X =0.1121 0.4440 + 0.1691i 0.4440 - 0.1691i0.1549 -0.0775 + 0.4250i -0.0775 - 0.4250i0.2987 -0.1494 + 0.0434i -0.1494 - 0.0434i

    J =-2.4814 0 0

    0 -1.7593 - 2.4847i 00 0 -1.7593 + 2.4847i

    Forma canonic Jordan este un concept teoretic important, dar nu este indicat folosirea ncazul matricilor mari sau pentru matricile cu elemente afectate de erori de rotunjire sau de alteincertitudini. MATLAB-ul poate folosi n astfel de cazuri descompunerea Schur (funcia schur).

    5.5. Reprezentarea polinoamelor. InterpolareaPolinoameMATLAB-ul furnizeaz funcii pentru operaii polinomiale standard cum ar fi calculul

    rdcinilor, evaluarea polinoamelor, derivarea etc. O parte din aceste operaii precum i modul dereprezentare a polinoamelor ca vectori au fost descrise n capitolul de Fundamente de programare.

    Funciile polinomiale se afl n directorul polyfun:

    Funcie Descriereconv Multiplic polinoamele.deconv mparte polinoamele.poly Returneaz coeficienii dac se dau

    rdcinile; Polinomul caracteristic.polyder Calcul derivatei unui polinom.polyfit Gsirea coeficienilor unui polinom din

    aproximarea unui set de date.

    12

  • 8/8/2019 PI - Suport

    13/42

    polyval Evaluarea unui polinom.polyvalm Evaluarea unui polinom cu argument

    matriceal.residue Descompunere n fracii simple.roots Gsirea rdcinilor unui polinom.

    Funciapoly returneaz coeficienii unui polinom dac dispunem de rdcinileacestuia (este o funcie invers fa de roots):

    p=[1 -1 2 4 1]; r=roots(p)r =

    1.0529 + 1.7248i1.0529 - 1.7248i

    -0.7995-0.3063

    coef=poly(r)

    coef =1.0000 -1.0000 2.0000 4.0000 1.0000

    O alt utilizare a funciei poly este aceea de calculare a coeficienilor polinomuluicaracteristic al unei matrice:

    AA =

    -1 -3 12 -2 -10 1 -3

    poly(A)ans =

    1 6 18 23

    Rdcinile acestui polinom sunt chiar valorile proprii ale matricii A.

    Funciapolyval evalueaz un polinom pentru o valoare specificat a argumentului.

    Funcia polyvalm permite evaluarea unui polinom n sens matriceal. n acest caz polinomul pdin exemplul anterior: p(x) = x4 x3 + 2x2 + 4x + 1 devine p(X) = X4 X3 + 2X2 + 4X + I, unde Xeste o matrice ptratic i I matricea unitate.

    Exemplu: C=polyvalm(p,A)C =

    -75 -61 81

    58 -130 7552 -23 49

    Funciile convi deconvimplementeaz operaiile de nmulire i mprire apolinoamelor.

    Exemple:Fie a(x) = x2 + 2x+3 i b(x) = 4x2 + 5x + 6.

    a = [1 2 3]; b = [4 5 6]; c = conv(a,b)c =

    4 13 28 27 18

    [q,r] = deconv(c,a)q =

    4 5 6

    13

  • 8/8/2019 PI - Suport

    14/42

    r =0 0 0 0 0

    Funciapolyder permite calculul derivatei unui polinom.

    Exemplu: p=[1 -1 2 4 1];

    pderivat=polyder(p)pderivat =

    4 -3 4 4

    Funciapolyfit gsete coeficienii unui polinom (o curb) care aproximeaz un set de daten sensul algoritmului celor mai mici ptrate:

    p = polyfit(x,y,n)

    x i y sunt vectorii care conin setul de date iarn este ordinul polinomului ai crui coeficieni vor fifurnizai la apelarea funciei.

    Exemplu:

    x = [1 2 3 4 5]; y = [5.5 43.1 128 290.7 498.4]; p = polyfit(x,y,3)p =

    -0.1917 31.5821 -60.3262 35.3400

    Pentru plotarea rezultatului se utilizeaz mai nti funcia polyval pentru o trasare ct maiexact a graficului polinomului i apoi se ploteaz estimarea versus datele reale pentru comparaii.

    x2 = 1:.1:5; y2 = polyval(p,x2); plot(x,y,'o',x2,y2)

    Funcia residue se utilizeaz pentru descompunerea n fracii simple.Se aplic n cazul raportului a dou polinoame b i a,

    unde reste un vector coloan, p tot un vector coloan care conine polii iar kun vector linie cutermenii direci.

    Exemplu:

    14

  • 8/8/2019 PI - Suport

    15/42

    b = [-4 8]; a = [1 6 8]; [r,p,k] = residue(b,a)r =

    -128

    p =

    -4-2

    k =[]

    Dac se folosesc trei argumente de intrare (r, p, i k), funcia residue asigur conversianapoi n forma polinomial:

    [b2,a2] = residue(r,p,k)b2 =

    -4 8a2 =

    1 6 8

    InterpolareaInterpolarea este un proces de estimare a valorilor dintre date (puncte) cunoscute. Aplicaiile

    interpolrii sunt numeroase n domenii cum ar fi procesarea numeric a semnalelor i imaginilor.

    MATLAB-ul dispune de mai multe tehnici de interpolare, alegerea unei metode sau alteiafcndu-se n funcie de acurateea necesar, de viteza de execuie i de gradul de utilizare amemoriei.

    Funciile de interpolare se afl n directorul polyfun.

    Funcie Descriere

    griddata Interpolare pe suprafee.interp1 Interpolare monodimensional.interp2 Interpolare bi-dimensional.interp3 Interpolare tri-dimensional.interpft Interpolare mono utiliznd metoda FFT.spline Interpolare spline (cubic).

    Compararea unor metode de interpolare bi-dimensional

    n continuare este preluat i prezentat (informativ) un exemplu de folosire a unor metode deinterpolare bi-dimensional pentru o matrice de date 7 x 7.

    1. Generarea funciei peaks (cu rezoluie mic):

    [x,y] = meshgrid(-3:1:3);z = peaks(x,y);

    15

  • 8/8/2019 PI - Suport

    16/42

    surf(x,y,z)

    2. Generarea unei suprafee mesh fine pentru interpolare:

    [xi,yi] = meshgrid(-3:0.25:3);

    3. Interpolarea cu metoda celei mai apropiate vecinti:zi1 = interp2(x,y,z,xi,yi,'nearest');

    4. Interpolarea cu metoda biliniar:zi2 = interp2(x,y,z,xi,yi,'bilinear');

    5. Interpolarea cu metoda bicubic:zi3 = interp2(x,y,z,xi,yi,'bicubic');

    6. Compararea graficelor corespunztoare diferitelor metode de interpolare:

    7. Compararea contururilor suprafeelor n cazul diferitelor metode de interpolare:

    16

  • 8/8/2019 PI - Suport

    17/42

    6. REPREZENTAREA FUNCIILOR. ECUAII DIFERENIALE6.1. Reprezentarea i plotarea funciilor matematiceReprezentarea funciilor matematice

    Funciile matematice uzuale sunt furnizate de MATLAB ca funcii buit-in (cum ar fisin, cos, log10, log, atan etc.).

    Pentru reprezentarea altor funcii matematice se utilizeaz exprimarea n fiieretip .m .De exemplu, o funcie cum este urmtoarea:

    poate fi creat ntr-un fiier MATLAB de tip function i poate fi utilizat ulterior ca intrare nalte funcii (aa-numitele funcii de funcii a se vedea paragraful 2.3).

    Fiierul care descrie aceast funcie a mai fost prezentat n paragraful 2.3:

    function y = humps(x)y = 1./((x-0.3).^2+0.01)+1./((x-0.9).^2+0.04)-6;

    O alt posibilitate este crearea la nivelul liniei de comand a unui obiect inline prin folosireaunei expresii tip ir de caractere:

    f=inline(`1./((x-.3).^2+.01)+1./((x-.9).^2+.04)-6');

    Pentru a evalua aceast funcie f n 2.0 tastm simplu:

    f(2.0)

    ans =-4.8552

    Alt exemplu:

    f = inline('y*sin(x)+x*cos(y)','x','y')

    f(pi,2*pi)

    ans =3.1416

    Plotarea funciilorPentru reprezentarea grafic a funciilor se poate utiliza funcia fplot. Se pot controla

    limitele axelor de reprezentare grafic.Exemplu: trasarea graficului funciei humps pentru limitele [-5 5] ale axei x:fplot('humps',[-5 5])

    17

  • 8/8/2019 PI - Suport

    18/42

    Dac dorim i precizarea limitelor de reprezentare pe axa y (realizarea unui zoom) folosimcomanda:

    fplot('humps',[-5 5 -10 25])

    Un alt exemplu de folosire direct a funciei fplot:

    fplot('2*sin(x+3)',[-1 1])Se poate realiza i reprezentarea mai multor funcii pe acelai grafic:fplot('[2*sin(x+3), humps(x)]',[-1 1])

    18

  • 8/8/2019 PI - Suport

    19/42

    6.2. Minimizarea funciilor i gsirea zerourilorMATLAB-ul furnizeaz o serie de funcii de nivel nalt care realizeaz sarcini de optimizare a

    funciilor. Aceste funcii sunt grupate n principal pe urmtoarele domenii:

    Minimizarea funciilor de o variabil Minimizarea funciilor de mai multe variabile Setarea opiunilor de minimizare Gsirea zerourilor unor funcii

    Pentru exemplificare vom considera minimizarea unei funcii de o singur variabil i gsirea

    zerourilor pentru aceast funcie.Minimizarea unei funciiPentru gsirea unui minim local al unei funcii scrise ntr-un fiierfunction, se utilizeaz

    funcia fminbnd.Relum aici exemplul din paragraful 2.3: pentru gsirea minimului funciei humps n intervalul

    (0.3, 1) folosim instruciunea:

    x = fminbnd('humps',0.3,1)x =

    0.6370

    Dac dorim o afiare detaliat a pailor fcui de prodedura de minimizare se utilizeazurmtoarea sintax:

    x = fminbnd('humps',0.3,1,optimset('Display','iter'))

    Func-count x f(x) Procedure1 0.567376 12.9098 initial2 0.732624 13.7746 golden3 0.465248 25.1714 golden4 0.644416 11.2693 parabolic5 0.6413 11.2583 parabolic6 0.637618 11.2529 parabolic

    7 0.636985 11.2528 parabolic8 0.637019 11.2528 parabolic

    9 0.637052 11.2528 parabolic

    x =0.6370

    19

  • 8/8/2019 PI - Suport

    20/42

    Gsirea zerourilorFuncia fzero permite gsirea zerourilor unei funcii (este vorba de fapt de o ecuaie cu o

    singur necunoscut). Dac se d un punct de plecare x0pentru procedura de cutare, fzero va cuta un interval n

    jurul acestui punct n care funcia schimb semnul. Dac un astfel de interval este gsit, fzero

    returneaz valoarea pentru care funcia schimb semnul (adic zeroul), iar dac un astfel deinterval nu este gsit returneaz NaN.

    Alt variant permite cutarea ntr-un interval specificat de utilizator.

    Exemplu: gsirea unui zerou al funciei humps n apropiere de -0.2:

    a = fzero('humps',-0.2)a =-0.1316

    Pentru verificare evalum funcia n punctul -0.1316 i gsim ntr-adevr o valoare foarteaproape de zero:

    humps(a)ans =8.8818e -16

    Se poate folosi i varianta cu interval de cutare precizat de utilizator. n continuare este prezentat aceast variant plus folosirea unor opiuni suplimentare pentru afiarea detaliat ainformaiilor despre procedur i a pailor:

    options = optimset('Display','iter'); a = fzero('humps',[-1 1],options)

    Func-count x f(x) Procedure1 -1 -5.13779 initial2 1 16 initial

    3 -0.513876 -4.02235 interpolation4 0.243062 71.6382 bisection5 -0.473635 -3.83767 interpolation6 -0.115287 0.414441 bisection7 -0.150214 -0.423446 interpolation8 -0.132562 -0.0226907 interpolation9 -0.131666 -0.0011492 interpolation10 -0.131618 1.88371e-007 interpolation11 -0.131618 -2.7935e-011 interpolation12 -0.131618 8.88178e-016 interpolation13 -0.131618 -9.76996e-015 interpolation

    Zero found in the interval: [-1, 1].

    a =-0.1316

    6.3. Integrarea numericAria subgraficului unei funciiF(x) poate fi determinat prin integrarea numeric, proces care

    se numete quadratur (quadrature).Pentru rezolvarea integrrii numerice n cazul monodimensional exist dou funcii MATLAB:

    quad, care folosete un algoritm de tip Simpson quad8, care utilizeaz un algoritm de tip Newton

    Exemplu: pentru integrarea funciei humps ntre 0 i 1 folosim comanda

    q = quad('humps',0,1)q =

    29.8583

    20

  • 8/8/2019 PI - Suport

    21/42

    Funciile quad sau quad8 permit i alte argumente de intrare care specific eroarea toleratpentru integrare i alte opiuni (a se vedea cu help).

    Exemplu de integrare numeric: calculul lungimii unei curbeVom considera o curb dat de ecuaiile:

    cu

    O plotare tri-dimensional a acestei curbe poate fi obinut cu

    t = 0:0.1:3*pi; plot3(sin(2*t),cos(t),t)

    -1

    -0.5

    00.5

    1

    -1

    -0.5

    0

    0.5

    1

    0

    2

    4

    6

    8

    10

    Lungimea acestei curbe este dat de formula urmtoare:

    Pentru calculul lungimii trebuie integrat numeric integrala de mai sus. Pentru aceasta secreeaz mai nti o funcie MATLAB care descrie integrandul pe care o numim fcurba:

    function f = fcurba(t)f = sqrt(4*cos(2*t).^2 + sin(t).^2 + 1);

    i apoi se integreaz cu ajutorul funciei quad:

    lungime = quad('fcurba',0,3*pi)lungime =

    1.7222e+01

    6.4. Rezolvarea ecuaiilor diferenialeMATLAB-ul dispune de metode i funcii care pot rezolva problema condiiilor iniiale

    (Cauchy) ale sistemelor de ecuaii difereniale ordinare (ODE Ordinary Differential Equations).n tabelul urmtor sunt prezentate succint cteva din aceste funcii.

    21

  • 8/8/2019 PI - Suport

    22/42

    Categorie Funcie Descriere

    Funcii care rezolvODE

    ode45Rezolv ecuaii difereniale nonstiff, metod de ordinmediu.

    ode23Rezolv ecuaii difereniale nonstiff, metod de ordinsczut.

    ode113 Rezolv ecuaii difereniale nonstiff, metod de ordinvariabil.

    ode15sRezolv ecuaii difereniale stiff i ecuaii algebricedifereniale, metod de ordin variabil.

    ode23sRezolv ecuaii difereniale stiff, metod de ordinsczut.

    ode23tEcuaii difereniale stiff i ecuaii algebrice difereniale,metoda trapezelor.

    ode23tbRezolv ecuaii difereniale stiff, metod de ordinsczut.

    Opiuni ODEodeset

    Creeaz sau schimb opiuni de structur ale ODE.odeget Permite obinerea parametrilor din opiunile ODE.

    Funcii de ieireODE

    odeplot Plotarea soluiilor ODE (n funcie de timp).

    odephas2 Trasarea planului fazelor.

    odephas3 Trasarea spaiului fazelor (tri-dimensional).

    odeprint Permite tiprirea soluiei ODE n fereastra de comand.

    Observaie: La ecuaiile difereniale ordinare de tip stiff (rigide) soluiile pot avea variaiifoarte rapide n timp n raport cu intervalul de timp de integrare i este necesar folosirea unor paide integrare foarte mici, ceea ce nu mai este indicat la ecuaiile nonstiff.

    Exemplu de rezolvare: ecuaia van der PolEcuaia van der Pol este un exemplu clasic de ecuaie diferenial:

    unde > 0 este un parametru scalar.

    Pentru implementarea algoritmului de rezolvare este necesar rescrierea ecuaiei de ordinul 2 caun sistem de dou ecuaii difereniale de ordinul 1. Pentru aceasta se introduce variabilay2 care estederivata n raport cu timpul a variabileiy1 . Vom avea

    Pentru a reprezenta n MATLAB acest sistem de ODE n scopul gsirii soluiilor, trebuie scrisn primul rnd un fiier care descrie sistemul (un fiier de tip function). Un fiier ODE accept cel

    puin dou argumente, t i y.

    Pentru ecuaia van der Pol cu = 1, fiierul este urmtorul (y1 iy2 devin y(1) i y(2)):function dy = vdp1(t,y)dy = [y(2); (1-y(1)^2)*y(2)-y(1)];

    22

  • 8/8/2019 PI - Suport

    23/42

    La pasul urmtor, dup ce sistemul de ecuaii a fost scris, se poate utiliza una din metodele derezolvare prezentate n tabelul anterior. Trebuie furnizat un interval de timp pentru care se doretecalculul soluiilor i bineneles condiiile iniiale.

    Pentru exemplul van der Pol, se poate apela la ode45. Dac intervalul de timp este [0 20]iar condiiile iniiale y(1)=2 i y(2)=0 vom avea

    [t,y] = ode45('vdp1',[0 20],[2; 0]);

    Ieirea [t,y] este un vector coloan care conine vectorul timp t i soluia de tip tablou y.Fiecare linie din y corespunde unui element (moment) din vectorul timp.

    Pentru trasarea graficului cu soluia se folosete comanda plot:

    plot(t,y(:,1),'-',t,y(:,2),'- -')title('Solution of van der Pol Equation, mu = 1');xlabel('time t');ylabel('solution y');legend('y1','y2')

    Se obine urmtorul grafic care conine evoluiile celor dou componente ale soluiei n timp:

    Dac se dorete i trasarea planului fazelor se pot folosi liniile de comand:

    options=odeset('OutputFcn','odephas2');[t,y] = ode45('vdp1',[0 20],[2; 0],options);

    i obinem planul fazelor (este vorba de trasarea componentei y(1) versus componenta y(2)):

    23

  • 8/8/2019 PI - Suport

    24/42

    -3 -2 -1 0 1 2 3-3

    -2

    -1

    0

    1

    2

    3

    OperatoriOperatorii MATLAB pot fi clasificai n trei categorii:

    Operatori aritmetici

    Operatori relaionali care compar operanzii cantitativ

    Operatori logici

    Operatori aritmetici

    + Adunare : Operatorul dou puncte

    - Scdere .^ Putere

    .* nmulire .' Transpusa

    ./ mprire la dreapta ' Transpusa complex conjugat

    .\ mprire la stnga * nmulire de matrici

    + Plus unar / mprire matriceal la dreapta

    - Minus unar \ mprire matriceal la stnga

    ^ Putere de matrice

    Cu excepia unor operatori matriceali, operatorii aritmetici lucreaz cu elementelecorespondente ale unor tablouri de dimensiuni egale. Pentru vectori i tablouri dreptunghiulareambii operanzi trebuie s aib aceeai dimensiune, cu excepia situaiei n care unul dintre ei estescalar. n acest caz MATLAB-ul aplic scalarul fiecrui element al celuilalt operand (proprietateade expansiune scalar).

    Operatori relaionali< Mai mic Mai mare

    24

  • 8/8/2019 PI - Suport

    25/42

    >= Mai mare sau egal== Egal cu~= Diferit de

    Operatorii relaionali compar elementele corespondente ale unor tablouri de dimensiune egal.

    Operatorii relaionali lucreaz totdeauna element cu element. Exemplu: A = [2 7 6;9 0 5;3 0.5 6]; B = [8 7 0;3 2 5;4 -1 7];

    A == Bans =

    0 1 00 0 10 0 0

    Operatori logici& AND (I)

    | OR (SAU)~ NOT (NU)

    O expresie care utilizeaz operatorul & este adevrat dac ambii operanzi sunt adevrai. ntermeni numerici, expresia este adevrat dac ambii operanzi sunt nenuli. Exemplu:

    u = [1 0 2 3 0 5]; v = [5 6 1 0 0 7]; u & vans =

    1 0 1 0 0 1

    O expresie care utilizeaz operatorul | este adevrat dac unul dintre operanzi este logicadevrat sau dac ambii operanzi sunt adevrai. n termeni numerici, expresia este falsdac ambii operanzi sunt nuli. Exemplu:

    u | vans =

    1 1 1 1 0 1

    O expresie care utilizeaz operatorul NOT, ~, neag operandul. n termeni numerici, oriceoperand nenul devine nul i orice operand nul devine unu. Exemplu:

    ~uans =

    0 1 0 0 1 0

    Operatorii logici lucreaz cu elementele corespondente ale unor tablouri de dimensiuni egale.Pentru vectori i tablouri dreptunghiulare ambii operanzi trebuie s aib aceeai dimensiune, cuexcepia situaiei n care unul dintre ei este scalar. n acest caz, ca i la operatorii aritmetici,MATLAB-ul aplic scalarul fiecrui element al celuilalt operand.

    Funcii logicen plus fa de operatorii logici MATLAB-ul furnizeaz i funcii logice:

    Funcie Descriere Exemplexor Realizeaz sau exclusiv. Returneaz logic adevratdac unul din operanzi este adevrat i cellalt fals.

    a = 1; b = 1; xor(a,b)

    25

  • 8/8/2019 PI - Suport

    26/42

    n termeni numerici, returneaz 1 dac un operandeste nenul i cellalt este zero.

    ans =0

    all Returneaz 1 dac toate elementele unui vector suntadevrate sau nenule. Opereaz i cu matrici (pecoloane).

    u = [0 1 2 0]; all(u)ans =

    0

    A = [0 1 2;3 5 0]; all(A)ans =

    0 1 0

    any Returneaz 1 dac oricare din elementeleargumentului sunt adevrate sau nenule; n cazcontrar returneaz 0.

    v = [5 0 8]; any(v)ans =

    1

    Alte funcii:isnan, isinf, find(a se folosi help pentru detalii).

    Operator Nivel de prioritate

    () Prioritate maxim~ (negare).' .^ ' ^ + (plus unar) - (minus unar)

    .* ./ .\ * / \

    + (adunare) - (scdere)

    : = == ~=

    & | Prioritate minim

    7.3. Instruciuni de salt i bucle

    n MATLAB exist mai multe tipuri de instruciuni de control al buclelor: if, mpreun cu else i elseif execut un grup de instruciuni pe baza unei condiii

    logice.

    switch, case i otherwise execut diverse grupuri de instruciuni n funcie devaloarea unei anumite condiii logice.

    while execut un grup de instruciuni de un numr nedefinit de ori, pe baza unei condiiilogice.

    for execut un grup de instruciuni de un numr fixat de ori.

    break termin execuia pentru o bucl for sau while.

    try...catch schimb controlul buclei dac o eroare este detectat n timpul execuiei.

    return provoac ntoarcerea la funcia care a apelat prcedura.

    Toate instruciunile de salt folosesc comanda end pentru a indica sfritul blocului respectiv.

    Exemple de utilizare a unor instruciuni de salt:

    Instruciunile if i elseif:

    if n < 0 % Daca n este negativ afiseaza un mesaj de eroare.

    26

  • 8/8/2019 PI - Suport

    27/42

    disp('Intrarea trebuie sa fie pozitiva');

    elseif rem(n,2)= =0 %Daca n este pozitiv si par, imparte-l la 2. A = n/2;

    else

    A = (n+1)/2; %Daca n este pozitiv si impar incrementeaza si imparte la 2

    end

    Instruciunea for:

    for i = 1:mfor j = 1:n

    A(i,j) = 1/(i + j - 1);end

    end

    7.4. Evaluarea datelor de tip caracterEvaluarea datelor de tip caracter asigur putere i flexibilitate limbajului MATLAB.

    Funcia eval

    Funcia eval evalueaz un ir de caractere care conine o expresie, o declaraie sau un apel defuncie. n cea mai simpl form, sintaxa este urmtoarea:

    eval('string')

    Exemplu: evaluarea unei expresii folosite la generarea unei matrice Hilbert de ordinul n:t = '1/(i+j-1)';for i = 1:n

    for j = 1:na(i,j) = eval(t);

    end

    end

    Alt exemplu de utilizare a funciei eval pentru o declaraie:eval('t = clock')

    Funcia fevalFuncia feval difer de eval prin faptul c execut o funcie a crui nume este ntr-un ir de

    caractere. Se poate folosi feval i funcia input pentru a alege din mai multe sarcini definite defiiere .m . Exemplu:

    fun = ['sin'; 'cos'; 'log'];k = input('Choose function number: ');x = input('Enter value: ');feval(fun(k,:),x)

    Este indicat folosirea funciei feval n locul funciei eval, deoarece execuia este mairapid.

    8. GRAFICE I INTERFEE GRAFICE N MATLAB8.1. Tehnici de plotaren general, pentru a realiza o reprezentare grafic, trebuie parcurse etapele urmtoare:

    Etapa Instruciuni

    27

  • 8/8/2019 PI - Suport

    28/42

    1.Pregtirea datelor x = 0:0.2:12;y1 = bessel(1,x);y2 = bessel(2,x);y3 = bessel(3,x);

    2. Selectarea ferestreigrafice i pozionareagraficului n fereastr

    figure(1)subplot(2,2,1)

    3. Apelarea uneifuncii elementare deplotare

    h = plot(x,y1,x,y2,x,y3);

    4. Selectareacaracteristicilor liniei imarkerului.

    set(h,'LineWidth',2,{'LineStyle'},{'--';':';'-.'})set(h,{'Color'},{'r';'g';'b'})

    5. Setarea limitelor axelor,gridare (caroiere)

    axis([0 12 -0.5 1])grid on

    6. Completarea graficuluicu etichete pe axe,legend, text

    xlabel('Time')

    ylabel('Amplitude')legend(h,'First','Second','Third')title('Bessel Functions')[y,ix] = min(y1);text(x(ix),y,'First Min \rightarrow',...

    'HorizontalAlignment','right')

    7. Export grafice print -depsc -tiff -r200 myplot

    Funciile de baz folosite la plotare sunt prezentate n tabelul urmtor:Funcie UtilizarePlot Genereaz grafice 2-D cu scalare liniar a axelorPlot3 Genereaz grafice 3-D cu scalare liniar a axelorloglog Genereaz grafice cu scalare logaritmic a axelorsemilogx Genereaz grafice cu scalare liniar a axei y i cu scalare logaritmic a axei xsemilogy Genereaz grafice cu scalare liniar a axei x i cu scalare logaritmic a axei yplotyy Genereaz grafice cu dubl reprezentare a axei y (pe stnga i pe dreapta)

    8.1.1. Plotri 2 D elementareGenerarea graficelor

    Funcia plot are diferite forme n funcie de argumentele de intrare. Dac de exemplu yeste un vector, plot(y) produce un grafic liniar al elementelor lui

    y versus indexul elementelor sale. Dac se specific doi vectori ca argumente, plot(x,y) produce graficul lui y versus

    x.

    Exemplu: t = 0:pi/100:2*pi;y = sin(t);plot(t,y)grid on

    28

  • 8/8/2019 PI - Suport

    29/42

    Se pot realiza grafice multiple utiliznd un singur apel al funciei plot. MATLAB-ulrealizeaz automat o reprezentare cu culori diferite pentru a permite distingerea graficelor.Exemplu:

    y2 = sin(t-0.25);y3 = sin(t-0.5);plot(t,y,t,y2,t,y3)

    Specificarea stilului de linieSe pot crea diferite tipuri de linii pentru fiecare set de date prin folosirea unor identificatori de

    tip string n funcia plot. Exemplu:

    t = 0:pi/100:2*pi;y = sin(t);y2 = sin(t-0.25);y3 = sin(t-0.5);plot(t,y,'-',t,y2,'--',t,y3,':')

    29

  • 8/8/2019 PI - Suport

    30/42

    Funciile de plotare accept deci argumente de tip caracter care specific stilul liniei,

    simbolurile utilizate pentru marker, culoarea etc. Forma general este:plot(x,y,'linestyle_marker_color')

    unde linestyle_marker_coloreste un ir de caractere construit din: Un stil de linie (de exemplu linie punctat, plin etc.) Un tip de marker (de exemplu x, *, o, etc.) Un specificator de culoare (c, m, y, k, r, g, b, w)

    Se poate folosi un specificator sau mai muli, n orice ordine. De exemplu,'go--'

    definete o linie ntrerupt, cu markere circulare, ambele colorate n verde.

    Specificarea culorii i dimensiunii liniilor

    Caracteristicile liniilor se pot controla prin specificarea unor valori pentru proprietile linilor: LineWidth specific limea unei linii. MarkerEdgeColor seteaz culoarea markerului sau culoarea marginilor

    markerului n cazul anumitor forme (cerc, ptrat etc.) MarkerFaceColor seteaz culoarea interiorului markerelor. MarkerSize specific dimensiunea markerului.

    Exemplu:

    x = -pi:pi/10:pi;y = tan(sin(x)) - sin(tan(x));plot(x,y,'--rs','LineWidth',2,...

    'MarkerEdgeColor','k',...'MarkerFaceColor','g',...'MarkerSize',10)

    30

  • 8/8/2019 PI - Suport

    31/42

    Suprapunerea unor grafice peste un grafic existentSe pot aduga grafice peste unul existent cu comanda hold. Dac se seteaz hold on,

    MATLAB-ul nu nltur graficul existent, ci suprapune noul grafic n aceeai fereastr grafic.Exemplu:

    semilogx(1:100,'+')hold onplot(1:3:300,1:100,'--')hold off

    Plotarea simultan a markerelor i liniilorPentru plotarea markerelor (care indic punctele corespunztoare datelor) i a liniilor (care

    unesc aceste date) se specific att tipul markerului ct i stilul liniei. Exemplu:

    x = 0:pi/15:4*pi;y = exp(2*cos(x));plot(x,y,'-r',x,y,'ok')

    31

  • 8/8/2019 PI - Suport

    32/42

    Plotarea datelor din matriciAtunci cnd funcia plot este utilizat cu un singur argument de tip matrice:

    plot(Y)

    va fi realizat un grafic pentru fiecare coloan a matricii, cu axax reprezentnd indexul de linie 1:m,cu m numrul liniilor din Y.

    Exemplu: cu instruciunea Z = peaks; este creat o matrice 49x49 obinut printr-oevaluare de funcie. Dac plotm matricea cu plot(Z)vom avea un grafic cu 49 de linii.

    Plotarea cu axa Y dublComanda plotyy permite crearea unor grafice pentru dou seturi de date i cu reprezentare

    dubl a axei Y, pe partea stng i pe partea dreapt.Exemplu:

    t = 0:pi/20:2*pi;y = exp(sin(t));plotyy(t,y,t,y,'plot','stem')

    32

  • 8/8/2019 PI - Suport

    33/42

    Setarea parametrilor axelorMATLAB-ul seteaz automat limitele axelor i gradarea acestora. Se pot ns folosi i setrile

    utilizatorului, cu comenzile:

    axis seteaz axele pentru fereastra grafic curent.

    axes creeaz axe noi cu caracteristici specificate.

    get i set permit obinerea i setarea unor proprieti ale axelor.

    gca returneaz identificatorul axelor curente.

    Se pot parcurge n detaliu aceste comenzi prin apelarea la help.

    Afiarea unor grafice multiple n aceeai fereastr grafic

    Se poate realiza o afiare a mai multor grafice n aceeai fereastr prin intermediul funciei

    subplot.Funcia subplot(m,n,i) desparte fereastra de tip figur ntr-o matrice m x n de micisubploturi (subgrafice) i selecteaz subplotul i ca grafic curent. Exemplu:

    t = 0:pi/20:2*pi;[x,y] = meshgrid(t);subplot(2,2,1)plot(sin(t),cos(t))axis equalsubplot(2,2,2)z = sin(x)+cos(y);plot(t,z)axis([0 2*pi -2 2])

    subplot(2,2,3)z = sin(x).*cos(y);plot(t,z)axis([0 2*pi -1 1])subplot(2,2,4)z = (sin(x).^2)-(cos(y).^2);plot(t,z)axis([0 2*pi -1 1])

    33

  • 8/8/2019 PI - Suport

    34/42

    Comenzi de marcare, etichetare i gradare a graficelor

    MATLAB-ul furnizeaz comenzi de etichetare a fiecrei axe i de plasare a unui text n oriceloc din grafic. Comenzile sunt prezentate n tabelul urmtor.

    Comand Descriere

    title Adaug un titluxlabel Adaug o etichet pe axaxylabel Adaug o etichet pe axayzlabel Adaug o etichet pe axazlegend Adaug o legendText Afieaz un text la o locaie specificatGtext Plaseaz textul pe grafic utiliznd mouse-ul

    Etichetarea axelor

    Se pot aduga etichete pe axe cu comenzile xlabel, ylabel, zlabel.Exemplu:xlabel('t = 0 to 2\pi','FontSize',16)ylabel('sin(t)','FontSize',16)title('\it{Value of the Sine from Zero to Two

    Pi}','FontSize',16)

    34

  • 8/8/2019 PI - Suport

    35/42

    MATLAB-ul interpreteaz caracterele care urmeaz dup backslash "\" ca i comenzi TeX.Aceste comenzi permit reprezentarea unor simboluri cum ar fi literele greceti sau sgeile.

    Adugarea textelorPrin utilizarea funciei text se poate plasa un text (ir de caractere) oriunde pe grafic.

    Exemplu:text(3*pi/4,sin(3*pi/4),...

    '\leftarrowsin(t) = .707',...'FontSize',16)

    text(pi,sin(pi),'\leftarrowsin(t) = 0',...'FontSize',16)

    text(5*pi/4,sin(5*pi/4),'sin(t)=-.707\rightarrow',...'HorizontalAlignment','right',...'FontSize',16)

    Plasarea textului n mod interactiv

    35

  • 8/8/2019 PI - Suport

    36/42

    8.1.2. Grafice 2 D specializate

    Grafice de tip Bar i AreaFuncie Descriere

    Bar Afieaz coloanele unor matrici mxn ca m grupe de n bare verticaleBarh Afieaz coloanele unor matrici mxn ca m grupe de n bare orizontalebar3 Afieaz coloanele unor matrici mxn ca m grupe de n bare verticale 3-Dbar3h Afieaz coloanele unor matrici mxn ca m grupe de n bare orizontale tridimensionale

    3-DArea Afi eaz datele din vectori ca suprafe e

    Grafice Bar grupateCa setare implicit, un grafic cu bare reprezint fiecare element dintr-o matrice cu o singur

    bar. n cazul unui grafic 2-D, barele create cu funcia bar sunt distribuite de-a lungul axei x, cufiecare element dintr-o coloan desenat la alt locaie. Toate elementele dintr-o linie suntreprezentate grupat la aceeai locaie pe axax.

    Exemplu:

    Y = [5 2 18 7 39 8 65 5 54 3 2];

    bar(Y)

    Grupele de coloane

    reprezint linii dinY.

    Grafice Bar 3-D separate

    Funcia bar3, n cea mai simpl form, traseaz fiecare element ca un bloc separat de tip 3-D,cu elementele fiecrei coloane distribuite de-a lungul axei y. Barele care reprezint elementele dinprima coloan a unei matrice sunt centrate la 1 pe axax .a.m.d. Barele care reprezint elementeledin ultima coloan sunt centrate la valoarea size(Y,2) de pe axax. Exemplu: bar3(Y).

    36

  • 8/8/2019 PI - Suport

    37/42

    Ultimul grup debare reprezint

    ultima linie din Y

    Grafice Bar 3-D grupatePentru a realiza un grafic de bare grupate 3 D se specific argumentul 'group':

    bar3(Y,'group')

    Ultimul grup de bare

    reprezint ultima linie

    Grafice statistice - pie chartsGraficele pie afieaz procentul cu care fiecare element al unui vector sau matrice contribuie la

    suma tuturor elementelor. Funciile pie i pie3 creeaz grafice 2-D i 3-D.n continuare prezentm un exemplu de vizualizare a ponderii a trei produse din totalul

    vnzrilor. Se consider o matrice X, pentru care fiecare coloan reprezint vnzrile anuale pentructe un produs, pe o perioad de nregistrri de 5 ani:

    X = [19.3 22.1 51.6;34.2 70.3 82.4;61.4 82.9 90.8;50.5 54.9 59.1;29.4 36.3 47.0];

    Se pot calcula vnzrile pentru fiecare produs n cei 5 ani cu ajutorul funciei:x = sum(X);

    Dac utilizm argumentul de intrare explode putem reprezenta ntr-un mod explodat caredintre produse a avut o contribuie mai mare la vnzri (de exemplu). Programul are urmtoareaform:

    explode = zeros(size(x));[c,offset] = max(x);explode(offset) = 1;h = pie(x,explode); colormap summer

    37

  • 8/8/2019 PI - Suport

    38/42

    Crearea de grafice tip conturFunciile contour i contour3 afieaz contururi 2-D i 3-D. Funciile cer un singur argument,

    i anume o matrice, ale crei date sunt interpretate ca nlimi fa de un plan.Pentru a seta numrul de niveluri de contur (implicit se realizeaz automat pe baza valorilor

    minime i maxime) se folosete un argument suplimentar opional. De exemplu,[X,Y,Z] = peaks;contour(X,Y,Z,20)

    afieaz 20 de contururi ale funciei peaks ntr-o vedere bidimensional.

    Dac dorim o reprezentare 3 D putem folosi comenzile:[X,Y,Z] = peaks;contour3(X,Y,Z,20)h = findobj(`Type','patch');set(h,'LineWidth',2)title('Twenty Contours of the peaks Function')

    38

  • 8/8/2019 PI - Suport

    39/42

    AnimaieSe pot crea secvene animate n MATLAB pe dou ci:

    Salvarea unui numr de imagini i rularea lor ca pe un film.

    tergerea continu i redesenarea unor obiecte pe ecran, fcnd schimbri n modincremental la fiecare redesenare.

    8.1.3. Plotri tridimensionale (3 D)

    Paii tipici care trebuie parcuri pentru trasarea unor grafice tridimensionale sunt prezentai ncontinuare.

    Etapa Instruciuni

    1.Pregtirea datelor Z = peaks(20);

    2. Selectarea ferestreigrafice i poziionareagraficului n fereastr

    figure(1)subplot(2,1,2)

    3. Apelarea unei funciide plotare 3-D

    h = surf(Z);

    4a. Setarea unei hri deculori i a unui algoritmde umbrire

    colormap hotshading interpset(h,'EdgeColor','k')

    4b. Adugarea uneiiluminri

    light('Position',[-2,2,20])lighting phongmaterial([0.4,0.6,0.5,30])set(h,'FaceColor',[0.7 0.7 0],...

    'BackFaceLighting','lit')

    5. Setarea unui punct devizualizare

    view([30,25])

    set(gca,'CameraViewAngleMode','Manual')

    6. Setarea limitelor axelor axis([5 15 5 15 -8 8])

    39

  • 8/8/2019 PI - Suport

    40/42

    i a marcajelor set(gca'ZTickLabel','Negative||Positive')

    7. Setareaproporionalitii

    set(gca,'PlotBoxAspectRatio',...[2.5 2.5 1])

    8. Completarea graficului

    cu etichete, legend, text

    xlabel('X Axis')ylabel('Y Axis')

    zlabel('Function Value')title('Peaks')

    9. Operaiuni de tiprire set(gcf,'PaperPositionMode','auto')print -dps2

    Reprezentarea unei matrice ca o suprafaMATLAB-ul definete o suprafa prin coordonatele zale punctelor de deasupra unui caroiaj

    dreptunghiular n planul x-y. Graficul este format prin unirea punctelor adiacente cu linii drepte.Plotrile de suprafee sunt utile pentru vizualizarea matricilor care sunt prea mari pentru a fi afiaten form numeric i pentru trasarea graficelor funciilor de dou variabile.

    MATLAB-ul poate crea diferite forme de trasare a suprafeelor:

    Funcie Utilizare

    mesh, surf Trasare a unei suprafee

    meshc, surfc Trasarea suprafeei, inclusiv conturul

    meshz Trasarea suprafeei, inclusiv planul de referin

    pcolor Plotare plan a suprafeei (valorile sunt proporionale doar cu culoarea)surfl Trasarea suprafeei luminat din direcia specificat

    surface Funcie de nivel sczut pentru crearea unor obiecte tip grafice suprafa

    Grafice realizate cu mesh i surfComenzile mesh i surf genereaz suprafee 3-D din datele provenite de la matrici. Dac Z

    este o matrice pentru elementele creia Z(i,j) se definete nlimea unei suprafee peste uncaroiaj (i,j) atunci

    mesh(Z)

    genereaz o imagine colorat, caroiat a suprafeei i o afieaz n vedere 3-D.

    Similar, surf(Z)

    genereaz o imagine colorat, continu a suprafeei i o afieaz n vedere 3-D.n cazul comenzii mesh se pot folosi comenzi de tipul shading pentru eliminarea liniilor de

    tip mesh (shading flat) sau pentru interpolarea umbririlor de-a lungul faetelor suprafeei(shading interp).

    40

  • 8/8/2019 PI - Suport

    41/42

    Vizualizarea funciilor de dou variabilePrimul pas care trebuie parcurs pentru trasarea graficului unei funcii de dou variabile, z=

    f(x,y), este de a genera matricile X i Y care definesc domeniul n care va fi vizualizat funcia. Apoise utilizeaz aceste matrici pentru evaluare i trasarea graficului funciei.

    Funcia meshgrid transform domeniul specificat prin doi vectori, x i y, n matricile X i Y.Liniile matricei X sunt copii ale vectorului x i coloanele matricei Y sunt copii ale vectorului y.

    Pentru a vedea cum se folosete meshgrid, vom considera funcia sin(r)/r (numit funciasinc). Pentru a evalua funcia ntre -8 i 8 i pentru x i pentruy, este necesar doar un argument detip vector pentru meshgrid, care va fi utilizat n ambele direcii:

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

    Matricea R conine distanele de la centru (originea), iar eps este adugat pentru a evitamprirea la zero.

    Acum se poate forma funciasinc i se poate realiza plotarea cu mesh.Z = sin(R)./R;mesh(Z)

    Se poate realiza o mbuntire a reprezentrii grafice n condiiile utilizrii acelorai date, prinfolosirea unor faciliti de iluminare i ajustare a imaginii (daspect, axis, camlight,view).

    Exemplu:surf(X,Y,Z,'FaceColor','interp','EdgeColor','none',...

    'FaceLighting','phong')daspect([5 5 1]);axis tight;view(-50,30);camlight left

    41

  • 8/8/2019 PI - Suport

    42/42