MATLAB (2)
if variabila,
instructiuni
end
Instrucţiunile sunt executate dacă partea reală a variabilei are toate elementele
diferite de 0. Variabila este în general rezultatul unei comparaţii de tipul expre-
sie op expresie, unde op este ==, <, >, <=, >= sau ~=.
De exemplu:
if i==j
A(i,j)=1;
end
Structura for
Este structura iterativă cu contor. Forma generală este:
for variabila=expresie,
instructiuni
end
De exemplu:
for i = 1:n,
for j = 1:n,
A(i,j) = 1/(i+j-1);
end
end
Structura while
Corespunde structurii iterative cu test iniţial. Forma generală este:
while variabila
instructiuni
end
Reprezentări grafice
Reprezentări grafice bidimensionale se pot face prin funcţia plot. Avânt doi vec-
tori de dimensiuni identice, voi obţine o reprezentare grafică prin comanda:
plot(x,y)
Funcţii Matlab.
Pe lângă funcţiile interne sau externe Matlab, utilizatorul poate defini propriile
sale funcţii. Aceste funcţii vor putea fi utilizate la fel ca funcţiile externe Matlab.
Structura unei funcţii Matlab este următoarea:
- antet funcţie;
- corp funcţie.
Antetul funcţiei are următoarea formă:
function ListParamReturnati]=NumeFunc(ListParamApel);
Corpul funcţiei este format din instrucţiuni Matlab. Cel puţin o instrucţiune din
corpul funcţiei trebuie să aibă următoarea formă:
ParamReturnat = expresie
Aplicaţii simple.
Problema 1
Având funcţia f ( x) = x 2 + 3 x − 12 :
a). să se reprezinte grafic pe intervalul x ∈ [−10,10] ;
b). să se determine rădăcinile;
c). să se minimizeze funcţia pe
intervalul specificat.
Rezolvare
a). Pentru reprezentarea grafi-
că a unei funcţii se poate folosi func-
ţia Matlab fplot. Pentru aceasta se
va scrie următoarea funcţie m (folo-
sind editorul din Matlab medit -
vezi figura alăturată).
function y=f(x);
y=x.^2+3*x-12;
»fplot('f',[-10 10])
Voi obţine în ecranul grafic reprezentarea dorită (vezi figurile de mai jos).
b). Determinarea rădăcinilor unei funcţii este posibilă în două moduri:
I. prin utilizarea funcţiei roots;
II. prin utilizarea funcţiei fzero.
Funcţia roots cere ca argument un
vector ce conţine coeficienţii funcţiei poli-
nomiale a cărei rădăcini dorim să determi-
năm. Funcţia returnează toate rădăcinile
(reale sau complexe) ale funcţiei definite.
»roots([1 3 -12])
Răspunsul obţinut va include toate ră-
dăcinile, atât cele reale cât şi cele complexe,
în acest caz (vezi figura alăturată):
ans =
-5.2749
2.2749
c). Minimizarea funcţie este posibilă prin fmin pentru funcţii obiectiv de o
variabilă de decizie, şi fmins pentru funcţii obiectiv de două sau mai multe variabi-
le de decizie. În acest caz folosim funcţia fmin.
Parametrii de apelare ai funcţiei fmin includ: un şir de caractere ce identifică
numele fişierului m în care s-a definit funcţia de minimizat, două valori scalare prin
care se specifică intervalul de căutare. În acest caz, de la linia de comandă Matlab
(vezi figura de pe pagina anterioară):
» fmin('f',-10,10)
ans =
-1.5000
» f(ans)
ans =
-14.2500
Problema 2
Să se rezolve sistemul de ecuaţii liniare:
ì x − 3y + 2z = 9
ï
í 2 x − 5 y + z = −1
ï5x + y − 9 z = 12
î
Rezolvare
Soluţia unui sistem de ecuaţii liniare se obţine prin expresia: X=C\L, unde X
este vectorul soluţie, C este matricea coeficienţilor şi L vectorul termenilor liberi. În
cazul de faţă soluţia sistemului se obţine prin secvenţa de comenzi:
function y=f(x);
y=zeros(3,1);
y(1)=x(1)-x(2)*x(3)-9;
y(2)=x(1)*x(2)-2*x(3);
y(3)=6*x(1)*x(3)-x(2)+1;
» fsolve('snelin', [1 1 1]’)
ans =
9.0001 -0.0041 -0.0186
Problema 4
Să se găsească soluţia sistemului de ecuaţii diferenţiale:
ì dc A −5 −6
ï dt = −6 ⋅ 10 c A + 7 ⋅ 10 cB
í
ï dcB = −7 ⋅ 10−6 c + 6 ⋅ 10−5 c
î dt B A
Rezolvare
Vom utiliza funcţia ode45 pentru
găsirea soluţiei pe cale numerică. Funcţia
ode45 utilizează metoda Runge-Kutta
de ordinul 4 pentru a aproxima soluţia
sistemului de ecuaţii diferenţiale. Pentru aceasta vom scrie următoarea funcţie pe
care o vom salva în fişierul dif.m (vezi figura alăturată):
function y=f(t,x);
y(1)=-6e-5*x(1)+7e-6*x(2);
y(2)=6e-5*x(1)-7e-6*x(2);
De la linia de comandă Matlab:
» [t,y]=ode45('dif',[0 100000],[4 4]);
» plot(t,y)
În urma acestei secvenţe de
comenzi, vom obţine reprezentarea
grafică a rezultatului conform figu-
rii alăturate.
Problema 5
Să se reprezinte grafic func-
ţia de două variabile:
f ( x, y ) = x 2 y 2 + 20
pe intervalul x ∈ [0,2] şi y ∈ [0,2].
Rezolvare
Reprezentarea unei expresii
de două variabile se poate face prin
următoarele funcţii Matlab de re-
prezentare 3D: mesh şi surf.
Pentru obţinerea reprezentă-
rii grafice a funcţiei date se parcurg următoarele etape:
1. cu editorul medit din Matlab, se scrie funcţia dată într-un fişier m.
2. de la linia de comandă Matlab se introduc comenzile prezentate în figura
următoare.
Bibliografie
1. * * *, MATLAB - User’s Guide, The MathWorks, Inc, USA, 1999.
2. M.Ghinea, V.Fireţeanu, Matlab. Calcul numeric-grafică-aplicaţii, Editura Teora,
Bucureşti, 1998