curs 2 mn matlab introducere.pdf
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