Sunteți pe pagina 1din 51

SOFT MATEMATIC

Curs 6
Ana-Maria MOSNEAGU
Universitatea Al. I. Cuza Iasi
Facultatea de Matematica
10 decembrie 2013
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 10 decembrie 2013 1 / 51
Instruct iunea for
Sintaxa generala a instruct iunii for este
for variabila = expresie
instructiuni
end
De obicei, expresie este un vector de forma i : step : j . Secvent a de
instructiuni este executata pentru variabila egala cu ecare element
al lui expresie n parte. Un alt mod de a deni expresie este utilizarea
modului de a construi un vector folosind notat ia cu paranteze patrate.
Ciclurile for pot imbricate.
Codul urmator construieste o matrice patratica de ordin 10, cu elementele
de pe diagonala principala egale cu 2, iar elementele de sub si de deasupra
diagonalei principale egale cu -1.
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 10 decembrie 2013 2 / 51
Instruct iunea for
clear;
N = 10;
for i = 1 : N
for j = 1 : N
if i == j
A(i,j) = 2;
elseif abs(i-j) == 1
A(i,j) = -1;
else
A(i,j) = 0;
end
end
end
A
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 10 decembrie 2013 3 / 51
Instruct iunea while
Forma generala a instruct iunii while este
while expresie
instructiuni
end
unde secvent a de instructiuni se executa atat timp cat expresie este
adevarata.

In exemplul urmator aproximam epsilon-ul masinii (cel mai mare numar u


cu proprietatea ca 1 + u nu poate distins de 1), care nu este altceva
decat valoare variabilei interne MATLAB eps.
clear;
u = 1;
while 1 + u > 1
ueps = u;
u = u / 2;
end
ueps
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 10 decembrie 2013 4 / 51
Instruct iunea switch
Instruct iunea switch are urmatoarea sintaxa generala:
switch expresie_switch
case expresie_case1
instructiuni
case {expresie_case2, expresie_case3,...}
instructiuni
...
otherwise
instructiuni
end
Daca expresie switch se potriveste cu expresie case1, atunci se
executa blocul de instruct iuni de dupa primul case. Altfel, se testeaza
expresie case a urmatorului case, pana se gaseste o potrivire. Daca o
expresie case este formata din mai multe expresii, atunci daca macar
una dintre acestea se potriveste cu expresie switch, se va executa
blocul de instruct iuni de dupa case-ul corespunzator.
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 10 decembrie 2013 5 / 51
Instruct iunea switch
Daca nicio expresie case nu se potriveste cu expresie switch, atunci
se va executa blocul de instruct iuni de dupa otherwise (daca exista).
Doar un singur case sau otherwise este executat, execut ia continuand
cu instruct iunea de dupa end. Astfel, instruct iunea switch din MATLAB
se comporta diferit de cea din C sau C++ : odata ce MATLAB a selectat
un case si blocul sau de instruct iuni a fost executat, se da controlul primei
instruct iuni de dupa switch, fara a nevoie de instruct iunea break.
expresie switch poate un scalar sau un string.

In exemplul ce urmeaza, calculam si asam norma p a vectorului v, pentru


4 valori posibile ale lui p.
clear;
n = input(n= );
v = -n : .5 : n;
p = input(Introduceti p (1, 2, inf, -inf): );
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 10 decembrie 2013 6 / 51
Instruct iunea switch
switch p
case 1
norma = norm(v, 1);
disp([Norma 1 a vectorului este: , num2str(norma)]);
case 2
norma = norm(v);
disp([Norma 2 a vectorului este: , num2str(norma)]);
case inf
norma = norm(v, inf);
disp([Norma inf a vectorului este: , num2str(norma)]);
case -inf
norma = norm(v, -inf);
disp([Norma -inf a vectorului este: , num2str(norma)]);
otherwise
disp(Ati introdus o valoare diferita de cea ceruta!);
end
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 10 decembrie 2013 7 / 51
Instruct iunile break si continue
Instruct iunea break termina execut ia unei bucle for sau while.

Intr-un
ciclu imbricat un break iese n ciclul de pe nivelul anterior. Instruct iunea
break nu este denita n afara unei bucle for sau while.

In acest scop se
poate folosi instruct iunea return.
for i = 1 : 10
if i > 5, break; end
disp(i)
end

Intr-o bucla for sau while, instruct iunea continue fort eaza trecerea
controlului la execut ia urmatoarei iterat ii, sarind instruct iunile ramase din
bucla.
for i = 1 : 10
if i <= 5, continue; end
disp(i)
end
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 10 decembrie 2013 8 / 51
Graca n MATLAB
MATLAB ofera facilitat i grace puternice. Astfel, se pot genera grace si
guri relativ usor, iar atributele acestora se pot modica la fel de usor
folosind utilitarul Plot Editor (help plotedit) sau folosind meniurile si
bara de instrumente din ferestrele gurilor.
Cele mai utilizate funct ii MATLAB pentru grace 2D sunt: plot grac
x-y simplu, loglog grac cu scara logaritmica pe ambele axe, semilogx
grac cu scara logaritmica pe axa x, semilogy grac cu scara
logaritmica pe axa y, plotyy grac x-y cu axe y si la stanga si la
dreapta, polar grac polar, fplot reprezentare graca automata a
unei funct ii, ezplot versiune usor de utilizat (easy-to-use) a lui fplot,
ezpolar versiune usor de utilizat (easy-to-use) a lui polar, fill
umplere poligon, area grac de tip arie plina, bar grac de tip bara,
barh grac de tip bara orizontala, hist histograma, pie grac cu
sectoare de cerc, comet grac x-y animat, errorbar grac cu bare de
eroare, quiver camp de vectori bidimensional, scatter grac
dispersat (nor de puncte).
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 10 decembrie 2013 9 / 51
Graca bidimensionala n MATLAB
Funct ia MATLAB plot este o funct ie graca de baza ce realizeaza
grace bidimensionale simple prin unirea punctelor vecine. Daca
x = (x
1
, x
2
, , x
n
) si y = (y
1
, y
2
, , y
n
), atunci printr-o instruct iune de
tipul plot(x,y) se reprezinta grac linia poligonala ce trece prin punctele
de coordonate (x
i
, y
i
), i = 1, n. MATLAB deschide o fereastra pentru
gura n care deseneaza imaginea. Spre exemplu, urmatoarea secvent a
>> x = [1.1 2.2 3.3 4.4 5.5 6.6 7.7 8.8 9.9];
>> y = [6.0 4.5 3.0 1.5 2.0 3.3 4.6 5.9 7.2];
>> plot(x,y)
produce urmatorul grac
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 10 decembrie 2013 10 / 51
Graca bidimensionala n MATLAB
1 2 3 4 5 6 7 8 9 10
1
2
3
4
5
6
7
8
plot(x,y)
O comanda de tipul plot(x) reprezinta grac linia poligonala ce trece prin
punctele de coordonate (i , x
i
), i = 1, n.

In exemplul precedent se utilizeaza
valorile implicite ale unor facilitat i cum ar domeniul pentru axele x si y,
spat iile dintre diviziunile de pe axe, culoarea si tipul liniei de desen.
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 10 decembrie 2013 11 / 51
Graca bidimensionala n MATLAB
Daca dorim sa precizam valori diferite de cele implicite pentru culoare,
marcaj si stilul de linie al desenului, n loc de plot(x,y), putem utiliza
plot(x,y,s), unde s este un sir de caractere prin care vom controla
toate aceste aspecte.
Culoarea poate : r (rosu), g (verde), b (albastru), c (cian), m (magenta),
y (galben), k (negru), w (alb).
Tipul de marcaj poate : o (cerc), * (asterisc), . (punct), + (plus), x
(ori), s (patrat), d (romb), ^ (triunghi n sus), v (triunghi n jos), >
(triunghi dreapta), < (triunghi stanga), p (pentagrama (stea cu 5
colt uri)), h (hexagrama (stea cu 6 colt uri)).
Stilul liniei de desen poate : - (linie continua stilul implicit), - - (linie
ntrerupta), : (linie punctata), -. (linie punct).
Cele trei elemente care pot plasate n sirul de caractere s pot date n
orice ordine.
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 10 decembrie 2013 12 / 51
Graca bidimensionala n MATLAB
Exemple:
>> plot(x,y,m*-.)
>> plot(x,y,ro)
>> plot(x,y,k)

In gracul din primul exemplu, se va plasa un asterisc magenta n ecare


punct (x
i
, y
i
) , punctele ind unite cu o linie magenta de tip linie punct.

In cel de-al doilea exemplu, se marcheaza ecare punct de coordonate


(x
i
, y
i
) cu un cerc rosu, fara a le uni cu nicio linie.

In cel de-al treilea
exemplu, singura schimbare fat a de setarile implicite este culoarea, aceasta
ind schimbata la negru.
Instruct iunea plot poate reprezenta grac, pe aceeasi gura, mai multe
seturi de date. De exemplu,
>> v = x+1; w = y-1;
>> plot(x,y,k-.,v,w,r:)
deseneaza n aceeasi gura gracele pentru punctele (x
i
, y
i
) si (v
i
, w
i
),
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 10 decembrie 2013 13 / 51
Graca bidimensionala n MATLAB
primul cu linie de tip linie punct, neagra, iar al doilea cu linie punctata,
rosie.
Comanda plot accepta si argumente de tip matrice. Astfel, daca x este
un vector de dimensiune m si A este o matrice m n, atunci instruct iunea
plot(x,A) suprapune gracele obt inute din x si ecare coloana a matricei
A. Similar, daca A si B sunt doua matrice de aceeasi dimensiune, atunci
plot(A,B) suprapune gracele obt inute din coloanele corespunzatoare ale
lui A si B. Daca argumentele lui plot nu sunt reale, atunci part ile
imaginare sunt, n general, ignorate, except ie facand faptul cand plot este
apelat cu un singur argument. Deci, daca A este complex, atunci plot(A)
este echivalent cu plot(real(A),imag(A)).
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 10 decembrie 2013 14 / 51
Graca bidimensionala n MATLAB
Atributele unei guri se pot controla furnizand argumente suplimentare
instruct iunii plot. Proprietat ile LineWidth (grosimea liniei de desen
implicit este de 0.5 puncte) si MarkerSize (dimensiunea marcajului
implicit este de 6 puncte) pot specicate n puncte (un punct = 1/72
inch). Culoarea conturului si a interiorului marcajului se poate seta cu
proprietat ile MarkerEdgeColor si MarkerFaceColor. De exemplu,
comanda
>> plot(x,y,rd--,LineWidth,3,MarkerEdgeColor,k,...
MarkerFaceColor,b,MarkerSize,10)
produce un grac cu linie ntrerupta cu lat imea 3 puncte, marcaje n forma
de romb cu dimensiunea 10 puncte, conturul romburilor ind negre, iar
interiorul albastru.
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 10 decembrie 2013 15 / 51
Graca bidimensionala n MATLAB
1 2 3 4 5 6 7 8 9 10
1
2
3
4
5
6
7
8
plot(x,y)
Funct iile MATLAB title, xlabel si ylabel aseaza sirul de caractere
primit ca argument deasupra imaginii, ca titlu al gracului, sub axa x si
respectiv la stanga axei y (etichetarea axelor).
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 10 decembrie 2013 16 / 51
Graca bidimensionala n MATLAB
Se pot reprezenta curbe n coordonate polare cu ajutorul comenzii
polar(t,r), unde t este unghiul polar, iar r este raza polara. Se poate
folosi si un parametru suplimentar s, sir de caractere, cu aceeasi
semnicat ie ca la plot. Gracul unei curbe n coordonate polare, numita
spirala lui Arhimede, de ecuat ie r (t) = a +bt, t [0, 6], cu a si b numere
reale, se obt ine cu secvent a:
%arh.m
%spirala lui Arhimede
t = 0:pi/1000:6*pi;
a = input(a= );
b = input(b= );
r = a + b*t;
polar(t,r);
title(Spirala lui Arhimede)
si are forma
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 10 decembrie 2013 17 / 51
Graca bidimensionala n MATLAB
5
10
15
20
30
210
60
240
90
270
120
300
150
330
180 0
Spirala lui Arhimede, a=1, b=1
MATLAB seteaza automat axele pentru o reprezentare graca, n funct ie
de datele care urmeaza a reprezentate. Comanda axis([xmin xmax
ymin ymax]) seteaza limitele pentru axa x si respectiv y la valorile date
n vectorul transmis funct iei, ca argument. Pentru a reveni la setarile
implicite, se utilizeaza comanda axis auto. Daca se doreste ca una
dintre limite sa e aleasa automat de catre MATLAB , aceasta va
setata la -inf sau inf (de exemplu, axis([-1,1,-inf,0]). Limitele pe
axa x sau y se pot seta individual folosind comenzile xlim([xmin xmax])
si ylim([ymin ymax]).
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 10 decembrie 2013 18 / 51
Graca bidimensionala n MATLAB
Axele pot eliminate utilizand comanda axis off. Raportul dintre
unitatea pe x si cea pe y (aspect ratio) poate facut egal cu unu, cu axis
equal. Comanda axis square face caseta axelor patrata.

In exemplul ce
urmeaza vom reperezenta grac un cerc de raza R si centru (x
0
, y
0
):
%cerc.m
clear all;
R = input(Raza= );
disp(Centrul cercului: );
x0 = input(x0= );
y0 = input(y0= );
theta = 0:pi/1000:2*pi;
x = x0 + R*cos(theta);
y = y0 + R*sin(theta);
plot(x,y,r), axis equal
axis([x0-R x0+R y0-R y0+R]), grid on;
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 10 decembrie 2013 19 / 51
Graca bidimensionala n MATLAB
Comanda grid on produce o grila de linii orizontale si verticale care
pornesc din diviziunile axelor. Figura rezultata este
2 0 2 4 6
1
0
1
2
3
4
5
6
7
C((2,3),4
Comanda legend(s1,s2,...,sn,Location,p) ataseaza
unui grac o legenda care pune stringul si dupa informat ia reprezentata
de culoare/marcaj/stil pentru gracul corespunzator. Parametrii opt ionali
Location si p indica pozit ia legendei (vezi help legend).
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 10 decembrie 2013 20 / 51
Graca bidimensionala n MATLAB
Pentru a introduce text ntr-un grac se poate folosi comanda
text(x,y,s), unde x si y sunt coordonatele punctului unde va aparea
textul, iar s este un sir de caractere.

Incepand cu versiunea 5, MATLAB
permite introducerea n sirul de caractere a unor construct ii T
E
X, de
exemplu pentru indice, pentru exponent, sau litere grecesti ( \alpha,
\beta, \gamma, etc.). De asemenea, anumite atribute ale textului, cum ar
tipul font-ului, dimensiunea si altele pot setate ncepand cu versiunea
4. Aceste facilitat i se pot utiliza si n titluri, legende sau etichete ale
axelor.

Incepand cu MATLAB 7 poate folosita proprietatea
Interpreter cu valorile TeX, LaTeX sau none. De exemplu,
%graf.m
clear;
x = -pi:pi/10:pi;
plot(x,cos(x),-ro,x,sin(x),-.b,pi,0,o,pi,-1,o)
text(pi-0.1,-0.1,\uparrow sin(\pi),FontSize,12)
text(pi-0.1,-0.9,\downarrow cos(\pi),FontSize,12)
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 10 decembrie 2013 21 / 51
Graca bidimensionala n MATLAB
xlabel(-\pi \leq x \leq \pi,FontSize,12,...
FontAngle,italic);
title(Graficele func\c tiilor sin \c si cos,...
FontSize,14,Interpreter,LaTeX)
legend(cos,sin,Location,NorthWest);
Rezultatul este:
4 3 2 1 0 1 2 3 4
1
0.8
0.6
0.4
0.2
0
0.2
0.4
0.6
0.8
1
sin()
cos()
x
Gracele funct iilor sin si cos


cos
sin
Multe dintre atributele unei guri pot modicate interactiv, dupa
asarea gurii, utilizand meniul Tool al ferestrei gurii sau bara de
instrumente (toolbar).
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 10 decembrie 2013 22 / 51
Graca bidimensionala n MATLAB
Daca o comanda graca este urmata de o alta, atunci noua imagine o va
nlocui pe cea veche sau se va suprapune peste ea, acest lucru depinzand
de starea hold curenta. Comanda hold on face ca toate imaginile care
urmeaza sa se suprapuna peste cea curenta, n timp ce hold off, care
este starea implicita, va face ca ecare imagine noua sa o nlocuiasca pe
cea precedenta.
%graf1.m
clear;
x = -pi:pi/10:pi;
plot(x,cos(x),-ro);
hold on
plot(x,sin(x),-.b);
plot(pi,0,o);
plot(pi,-1,o);
hold off
%...continuarea din graf.m
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 10 decembrie 2013 23 / 51
Graca bidimensionala n MATLAB
Comanda clf sterge gura curenta, iar comanda close o nchide. Este
posibil sa avem mai multe ferestre guri pe ecran. Cel mai simplu mod de
a crea o noua gura este prin comanda figure. A n-a fereastra gura
poate facuta gura curenta folosind comanda figure(n). Comanda
close all va nchide toate ferestrele guri.
%graf2.m
clear;
x = -pi:pi/10:pi;
figure(1)
plot(x,cos(x),-ro);
xlabel(-\pi \leq x \leq \pi,FontSize,12,...
FontAngle,italic);
title(Graficul func\c tiei cos,...
FontSize,14,FontAngle,italic,...
Interpreter,LaTeX)
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 10 decembrie 2013 24 / 51
Graca bidimensionala n MATLAB
figure(2)
plot(x,sin(x),-.b);
xlabel(-\pi \leq x \leq \pi,FontSize,12,...
FontAngle,italic);
title(Graficul func\c tiei sin,...
FontSize,14,FontAngle,italic,...
Interpreter,LaTeX)
Funct ia MATLAB subplot permite plasarea mai multor imagini n
aceeasi gura. Utilizand comanda subplot(m,n,p) fereastra gurii este
mpart ita n m n regiuni, ecare avand propriile ei axe. Comanda de
desenare curenta se va aplica celei de-a p-a dintre aceste regiuni, regiunile
ind numerotate pe linii.
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 10 decembrie 2013 25 / 51
Graca bidimensionala n MATLAB
Sintaxa generala a funct iei MATLAB fplot este
fplot(fun,lims,tol,N,LineSpec)
unde: fun este funct ia de reprezentat (function handle, obiect inline sau
expresie), lims da limitele pe axele x si/sau y, tol este eroarea relativa
(valoarea implicita este 2 10
3
), se folosesc cel put in N+1 puncte
pentru generarea gracului, prin LineSpec se indica specicat iile pentru
linia de desen.
%graf4.m
subplot(3,2,1)
fplot(@(x)exp(sqrt(x)*sin(2*x)),[0 2*pi])
subplot(3,2,2)
fplot(1/(1+round(x)^2),[0,10],--,1000)
subplot(3,2,3)
fplot(inline(cos(2*x)/x),[0.01 10 -1 1],r-.)
subplot(3,2,4)
fplot(@(x)[tan(x),sin(x),cos(x)], 2*pi*[-1 1 -1 1])
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 10 decembrie 2013 26 / 51
Graca bidimensionala n MATLAB
subplot(3,2,5:6)
f = @(x,n)x^n;
fplot(@(x)f(x,3),[-10 10])
Rzultatul este
0 2 4 6
0
5
10
0 5 10
0
0.5
1
2 4 6 8 10
1
0
1
5 0 5
5
0
5
10 5 0 5 10
1000
0
1000
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 10 decembrie 2013 27 / 51
Graca tridimensionala n MATLAB
Cele mai folosite funct ii pentru grace 3D sunt (funct iile care au numele
colorat n rosu au variante easy to use, al caror nume ncepe cu ez):
plot3 grac simplu x-y-z, contour contur, contourf contur plin,
contour3 contur 3D, mesh reprezentare wire-frame, meshc
reprezentare wire-frame plus contururi, meshz suprafat a wire-frame cu
cortina, surf suprafat a plina, surfc suprafat a plina plus contururi,
waterfall wire-frame unidirect ional, bar3 bare 3D, bar3h bare 3D
orizontale, pie3 grace sector 3D, fill3 poligon plin 3D, comet3
grac 3D animat, scatter3 nor de puncte 3D.
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 10 decembrie 2013 28 / 51
Graca tridimensionala n MATLAB
Funct ia plot3 este un analog tridimensional al lui plot. De exemplu, prin
execut ia urmatorului script
%graf3.m
t = -5:0.005:5;
x = (1+t.^2).*sin(20*t);
y = (1+t.^2).*cos(20*t);
z = t;
plot3(x,y,z)
grid on
xlabel(x(t)), ylabel(y(t)), zlabel(z(t))
title(\textit{Exemplu plot3},FontSize,14,...
Interpreter,LaTeX)
se obt ine urmatoarea gura
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 10 decembrie 2013 29 / 51
Graca tridimensionala n MATLAB
40
20
0
20
40
40
20
0
20
40
5
0
5
x(t)
Exemplu plot3
y(t)
z
(
t
)
Funct iile xlabel, ylabel si title au acelasi efect ca n cazul lui plot.
Prin utilizarea funct iei zlabel se poate eticheta axa z. Culoarea, marcajul
si stilul de linie pentru plot3 se controleaza la fel ca pentru plot.
Limitele de axe n 3D se determina automat, dar acestea pot schimbate
cu instruct iunea axis([xmin xmax ymin ymax zmin zmax]). Pe langa
xlim si ylim, exista si zlim, prin care se pot schimba limitele pe axa z.
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 10 decembrie 2013 30 / 51
Graca tridimensionala n MATLAB
Funct ia mesh produce o reprezentare de suprafat a de tip cadru de sarma
(wire-frame). Funct ia meshc adauga un contur sub suprafat a.
Reprezentam grac suprafat a denita prin
f (x, y) = sin(x + y
2
) cos(x
2
y), cu x, y .
Funct ia meshgrid este foarte utila n pregatirea datelor pentru multe
funct ii MATLAB de graca 3D. Astfel se obt in matricele X si Y a..
ecare linie a lui X sa e o copie a vectorului x si ecare coloana a lui Y sa
e o copie a vectorului y. Matricea Z este apoi generata prin operat ii n
sens tablou din X si Y; Z(i,j) memoreaza valoarea funct iei corespunzand
lui x(j) si y(i). Aceasta este forma ceruta de funct ia mesh. Un prim
grac este generat cu mesh(Z). Deoarece nu se da nicio informat ie pentru
abscisa si ordonata, mesh utilizeaza n locul lor indicii de linie si de
coloana. Un al doilea grac este realizat cu meshc(Z). Pentru cel de-al
treilea, s-a utilizat mesh(x,y,Z), si deci gradat iile de pe axele x si y
corespund valorilor x si y. Limitele pe axe s-au specicat cu funct ia axis.
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 10 decembrie 2013 31 / 51
Graca tridimensionala n MATLAB
%graf7.m
x = -pi:0.1:pi; y = -pi:0.1:pi;
[X,Y] = meshgrid(x,y);
Z = sin(X + Y.^2) - cos(X.^2 -Y);
subplot(2,2,1)
mesh(Z)
subplot(2,2,2)
meshc(Z)
subplot(2,2,3:4)
mesh(x,y,Z)
axis([-pi pi -pi pi -5 5])
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 10 decembrie 2013 32 / 51
Graca tridimensionala n MATLAB
Figura rezultata este
0
50
100
0
50
100
2
0
2
0
50
100
0
50
100
2
0
2
2
0
2
2
0
2
5
0
5
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 10 decembrie 2013 33 / 51
Graca tridimensionala n MATLAB
Funct ia surf produce grace cu celulele umplute (colorate) ale unor
suprafat e, iar surfc adauga contururi dedesubt.

In exemplul urmator am
folosit aceesi suprafat a ca la exemplul anterior, iar domeniul este dat de
0 x, y .
%graf8.m
x = 0:0.1:pi; y = 0:0.1:pi;
[X,Y] = meshgrid(x,y);
Z = sin(X + Y.^2) - cos(X.^2 -Y);
subplot(2,2,1), surf(Z)
subplot(2,2,2), surfc(Z)
subplot(2,2,3), surf(x,y,Z), shading flat
axis([0 pi 0 pi -5 5])
subplot(2,2,4), waterfall(Z)
Funct ia waterfall este similara funct iei mesh, dar fara cadrul de sarma
pe direct ia coloanelor.
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 10 decembrie 2013 34 / 51
Graca tridimensionala n MATLAB
Efectul este urmatorul:
0
20
40
0
20
40
2
0
2
0
20
40
0
20
40
2
0
2
0
2
0
2
5
0
5
0
20
40
0
20
40
2
0
2
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 10 decembrie 2013 35 / 51
Radacini si puncte de minim pentru funct ii de o variabila
reala
Pentru a aproxima radacinile ecuat iei f (x) = 0, cu f : R R se poate
folosi funct ia MATLAB fzero. Funct ia f trebuie denita. Forma
generala de utilizare a funct iei MATLAB fzero este
x = fzero(f,x0)
Daca x0 este un vector cu doua componente, atunci se presupune ca
acesta reprezinta un interval n care semnele lui f(x0(1)) si f(x0(2)) sunt
diferite.

In cazul n care acest lucru nu este adevarat apare o eroare .
Daca x0 este un scalar, atunci aceasta valoare se utilizeaza ca un punct de
plecare. fzero cauta un interval care cont ine o schimbare de semn pentru
f si care cont ine, de asemenea, punctul de start x0. Daca nu se gaseste un
astfel de interval, este returnata valoarea NaN.
Exemplu: Fie ecuat ia f (x) = 0, cu f (x) = x
3
x
2
3arctg(x) + 1.
Aceasta are 3 zerouri, primul ind pe intervalul [2, 1], semnele funct iei
n punctele 2 si 1 ind diferite.
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 10 decembrie 2013 36 / 51
Radacini si puncte de minim pentru funct ii de o variabila
reala
Mai ntai, denim funct ia f , de exemplu ntr-un sier funct ie f.m:
function y = f(x)
y = x^3 - x^2 - 3*atan(x)+1;
Apoi, primul zero se aproximeaza prin
>> fzero(@f,[-2,-1]) % sau fzero(f,[-2,-1])
ans =
-1.2780
>> f(ans)
ans =
-4.4409e-016
Putem deni funct ia f ca funct ie inline:
>> f = inline(x^3 - x^2 - 3*atan(x)+1)
>> x = fzero(f,[-2,-1])
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 10 decembrie 2013 37 / 51
Radacini si puncte de minim pentru funct ii de o variabila
reala
Se poate deni funct ia f ca funct ie anonima:
>> f = @(x) x^3 - x^2 - 3*atan(x)+1
>> fzero(f,-1.5)
ans =
-1.2780
Daca funct ia f este polinomiala, atunci radacinile pot determinate
folosind funct ia MATLAB roots. Sintaxa generala a acestei funct ii este
roots(V)
unde V reprezinta vectorul ce cont ine coecient ii polinomului. Daca V are
N+1 componente, atunci polinomul este
V(1) X
N
+... + V(N) X + V(N + 1).
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 10 decembrie 2013 38 / 51
Radacini si puncte de minim pentru funct ii de o variabila
reala
Exemplu: Vrem sa determinam radacinile ecuat iei x
3
2x
2
+ 3x 1 = 0.
>> V = [1 -2 3 -1];
>> roots(V)
ans =
0.7849 + 1.3071i
0.7849 - 1.3071i
0.4302
Obs. Pentru a calcula valoarea funct iei polinomiale ntr-un punct se
foloseste funct ia polyval(V,P), unde P (nu este neaparat scalar, poate
si vector) este punctul n care se calculeaza valoarea, iar V este vectorul
coecient ilor.
>> polyval(V,0.4302)
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 10 decembrie 2013 39 / 51
Radacini si puncte de minim pentru funct ii de o variabila
reala
Pentru a aproxima punctele de minim pentru o funct ie f : R R se
poate folosi funct ia MATLAB fminbnd. Secvent a urmatoare
x = fminbnd(f,x1,x2)
aproximeaza punctul de minim al lui f pe intervalul [x1, x2].
>> x = fminbnd(@cos,3,4)
x =
3.1416
>> x0 = fminbnd(@(x) x^2-2*x+1,0,2)
x0 =
1.0000
De asemenea, funct ia pentru care dorim sa determinam punctul de minim
poate data si ca obiect inline.
>> f1 = inline(sin(x)-pi/2);
>> x = fminbnd(f1,3,5)
x = 4.7124
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 10 decembrie 2013 40 / 51
Radacini si puncte de minim pentru funct ii de o variabila
reala
Consideram o funct ie de o variabila, dar care depinde si de un parametru
a. Denim aceasta funct ie ntr-un sier funct ie fun.m
function out = fun(x,a)
out = (x - a)^2 + 2*a -1;
Pentru a aproxima punctul de minim, denim mai ntai parametrul a:
>> a = 2;
>> x0 = fminbnd(@(x) fun(x,a),0,3)
x0 =
2
Pentru a aproxima punctul de maxim local al unei funct ii, vom apela
funct ia fminbnd pentru funct ia f .
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 10 decembrie 2013 41 / 51
Integrarea numerica

In MATLAB exista mai multe funct ii pentru calculul aproximativ al


integralei denite.
Funct ia trapz(x,y) aproximeaza integrala lui y n raport cu x folosind
metoda trapezelor.
De exemplu, vrem sa calculam


0
sin(x)dx.

In acest scop generam doi
vectori:
>> x = linspace(0,pi,50);
>> y = sin(x);
>> z = trapz(x,y)
z =
1.9993
Eroarea de aproximare este cu atat mai mica cu cat numarul de puncte
considerate pe intervalul [0, ] creste.
>> x = linspace(0,pi,200);
>> y = sin(x);
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 10 decembrie 2013 42 / 51
Integrarea numerica
>> z = trapz(x,y)
z =
2.0000
Astfel, o aproximare buna necesita un numar mare de puncte pe intervalul
de integrare, asadar un timp mare de execut ie.
Din acest motiv, cele mai utilizate funct ii MATLAB pentru calculul
aproximativ al unei intgrale denite sunt quad si quadl. Pentru a putea
folosite aceste funct ii, intervalul de integrare [a, b] trebuie sa e nit si
integrandul sa nu aiba nici o singularitate pe acest interval.
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 10 decembrie 2013 43 / 51
Integrarea numerica
Forma uzuala de apel este
q = quad(f,a,b,tol)
(la fel pentru quadl), unde f este funct ia de integrat. Ea poate data sub
forma de sir de caractere, obiect inline, funct ie anonima sau function
handle. Aceasta trebuie sa accepte la intrare vectori si sa returneze vectori.
Argumentul tol este eroarea absoluta (implicit este de 10
6
).
Funct ia quad este o implementare a unei cuadraturi adaptive de tip
Simpson, pe cand quadl este mai precisa si se bazeaza pe o cuadratura de
tip Gauss-Lobatto cu 4 puncte, cuadratura ind adaptiva. Ambele funct ii
dau mesaje de avertisment daca subintervalele devin prea mici sau daca
s-au facut prea multe evaluari. Astfel de mesaje indica posibile
singularitat i.
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 10 decembrie 2013 44 / 51
Integrarea numerica
De exemplu, vrem sa calculam

2
0
1
x
3
2x 5
dx:
>> f = @(x) 1./(x.^3-2*x-5);
>> q = quad(f,0,2)
q =
-0.4605
Calculam integrala denita

2
1

x + 1
1
x

e
(
x+
1
x
)
dx:
>> f = @(x) (x+1-1./x).*exp(x+1./x)
>> quadl(f,1,2)
ans =
16.9759
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 10 decembrie 2013 45 / 51
Rezolvarea sistemelor algebrice de ecuat ii liniare
Consideram sistemul de ecuat ii liniare Ax = b, cu A matricea coecient ilor
si b vectorul termenilor liberi.
Pentru a rezolva acest sistem se pot folosi operat iile matriceale (inv, *) cu
observat ia ca timpul de lucru poate destul de mare.
Instrumentul fundamental de rezolvare a sistemelor de ecuat ii liniare este
operatorul de mpart ire la stanga, \.

In funct ie de forma matricei
sistemului, numarul de ecuat ii si numarul de necunoscute, operatorul \se
bazeaza pe algoritmi diferit i. Daca sistemul este patratic, cu A o matrice
patratica nesingulara de ordinul n, atunci algoritmul folosit este cel al lui
Gauss de eliminare.

In cazul matricelor rau condit ionate sau singulare va
asat un mesaj de atent ionare.
O alta metoda este utilizarea funct iei MATLAB rref, care, aplicata unei
matrice, o reduce la forma triunghiulara (cu operat ii gaussiene).

In acest
scop, se construieste matricea extinsa a sistemului, careia i se aplica
funct ia rref.
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 10 decembrie 2013 46 / 51
Rezolvarea sistemelor algebrice de ecuat ii liniare
De exemplu, sa se rezolve sistemul

x
1
2x
2
+ x
3
= 0
2x
1
+ x
2
x
3
= 1
3x
1
+ x
2
+ x
3
= 2
>> A = [1 -2 1; 2 1 -1; -3 1 1]; b = [0; 1; 2];
>> x = A\b
x =
1.0000
2.0000
3.0000
>> C = [A,b]
C =
1 -2 1 0
2 1 -1 1
-3 1 1 2
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 10 decembrie 2013 47 / 51
Rezolvarea sistemelor algebrice de ecuat ii liniare
>> Crref = rref(C)
Crref =
1 0 0 1
0 1 0 2
0 0 1 3
Matricea obt inuta Crref ne spune daca sistemul este compatibil
determinat, compatibil nedeterminat sau incompatibil. Daca Crref are n
partea stanga matricea identitate de aceeasi dimensiune cu matricea
sistemului A, atunci sistemul este compatibil determinat si solut ia unica a
acestuia este ultima coloana a matricei Crref (solut ia sistemului din
exemplul precedent este [1; 2; 3]). Daca Crref are ultima linie formata
doar din 0, atunci sistemul este compatibil nedeterminat, iar daca toate
elementele de pe ultima linie a lui Crref sunt 0, cu except ia ultimului
atunci sistemul este incompatibil.
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 10 decembrie 2013 48 / 51
Rezolvarea sistemelor algebrice de ecuat ii liniare
De exemplu, sa se rezolve sistemul

x
1
+ 2x
2
= 1
2x
1
+ 4x
2
= 2
>> A = [1 2; 2 4]; b = [1; 2];
>> A\b
Warning: Matrix is singular to working precision.
ans =
NaN
NaN
>> C=[A,b]
>> Crref = rref(C)
Crref =
1 2 1
0 0 0
Deci sistemul este compatibil nedeterminat, cu x
1
= 1 2x
2
, x2 R.
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 10 decembrie 2013 49 / 51
Rezolvarea sistemelor algebrice de ecuat ii liniare
Un alt exemplu, sa se rezolve sistemul

x
1
+ 2x
2
= 1
2x
1
+ 4x
2
= 3
>> A = [1 2; 2 4]; b = [1; 3];
>> A\b
Warning: Matrix is singular to working precision.
ans =
-Inf
Inf
>> C=[A,b]
>> Crref = rref(C)
Crref =
1 2 0
0 0 1
Deci sistemul este incompatibil.
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 10 decembrie 2013 50 / 51
Rezolvarea sistemelor algebrice de ecuat ii liniare
O alta modalitate de rezolvare a unui sistem de ecuat ii liniare, este prin
descompunerea LU a matricei sistemului. Ideea descompunerii LU este de
a gasi 2 matrice patratice L si U, unde L triunghiulara inferior, iar U
triunghiulara superior astfel ncat A = LU. Funct ia MATLAB care
realizeaza o astfel de descompunere este lu. Aceasta accepta la intrare
doar matrice patratice. Sistemul revine la L(Ux) = b. Rezolvarea
sistemului Ax = b cu x = A\b, cu A patratica este echivalenta cu
secvent a MATLAB
>> [L, U] = lu(A);
>> x = U\(L\b);
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 10 decembrie 2013 51 / 51