curs3_b

Upload: cosmin-ghinea

Post on 19-Oct-2015

24 views

Category:

Documents


0 download

DESCRIPTION

Curs.

TRANSCRIPT

  • 7/14/2019 Curs3_b

    1/33

    CURS 3

    1. Limbajul de programare MATLAB/Octave

    2. Algebra liniar. Matrici speciale. Rezolvarea sistemelor

    de ecuaii liniare3. Calcul simbolic in MATLAB

    4. Grafica 2D si 3D

  • 7/14/2019 Curs3_b

    2/33

    Limbajul de programare MATLAB/Octave

    D

    KERNELFuncii de sistem

    (funcii built - in)

    Funcii M-file

    Funcii utilizator

  • 7/14/2019 Curs3_b

    3/33

    Octave(funcia poate fi scris n spaiul de lucru sau ntr-un fiier

    de tip Notepad, salvat n Octave/bin)

    MATLABfuncia poate fi scris doar n editorul

    propriu, salvat n MATLAB/bin

    function name

    body

    end

  • 7/14/2019 Curs3_b

    4/33

    Exemplu:s se scrie o funciepentru determinarea radacinilor unei ecuatii de

    grad 2, n care coeficienii a, b i c sa poat fi introdui de la tastatur la apelarea

    funciei

    function ecuatieclear all

    a=input(a=)

    b=input(b=)

    c=input(c=)delta=b^2-4*a*c;

    r1=(-b+sqrt(delta))/2/a/c;

    r2=(-b-sqrt(delta))/2/a/c;disp(cele doua radacini ale ecuatiei sunt:)

    [r1 r2]

    endfunction

  • 7/14/2019 Curs3_b

    5/33

    Salvarea sesiunii de lucru(mai putin partea grafica) intr-un fisier text se face

    cu comanda diary nume_fisier. In fisierul nume_fisier, care se salveaza tot in

    directorul bin se vor pastra toate comenzile si rezultatele obtinute pana la

    intalnirea comenzii diary off.

    Salvarea graficelor

    print('nume_grafic','-doptiune') salveaza graficul cu numele specificat

    (nume_grafic), in varianta de format grafic specificat prin optiune (extensia

    fisierului).

    print -doptiune nume_grafic -d inseamna -deviceUnele dintre optiunile de format grafic sunt (vezi help print):

    eps (formatEncapsulated PostScript)

    epsc2 (formatEncapsulated Postscript, color, nivel 2) este recomandat,

    deoarece are cea mai mare rezolutie

    png (formatPortable Network Graphic, 24-bit, color)

    tiff saujpeg (format format TIFF sau formatJPEG) ( rezolutie slaba)Pentru marirea rezolutiei, in MATLAB se poate apela - djpeg, unde

    este nivelul de calitate (rezolutie); exemplu de utilizare: -djpeg90 (pentru nivel

    de calitate = 90)

  • 7/14/2019 Curs3_b

    6/33

    meta (utilizat in MATLAB si in GNU Octave = formatMetafile cu extensia

    emfpentru Windows, recomandat pentru inserarea graficului intr-un document

    editat in MS Word)

    emf (utilizat doar in GNU Octave = formatMetafilepentru Windows,recomandat pentru inserarea graficului in document din MS Word)

    gif (utilizat doar in GNU Octave = format imagine GIF)

    Exemplu:

    x = 1:10, y=x, plot(x,y), print('dreapta.emf', '-dmeta')

    va salva graficul dreapta.emf; acelasi lucru rezulta daca se scrie: print -dmeta

    dreapta.emf

    iar pentru a salva graficul dreapta.eps, se scrie: print -depsc2 dreapta.epsFisierele PostScript ps si Encapsulated PostScript epspot fi vizualizate cu

    GSview (numit si Ghost View) =free software

    Copierea ferestrei de lucru MATLAB/Octave se poate face cu

    Alt+PrtScn i paste ntr-un document .doc.

  • 7/14/2019 Curs3_b

    7/33

    Dac intruciunile pentru determinarea rdcinilor ecuaiei sunt pstrate

    ntr-un fiier ASCI, salvat n directorul bin al MATLAB/Octave, acesta

    reprezint un script, iar la apelarea n linia de comand a numelui fiierului, vor

    fi executate instruciunile care se gasesc n acesta.

    clear all

    echo on

    a=input(a=)

    b=input(b=)

    c=input(c=)delta=b^2-4*a*c;

    r1=(-b+sqrt(delta))/2/a/c;

    r2=(-b-sqrt(delta))/2/a/c;

    disp(cele doua radacini ale ecuatiei sunt:)[r1 r2]

  • 7/14/2019 Curs3_b

    8/33

    Exemplu: S se scrie un script care s construiasc o matrice ptratic dedimensiune n =100+kn care elementele de pe diagonala principal sunt egale

    cu 4, cele de pe diagonala de deasupra i de dedesubtul diagonalei principalesunt egale cu2, iar restul cu 0.

    mnmmm

    n

    n

    n

    aaaa

    aaaaaaaa

    aaaa

    A

    321

    3333231

    2232221

    1131211

    4200

    2420

    0242

    0024

    Se observ c diagonala principal are indicii i=j, iar indicii pentru supra

    i subdiagonala respecta condiia (i-j)= 1

  • 7/14/2019 Curs3_b

    9/33

    n=100+1; %k=1

    A=zeros(n);for i=1:n

    for j=1:n

    if i==j

    A(i,j)=4;

    elseif abs(i-j)==1

    A(i,j)=-2;

    else

    A(i,j)=0;

    endif

    endfor

    endfor

    [A]

  • 7/14/2019 Curs3_b

    10/33

    Algebra liniar. Matrici speciale. Rezolvarea sistemelor

    de ecuaii liniare

    bxaxxxa

    bxaxaxa

    bxaxaxa

    mnmnmm

    nn

    nn

    .....

    ........................................

    .....

    .....

    2211

    22222121

    11212111

    Se scrie matricial : BXA , unde

    aaa

    aaa

    aaa

    mnmm

    n

    n

    A

    ...

    ............

    ...

    ...

    21

    22221

    11211

    ,

    mb

    b

    b

    B ...

    2

    1

    ,iar

    mx

    x

    x

    X ...

    2

    1

    este vectorul care conine

    soluia sistemului.

  • 7/14/2019 Curs3_b

    11/33

    Sistemul poate fi compatibil determinat (det(A)0)

    nedeterminat

    incompatibil (nu are soluii)

    Conform teoremei KroneckerCapelli sistemul este compatibil

    dac rangul matricii sistemului este egal cu rangul matricii extinse.

    >> rank(A) == rank([A B])

    >> if det(A)~=0

    BXA solutia sistemului se obtine BAX 1

    >> X=inv(A)*B

    >>X=A\B

    Exist situaii practice, n care un sistem care descrie un

    fenomen fizic are mai multe ecuaii dect necunoscute sau mai

    multe necunoscute dect ecuaiisau care din punct de vedere

    strict matematic nu are soluii, caz n care se caut o soluie

  • 7/14/2019 Curs3_b

    12/33

    aproximativ care verific cel mai bine sistemul (prin metoda

    celor mai mici ptrate).

    Operatorul \ sau pinvrezolv astfel de situaii.

    Intruct A este dreptunghiular (deci nu i se poate calcula

    inversa), ecuaia matricial se nmulete la stnga cu

    transpusa acesteia:

    BAXAA TT BAAAXAAAA TTTT 11

    Matrice ptratic

    I (matricea identic)

    pinv(A) = pseudoinversa

    >> X=pinv(A)*B

    >> X=A\B

  • 7/14/2019 Curs3_b

    13/33

    Matrici speciale:

    - matricea nul zeros(n) = creeaz o matrice ptrat nxn cu elemente

    nule, iar zeros(n,m) are dimensiunea nxm

    - matricea unitate ones(n), respectiv ones(n,m)

    - matricea identic eye(n), eye(n,m)

    -matricea Hilbert

    - matricea magica

    >> magic(n)

    Melancolia, gravur deAlbrecht Drer,1514

    http://ro.wikipedia.org/wiki/Albrecht_D%C3%BCrerhttp://ro.wikipedia.org/wiki/Albrecht_D%C3%BCrerhttp://ro.wikipedia.org/wiki/Albrecht_D%C3%BCrer
  • 7/14/2019 Curs3_b

    14/33

    3. Calcul simbolic in MATLAB

    In MATLAB pot fi efectuate in mod simbolic o serie de calcule matematice cum ar

    fi calculul unor derivate, integrale, limite sauserii Taylor; in cadrul algebrei liniare

    determinarea inversei, valorilor proprii, determinantuluisau descompunerii unei matrici

    simbolice, metode de simplificare a expresiilor algebrice, rezolvarea simbolica si

    numerica a ecuatiilor algebrice si diferentiale, functii speciale s.a.

    Inainte de a incepe calculul simbolic trebuie declarate variabilele respectivecu

    instructiunea syms.

    Exemplul 1:

    Dac S este o expresie simbolic,solve(S) determin valorile variabilei simbolice

    din expresia S, pentru care S este zero (0).

    >>symsa b c x

    >>S=a*x^2+b*x+c;

    >>solve(S)

    Rezult cele dou soluii:

    1/2/a*(-b+(b^2-4*a*c)^(1/2))1/2/a*(-b-(b^2-4*a*c)^(1/2))

  • 7/14/2019 Curs3_b

    15/33

    Exemplul 2:

    >>syms a b c d e f g h i>>A=[a b c; d e f; g h i]>>D=det(A)

    Exemplul 3:

    Functia symsum

    - Fie seria lui Riemann 1+1/2^2+1/3^3+.

    >>symsx k

    >>s1 = symsum(1/k^2,1,inf)

    -Fie seria geometrica 1+x+x^2+.

    >>symsx k

    >>s2 = symsum(x^k,k,0,inf)

    A = [ a, b, c]

    [ d, e, f]

    [ g, h, i]

    D = a*e*i - a*f*h - b*d*i + b*f*g + c*d*h - c*e*g

    s1 = 1/6*pi^2

    s2 = -1/(x-1)

  • 7/14/2019 Curs3_b

    16/33

    - Calculul sumei patratelor primelor n numere naturale

    syms k n xsymsum(k^2)

    returneaza: 1/3*k^3-1/2*k^2+1/6*k

    - Calculul sumei patratelor primelor 10 numere naturale

    symsum(k^2,0,10) returns

    385

    -Calculul produsului polinoamelor f(x) = ax + 3 ig(x) =x + b>> syms a b x f g

    >> f = a * x + 3

    f =

    a*x+3

    >> g = x + b

    g =

    x+b

    >> f * g

    ans =

    (a*x+3)*(x+b)

  • 7/14/2019 Curs3_b

    17/33

    4. Grafica 2D i 3D

    n general, pentru a realiza o reprezentare grafic, trebuie parcurse

    etapele urmtoare:

    Etapa Instruciuni

    1.Pregtirea

    atelor

    x = 0:0.2:12;

    y1=f1(x)

    y2=f2(x)

    plot

    ezplot

    plot

    polar(teta,r

  • 7/14/2019 Curs3_b

    18/33

    y3=f3(x)

    2.Apelarea

    unei

    funcii

    elementare

    de plotare

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

    4. Selectarea

    caracteristicilo

    r liniei i

    markerului.

    set(h,'LineWidth',2,{'LineStyle'},{'--';':';'-.'})

    set(h,{'Color'},{'r';'g';'b'})

    5. Setarea

    limitelor

    axelor, afisare

    grid

    axis([0 12 -0.5 1])

    grid on

  • 7/14/2019 Curs3_b

    19/33

    6. Completarea

    graficului cu

    etichete pe

    axe, legend,

    text

    xlabel('x')

    ylabel('y')

    legend(h,'First','Second','Third')

    title('titlul graficului')

    text('alte_notaii')

    Funciile pentru realizarea graficelor:

    Funcie Utilizare

    plot Genereaz grafice 2-D cu scalare liniar a axelor

    loglog Genereaz grafice cu scalare logaritmic a axelor

    semilog

    x

    Genereaz grafice cu scalare liniar a axei y i cu scalare logaritmic

    a axei x

  • 7/14/2019 Curs3_b

    20/33

    semilog

    y

    Genereaz grafice cu scalare liniar a axei x i cu scalare logaritmic

    a axei y

    plotyy Genereaz grafice cu dubl reprezentare a axei y (pe stnga i pedreapta)

    ezplot Se utilizeaz pentru reprezentarea funciilor date sub form

    parametric. De exemplu:

    >> ezplot('x.^2/16+y.^2/3=6',[-15 15])

    polar Pentru cazul n care variabilele sunt exprimate n coordinate polare

  • 7/14/2019 Curs3_b

    21/33

    Reprezentarea mai multor curbe pe acelai grafic

    t = 0:pi/100:2*pi;

    y1= sin(t);y2 = sin(t-0.25);

    y3 = sin(t-0.5);

    plot(t,y1,'-',t,y2,'--',t,y3,':') SAU plot(t,y1)

    hold on

    plot(t,y2)

    plot(t,y3)hold off

  • 7/14/2019 Curs3_b

    22/33

    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 ('r' rosu (red), 'b' albastru (blue), 'k'negru (black; neimplementat in versiunile vechi, 2.x.xx, de GNU

    Octave), 'g' verde (green; de fapt este verde fluorescent), 'm'ciclamen (magenta), 'c' bleu ciel (cyan), 'w' alb (white) si 'y' galben(yellow).

    Se poate folosi un specificator sau mai muli, n oriceordine. De exemplu,

    'ro--'

    definete o linie ntrerupt, cu markere circulare, ambele colorate rosu.

  • 7/14/2019 Curs3_b

    23/33

    Specificarea culorii i dimensiunii liniilor

    Caracteristicile liniilor se pot controla prin specificarea unor valori pentruproprietile linilor:

    LineWidthspecific limea unei linii. MarkerEdgeColor seteaz culoarea markerului sau culoarea marginilor

    markerului n cazul anumitor forme (cerc, ptrat etc.)

    MarkerFaceColorseteaz culoarea interiorului markerelor. MarkerSizespecific 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)

  • 7/14/2019 Curs3_b

    24/33

    Plotarea cu axa Y dubl

    Comandaplotyypermite 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')

  • 7/14/2019 Curs3_b

    25/33

    Setarea parametrilor axelor

    La apelarea comenzii plot, sunt setate automat limitele axelor i gradarea

    acestora. Se pot ns folosi i setrile utilizatorului:

    axis

    axis('auto')axis([x_left, x_right,y_infer, y_sup])

    axis equal sauaxis('equal')

    axis square sauaxis('square')

    axis off sau axis('off')

    Permite scalarea automata a axelor siafiseaza limitele axelor.Permite scalarea automata a axelor.Exemplu: axis([0, 100, -5, 10]) scaleazagraficul de la 0 la 100 pe axa Ox si dela -5 la 10 pe axa Oy

    Scaleaza axele cu unitatea pe axa Oxegala cu unitatea de pe axa Oy.Scaleaza axele astfel incat graficul sase incadreze intr-un patrat.Nu mai afiseaza axele graficului

  • 7/14/2019 Curs3_b

    26/33

    Afiarea unor grafice multiple n aceeai fereastr grafic

    Funcia subplot(m,n,i)desparte fereastra de tip figur ntr-o matrice m x n

    de mici subploturi (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])

  • 7/14/2019 Curs3_b

    27/33

    Comenzi pentru personalizarea graficelor

    MATLAB-ul furnizeaz comenzi de etichetare a fiecrei axe i de plasare a

    unui text n orice loc din grafic. Comenzile sunt prezentate n tabelul urmtor.

    Comand Descriere

    title Adaug un titlu

    xlabel Adaug o etichet pe axax

    ylabel Adaug o etichet pe axa y

    zlabel Adaug o etichet pe axa z

    legend Adaug o legend

    text Afieaz un text la o locaie specificat

    gtext Plaseaz textul pe grafic utiliznd mouse-ul

  • 7/14/2019 Curs3_b

    28/33

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

    Adugarea textelorPrin utilizarea funciei textse 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

    (doar in Matlab!)- cu ajutorul mouse-ului

    >> gtext

  • 7/14/2019 Curs3_b

    29/33

    GRAFICA 3D (funcii reale de douvariabile reale)

    -surf, mesh, surfc, meshc

    -ezsurf, ezcontour, ezmesh

    -plot3

    pentru indicaii privind utilizarea lor se tasteaz help comanda, de exempluhelp surfn linia de comand a MATLAB/ Octave

  • 7/14/2019 Curs3_b

    30/33

    Vizualizarea funciilor de dou variabile

    [X,Y] = meshgrid(-8:.5:8);

    R = sqrt(X.^2 + Y.^2) + eps;

    Z = sin(R)./R;

    mesh(X,Y,Z)

    - functia colormap('paleta') care are ca efect setarea paletei de culori, codul de culori presetate

    pentru 'paleta'fiind: 'jet', 'hsv', 'hot', 'spring', 'summer', 'autumn', 'winter', cool', 'copper', 'gray',

    'bone', 'pink'; vezi help colormap. Implicit, colormap este setat pe 'jet'.colormap(winter) sau culormap(hot)

    1

    2

    3

  • 7/14/2019 Curs3_b

    31/33

    Crearea de grafice tip contur

    Funciile contour i contour3 afieaz contururi 2-D i 3-D. Pentru a seta

    numrul de niveluri de contur (implicit se realizeaz automat pe baza valorilor

    minime i maxime) se folosete un argument suplimentar opional. Deexemplu,

    [X,Y,Z] = peaks;

    contour(X,Y,Z,20)

    afieaz 20 de contururi ale funciei

    ntr-o vedere bidimensional.

    Pentru o reprezentare 3 D:

    [X,Y,Z] = peaks;

    contour3(X,Y,Z,20)

    h = findobj(`Type','patch');

    set(h,'LineWidth',2)

    title('Twenty Contours')

  • 7/14/2019 Curs3_b

    32/33

    Sa se reprezinte grafic suprafaa descris de ecuaiile:

  • 7/14/2019 Curs3_b

    33/33