curs 2 mn matlab introducere.pdf

Upload: madalin-paun

Post on 05-Oct-2015

8 views

Category:

Documents


0 download

TRANSCRIPT

  • Curs 2 Introducere in MATLAB

    1. Vectori si matrice

    % vector linie

    >> a = [1 2 3 4 5]

    a =

    1 2 3 4 5

    % vector coloana

    >> b = [2;4;6;8;10] sau >> b = [2 4 6 8 10]'

    unde inseamna transpusa

    % matrice

    >> A = [1 2 3; 4 5 6; 7 8 9]

    A =

    1 2 3

    4 5 6

    7 8 9

    % generam sirul de la 1 la 3 cu pasul 0.5

    >> t = 1:0.5:3

    t =

    1.0000 1.5000 2.0000 2.5000 3.0000

    Operatii matematice:

    ^ ridicare la putere schimba semnul * / inmultire / impartire \ impartire la dreapta + adunare si scadere

    >> 2*pi

    ans =

    6.2832

    >> y = pi/4;

    >> y ^ 2.45

    ans =

    0.5533

  • >> y = (-4) ^ 2

    y =

    16

    >>x=2+4i

    x =

    2 + 4i

    2. m- file ; grafice in MATLAB; function-file

    Studiu de caz: calculul vitezei unui vehicul

    Ecuatia de miscare xbtuxm )( sau )(tubvvm

    Cu solutia generala (tema)

    )1(2

    1 tm

    b

    ev pentru conditiile initiale 0;00 vxt

    Fie m=1000; b=50; u=500; obtinem ecuatia

    500501000 vv (1a)

    2

    1

    20

    1 vv cu solutia )1(

    2

    120

    1t

    ev (2a)

    Graficul solutiei:

    Varianta 1: scriem comenzile direct in spatiul de lucru

    (semnul >>)

    >> t=0:0.1:100; % genereaza vectorul de timp

    >> v=(1/2)*(1-exp((-1/20)*t)); % expresia solutiei analitice

    >> plot(t,v) % obtinem graficul

  • Obervatie. Solutia tinde la solutia particulara (1/2) -

    regimul stationar .

    Adaugam titlu; xlabel;ylabel cu comenzile:

    >> title('Graficul vitezei in functie de timp t')

    >> xlabel('Valoarea lui t')

    >> ylabel('Valuarea lui v')

    >> grid

    Varianta 2: scriem o m-fila cu instructiunile

    % o salvam cu gr_viteza.m

    t=0:0.1:100;

    v=(1/2)*(1-exp((-1/20)*t));

    plot(t,v)

    title('Graficul vitezei in functie de timp t')

    xlabel('Valoarea lui t')

    ylabel('Valuarea lui v')

    grid

    0 10 20 30 40 50 60 70 80 90 1000

    0.05

    0.1

    0.15

    0.2

    0.25

    0.3

    0.35

    0.4

    0.45

    0.5

    0 10 20 30 40 50 60 70 80 90 1000

    0.05

    0.1

    0.15

    0.2

    0.25

    0.3

    0.35

    0.4

    0.45

    0.5Graficul vitezei in functie de timp t

    Valoarea lui t

    Valu

    are

    a lui v

  • % executam fila scriind in spatiul de lucru (work space)

    numele ei: >> gr_viteza

    Fila tip functie- pentru calculul vitezei: salvata cu numele

    functiei(automat)

    viteza.m

    function v = viteza(t,m,b)

    v=(1/2)*(1-exp((-b/m)*t));

    % intrare input:

    % t=timpul (s); m=masa(Kg; b= coef.rezistenta aer (Ns/m)

    %iesire output:

    % v=viteza(m/s)

    Executam functia scriind numele ei in care se dau valorile

    parametrilor de intrare

    >> viteza(10,1000,50)% t=10 s ; m=1000kg; b=50 (Ns/m)

    ans =

    0.19673

    Avantaj

    Putem obtine viteza pentru diferite valori ale parametrilor

  • >> viteza(25,2000,75) )% t=25 s ; m=2000kg; b=75 (Ns/m)

    ans =

    0.3042

    3.Elemente de programare in Matlab

    3.1 Operatorul for

    repeta o instructiune de un numar de ori

    (specificat)

    Sintaxa generala este:

    for index = start:step:finish

    statements end

    exemplu % afiseaza numerele de la 1 la 5

    for i = 1:5

    disp(i)

    end

    Exemplu: calcul n - factorial n!

    % instructiunile se vor scrie intr-0 fila tip functie

    factorial.m

    function fout = factorial(n)

    % factorial(n):

    % Calculeaza produsul numerelor de la 1 la n.

    x = 1;

    for i = 1:n

    x = x * i;

    end

    fout = x;

    end

    In spatiul de lucru:

    >> factorial(10)

    ans =

    3628800

  • Avantaj Matlab: vectorizare

    Urmatoare structura pentru calculul functiei cos(t)

    i = 0;

    for t = 0:0.02:50

    i = i + 1;

    y(i) = cos(t);

    end

    poate fi reprezentata in forma vectorizata:

    t = 0:0.02:50;

    y = cos(t);

    3.2 Operatorul while

    Un ciclu while se repeta atata timp cat o conditie logica este

    adevarata.

    Sintaxa generala este

    while condition

    statements

    end

    Exemplu:

    x = 8

    while x > 0

    x = x - 3;

    disp(x)

    end

    Cand rulam, obtinem

    x =

    8

    5

    2

    -1