Home >Documents >Exercitii MATLAB

Exercitii MATLAB

Date post:31-Oct-2015
Category:
View:410 times
Download:7 times
Share this document with a friend
Transcript:
  • O functie simpla pentru plot: Sintaxa: ezplot(functia(x),[limita_inf,limita_sup]) Daca nu se specifica limitele, se folosesc limite implicite [0,2*pi]

    Exemple: Ezplot(sin(x)) Ezplot(x^2+y^2-1,[-2,2]) ezplot ('x^2+y^2-1',[-2,2]); axis equal Important e necesar sa se specifice axis equal, precedat de ; daca dorim ca unitatile de masura sa fie egale pe cele doua axe (adica sa iasa chiar cerc) altfel cercul arata ca o elipsa!!

    Alt mod de a scrie: Se poate folosi functia inline g=Inline(x^2) ezplot(g) // fara ghilimele!!!

    g=inline('x^2+y^2-9'); ezplot(g,[-5,5]);axis equal

    De retinut si comanda SOLVE care intoarce solutia unei ecuatii sau a unui sistem.

    solve('x^2-5*x+6=0')

    O chestie foarte importanta, care distinge MATLAB de alte limbaje de programare se accepta variabile simbolice.

    De exemplu: syms x y //fara virgula!!!

    asta iti permite sa le folosesti ulterior fara sa le asignezi neaparat niste valori numerice!! deci se poate scrie:

    syms x y y=x^2+3 ezplot(y) //y nu e in ghilimele!! alt exemplu:

    syms y y z y=10*(1-cos(x)) z=sin(x) ezplot(y*z,[0,10])

    Vectori si matrici

    Vectorii se pot defini asa:

    X=[1,2,3,4,5] sau: X=[1 2 3 4 5]

  • Virgula si spatiul sunt echivalente in acest caz. Sau asa:

    X=1:5

    Variante: X=[5,4,3,2,1] X=5:-1:1

    La modul general

    X=limita_inf : cuanta : limita_sup

    Cuanta poate fi fractionala sau negativa!

    X este vectorul transpus lui X

    Y=X'

    Y =

    5 4 3 2 1 Se poate aplica un vector ca argument al unei functii: De exemplu, sin(X) este un vector de aceeasi dimensiune cu X, care are ca elemente sinusul elementelor lui X.

    Se poate scrie si direct:

    sin(1:5) sin(1:2:20)

    Matricile se pot defini asa:

    A = [1, 2, 3, 4; 5, 6, 7, 8; 9, 10, 11, 12]

    Raspunsul este:

    A = 1 2 3 4 5 6 7 8 9 10 11 12

    Se observa ca delimitarea intre linii se face cu ;

    Suma a doua matrici A+B este o matrice care are ca elemente suma elementelor i,j din cele doua matrici. Matricile adunate trebuie sa aiba aceleasi dimensiuni. Doua matrici se pot inmulti daca A[nxm] B[mxl] atunci C[mxl]=A*B

  • =

    =

    m

    kkjikij BABA

    1*)*(

    Exemplu: Daca A =

    1 2 3 4 5 6 7 8 9 B=[10, 20,30]

    A*B= 1*10+2*20+3*30 4*10+5*20+6*30 7*10+8*20+9*30

    Nota: B este transpusa lui B

    Vom reveni asupra matricilor.

    De retinut comanda whos, care listeaza variabilele definite in cursul programului sau a sesiunii de lcuru curente. Poti sa verifici daca o variabila este definita, tastandu-i numele. De exemplu: % definire variabilei x=2 %.... x Si obtii raspunsul:

    x =

    2

    Nota:

    Comentariile se delimiteaza cu simbolul %

    Comanda LENGTH intoarce dimensiunea unui vector.

    Exemplu: A=[1 2 3 4] length(A) ans

    4 Daca este aplicata unei matrici, length intoarce numarul de elemente de pe o linie.\

  • A=[1 2 3 4] B=[4 5 6 7] C=[A;B] length(C) intoarce 4.

    Pentru a afla dimensiunea unei matrici, se foloseste comanda SIZE

    SIZE(C) ans 2 4

    Elementele individuale ale unui vector

    Acestea pot fi adresate astfel:

    A=[1 2 3 6 8 10] A(1) 1 A(4) 6 A(5) 8 Observatie: Nu se incepe numerotarea de la zero ci de la 1!!

    In cazul unei matrici, se poate adresa un element oarecare cu:

    C(i,,j) % i este numarul liniei j este numarul coloanei

    Array multiplication Este produsul element cu element a doi vectori. Se simbolizeaza cu .*

    Exemplu: >> A=[1:2:10] A = 1 3 5 7 9 >> B=[3:2:11] B = 3 5 7 9 11 >> P=A.*B P = 3 15 35 63 99

    Functia SUM Pentru un vector, intoarce suma elementelor. Exemplu: A=[1 2 3 4] sum(A)=1+2+3+4 Daca argumentul sum este o matrice, sum() intoarce un vector linie care are ca elemente suma elementelor de pe fiecare coloana a matricii argument. Exemplu:

  • >> A=[1 2 3 4] >> B=[3 4 5 6] >> C=[A;B] C =

    1 2 3 4 3 4 5 6 >> sum(C) ans = 4 6 8 10

    Adresarea unui grup de elemente dintr-un vector

    A=[1 2 3 4 5] X=A(2:4) X=[2 3 4]

    Izolarea unei coloane dintr-o matrice

    Sintaxa:

    C(:,i) izoleaza coloana i Exemplu:

    C =

    1 2 3 4 3 4 5 6

    C(:,2) ans =

    2 4

    Selectarea unei linii C(1,:) ans =

    1 2 3 4 C(2,:) ans =

    3 4 5 6

    Stergerea unei coloane intr-o matrice

    D(:,2)=[ ]

    D =

    1 3 4 3 5 6

    Stergerea unei linii

    D(1,:)=[ ]

  • D =

    3 4 5 6

    Selectarea unei sub-matrici

    C(1:2,2:3) 1:2 se refera la liniile selectate 2:3 se refera la coloanele selectate

    Note despre rezolvarea ecuatiilor

    1. Ecuatii polinomiale de tipul P(x)=0 Comanda ROOTS(A) A este un vector al coeficientilor polinomului. Exemplu A=[1 5 6] % x^2-5*x+6=0 roots(A) ans =

    3.0000 2.0000

    1. Rezolvarea unor ecuatii generale Comanda SOLVE(expresia1=0,expresia2=0)

    Exemplu:

    [x, y] = solve('x^2 - y = 2', 'y - 2*x = 5')

    Asta intoarce: x =

    [ 1+2*2^(1/2)] [ 1-2*2^(1/2)]

    y =

    [ 7+4*2^(1/2)] [ 7-4*2^(1/2)]

    double ([x,y]) ans =

    3.8284 12.6569 -1.8284 1.3431 Exemplu de mai sus este un sistem de ecuatii cu doua solutii. Se pot izola valorile individuale ale solutiilor cu x(1)

  • Care intoarce: ans =

    1+2*2^(1/2) si y(1) ans =

    7+4*2^(1/2)

    x(2)

    ans =

    1-2*2^(1/2)

    y(2)

    ans =

    7-4*2^(1/2)

    Mai sunt si alte moduri/comenzi pentru rezolvarea unor ecuatii, dar nu ma intereseaza deocamdata.

    Mai multe despre plotting

    1. Comanda AXIS AXIS([XMIN XMAX YMIN YMAX])

    Defineste limitele plot-ului Atentie vectorul de intrare pentru axis() se refera intai la limitele pentru axa x si apoi la limitele pentru axa y NU la perechi (x,y) cum ar parea logic!!

    2. Comanda PLOT(x,y,S) Daca x, y sunt scalari atunci se ploteaza un punct in plan cu ccoordonatele (x,y) Parametrul S indica ce simbol sa se foloseasca pentru reprezentarea punctului. - omiterea parametrului se pune un punct Cateva optiuni posibile pentru S - S=x - S=o - S=* - S=p ; pentagram - S=h hexagram

    Daca sunt mai multe puncte de plotat, se poate scrie:

    plot(x1,y1,S,x2,y2,S,x3,y3,S.....)

    De regula, parametrii x si y ai plot sunt vectori. Daca se omite parametrul S punctele plot-ului se unesc cu linie continua.

  • Exemplu: X = -1:0.01:2; plot(X, X.^2) Asta are ca efect plotarea unei parabole.

    Exemplu:

    f=exp(-x); g=exp(-2*x); plot(x,f,'-',x,g,':') % : linie punctata - line continua plot(x,f,'-',x,g,'--') % dashed line plot(x,f,'--',x,g,':')

    Selectia culorilor pentru plot

    Sunt posibile 8 culori (din care una e alb!) pentru plot-uri. Ele sunt codate astfel:

    Color Specifier White w Black k Blue b Red r Cyan c Green g Magenta m Yellow y

    Daca vrem sa specificam simultan ca e vorba de linie intrerupta de culoare verde, atunci includem in aceleasi ghilimele ambii specificatori:

    plot(x,f,'-',x,g,'g--') % dashed line

    Comanda FPLOT

    Exemplu:

    fplot('exp(2*t)*sin(t)',[0,4]), xlabel('t'), ylabel('f(t)'), title('Damped Spring Forcing') Parametrii xlabel, ylabel sunt facultativi.

    Comanda fplot este mai putin pretentioasa decat plot: Seamana mai mult cu ezplot decat cu plot parametrii sunt string-uri, delinitate de ghilimele simple.

    Observatie importanta!!!

    Secventa de comenzi: t = [0:0.01:4]; f = exp(-2*t)*sin(t); plot(t, f) Desi pare corecta, genereaza o eroare. Eroarea provine de la faptul ca exp(-2*t) si sin(t) sunt VECTORI (matrici).

  • Corect, trebuie sa folosim array multiplication (.*), care are ca efect inmultirea element cu element a celor doi vectori!!! Deci corect este: t = [0:0.01:4]; f = exp(-2*t).*sin(t); plot(t, f)

    Crearea unor grafice cu plot-uri multiple

    Comanda HOLD ON/OFF Mentine deschisa fereastra unde se genereaza plot-ul si pentru urmatoarele comenzi plot/ezplot.

    Exemplu:

    ezplot('exp(-x)', [0 10]) hold on ezplot('sin(x)', [0 10])

    Asta are ca efect figura urmatoare:

    Comanda LEGEND

    Adauga o legenda la un plot multiplu: Ex: plot(x,y,'g-',x,z,'--b'); legend('sin(x)','cos(x)')

  • Comanda LINSPACE LINSPACE(X1, X2) generates a row vector of 100 linearly equally spaced points between X1 and X2. LINSPACE(X1, X2, N) generates N points between X1 and X2. Este cumva similara cu:

    X=[a1:q:a2] Care genereaza un vector cu valori intre a1 si a2, distantata cu cuanta q.

    Comanda polar(x,y) Este similara cu plot() dar traseaza graficul in coordonate polare

    Comanda loglog(x,y) Simlara cu plot, dar foloseste scara logaritmica pe ambele axe

    Comanda semilog(x,y) Similara cu plot cu axa logaritmica pe axa x.

    Comanda bar(x,y)

    Genereaza un plot de tip bargraf. Exemplu:

    x = [1:5]; y = [50,98,75,80,98]; bar(x,y), xlabel('Student'),ylabel('Score'), title('Final Exam')

    Asta produce un grafic ca in figura:

    1 2 3 4 50

    10

    20

    30

    40

    50

    60

    70

    80

    90

    100

    Student

    Score

    Comenzile load si save Salveaza si restaureaza valorile variabilelor curente

    Exemplu: Y=load('test.txt') Atentie single quotes !

  • Incarca matricea Y dintr-un fi

Embed Size (px)
Recommended