Sunteți pe pagina 1din 33

CURS 3

1. Limbajul de programare MATLAB/Octave


2. Algebra liniar. Matrici speciale. Rezolvarea sistemelor
de ecuaii liniare
3. Calcul simbolic in MATLAB
4. Grafica 2D si 3D





Limbajul de programare MATLAB/Octave




D



KERNEL
Funcii de sistem
(funcii built - in)
Funcii M-file
Funcii utilizator






Octave (funcia poate fi scris n spaiul de lucru sau ntr-un fiier
de tip Notepad, salvat n Octave/bin)
MATLAB funcia poate fi scris doar n editorul
propriu, salvat n MATLAB/bin

function name
body
end
Exemplu: s se scrie o funcie pentru determinarea radacinilor unei ecuatii de
grad 2, n care coeficienii a, b i c sa poat fi introdui de la tastatur la apelarea
funciei
function ecuatie
clear all
a=input(a=)
b=input(b=)
c=input(c=)
delta=b^2-4*a*c;
r1=(-b+sqrt(delta))/2/a/c;
r2=(-b-sqrt(delta))/2/a/c;
disp(cele doua radacini ale ecuatiei sunt:)
[r1 r2]
endfunction


Salvarea sesiunii de lucru (mai putin partea grafica) intr-un fisier text se face
cu comanda diary nume_fisier. In fisierul nume_fisier, care se salveaza tot in
directorul bin se vor pastra toate comenzile si rezultatele obtinute pana la
intalnirea comenzii diary off.

Salvarea graficelor
print('nume_grafic','-doptiune') salveaza graficul cu numele specificat
(nume_grafic), in varianta de format grafic specificat prin optiune (extensia
fisierului).
print -doptiune nume_grafic -d inseamna -device
Unele dintre optiunile de format grafic sunt (vezi help print):
eps (format Encapsulated PostScript)
epsc2 (format Encapsulated Postscript, color, nivel 2) este recomandat,
deoarece are cea mai mare rezolutie
png (format Portable Network Graphic, 24-bit, color)
tiff sau jpeg (format format TIFF sau format JPEG) ( rezolutie slaba)
Pentru marirea rezolutiei, in MATLAB se poate apela - djpeg<nn>, unde <nn>
este nivelul de calitate (rezolutie); exemplu de utilizare: -djpeg90 (pentru nivel
de calitate = 90)

meta (utilizat in MATLAB si in GNU Octave = format Metafile cu extensia
emf pentru Windows, recomandat pentru inserarea graficului intr-un document
editat in MS Word)
emf (utilizat doar in GNU Octave = format Metafile pentru Windows,
recomandat pentru inserarea graficului in document din MS Word)
gif (utilizat doar in GNU Octave = format imagine GIF)

Exemplu:
x = 1:10, y=x, plot(x,y), print('dreapta.emf', '-dmeta')

va salva graficul dreapta.emf; acelasi lucru rezulta daca se scrie: print -dmeta
dreapta.emf

iar pentru a salva graficul dreapta.eps, se scrie: print -depsc2 dreapta.eps
Fisierele PostScript ps si Encapsulated PostScript eps pot fi vizualizate cu
GSview (numit si Ghost View) = free software

Copierea ferestrei de lucru MATLAB/Octave se poate face cu
Alt+PrtScn i paste ntr-un document .doc.

Dac intruciunile pentru determinarea rdcinilor ecuaiei sunt pstrate
ntr-un fiier ASCI, salvat n directorul bin al MATLAB/Octave, acesta
reprezint un script, iar la apelarea n linia de comand a numelui fiierului, vor
fi executate instruciunile care se gasesc n acesta.
clear all
echo on
a=input(a=)
b=input(b=)
c=input(c=)
delta=b^2-4*a*c;
r1=(-b+sqrt(delta))/2/a/c;
r2=(-b-sqrt(delta))/2/a/c;
disp(cele doua radacini ale ecuatiei sunt:)
[r1 r2]





Exemplu: S se scrie un script care s construiasc o matrice ptratic de
dimensiune n =100+k n care elementele de pe diagonala principal sunt egale
cu 4, cele de pe diagonala de deasupra i de dedesubtul diagonalei principale
sunt egale cu 2, iar restul cu 0.


|
|
|
|
|
.
|

\
|
=
|
|
|
|
|
.
|

\
|




=
mn m m m
n
n
n
a a a a
a a a a
a a a a
a a a a
A
3 2 1
3 33 32 31
2 23 22 21
1 13 12 11
4 2 0 0
2 4 2 0
0 2 4 2
0 0 2 4



Se observ c diagonala principal are indicii i=j, iar indicii pentru supra
i subdiagonala respecta condiia (i-j)= 1


n=100+1; %k=1
A=zeros(n);
for i=1:n
for j=1:n
if i==j
A(i,j)=4;
elseif abs(i-j)==1
A(i,j)=-2;
else
A(i,j)=0;
endif
endfor
endfor
[A]

Algebra liniar. Matrici speciale. Rezolvarea sistemelor
de ecuaii liniare

= + + +
= + + +
= + + +
b x a x x x a
b x a x a x a
b x a x a x a
m n mn m m
n n
n n
.....
.......... .......... .......... ..........
.....
.....
2 2 1 1
2 2 2 22 1 21
1 1 2 12 1 11

Se scrie matricial : B X A = , unde
|
|
|
|
|
.
|

\
|
=
a a a
a a a
a a a
mn m m
n
n
A
...
... ... ... ...
...
...
2 1
2 22 21
1 12 11
,
|
|
|
|
|
.
|

\
|
=
m
b
b
b
B
...
2
1
, iar
|
|
|
|
|
.
|

\
|
=
m
x
x
x
X
...
2
1
este vectorul care conine
soluia sistemului.

Sistemul poate fi compatibil determinat (det(A)0)
nedeterminat
incompatibil (nu are soluii)
Conform teoremei Kronecker Capelli sistemul este compatibil
dac rangul matricii sistemului este egal cu rangul matricii extinse.
>> rank(A) == rank([A B])
>> if det(A)~=0
B X A = solutia sistemului se obtine B A X
1
=
>> X=inv(A)*B
>>X=A\B
Exist situaii practice, n care un sistem care descrie un
fenomen fizic are mai multe ecuaii dect necunoscute sau mai
multe necunoscute dect ecuaii sau care din punct de vedere
strict matematic nu are soluii, caz n care se caut o soluie
aproximativ care verific cel mai bine sistemul (prin metoda
celor mai mici ptrate).
Operatorul \ sau pinv rezolv astfel de situaii.
Intruct A este dreptunghiular (deci nu i se poate calcula
inversa), ecuaia matricial se nmulete la stnga cu
transpusa acesteia:
B A X A A
T T
=

( ) ( ) ( ) B A A A X A A A A
T T T T
1 1
=

Matrice ptratic
I (matricea identic)
pinv(A) = pseudoinversa
>> X=pinv(A)*B
>> X=A\B

Matrici speciale:
- matricea nul zeros(n) = creeaz o matrice ptrat nxn cu elemente
nule, iar zeros(n,m) are dimensiunea nxm
- matricea unitate ones(n), respectiv ones(n,m)
- matricea identic eye(n), eye(n,m)
-matricea Hilbert
- matricea magica
>> magic(n)




Melancolia, gravur de Albrecht Drer,1514
3. Calcul simbolic in MATLAB
In MATLAB pot fi efectuate in mod simbolic o serie de calcule matematice cum ar
fi calculul unor derivate, integrale, limite sau serii Taylor; in cadrul algebrei liniare
determinarea inversei, valorilor proprii, determinantului sau descompunerii unei matrici
simbolice, metode de simplificare a expresiilor algebrice, rezolvarea simbolica si
numerica a ecuatiilor algebrice si diferentiale, functii speciale s.a.
Inainte de a incepe calculul simbolic trebuie declarate variabilele respective cu
instructiunea syms.
Exemplul 1:
Dac S este o expresie simbolic, solve(S) determin valorile variabilei simbolice
din expresia S, pentru care S este zero (0).

>>syms a b c x
>>S=a*x^2+b*x+c;
>>solve(S)


Rezult cele dou soluii:

1/2/a*(-b+(b^2-4*a*c)^(1/2))
1/2/a*(-b-(b^2-4*a*c)^(1/2))



Exemplul 2:

>>syms a b c d e f g h i
>>A=[a b c; d e f; g h i]
>>D=det(A)


Exemplul 3:

Functia symsum

- Fie seria lui Riemann 1+1/2^2+1/3^3+.

>>syms x k
>>s1 = symsum(1/k^2,1,inf)

- Fie seria geometrica 1+x+x^2+.


>>syms x k
>>s2 = symsum(x^k,k,0,inf)
A = [ a, b, c]
[ d, e, f]
[ g, h, i]
D = a*e*i - a*f*h - b*d*i + b*f*g + c*d*h - c*e*g

s1 = 1/6*pi^2

s2 = -1/(x-1)



- Calculul sumei patratelor primelor n numere naturale

syms k n x
symsum(k^2)
returneaza: 1/3*k^3-1/2*k^2+1/6*k

- Calculul sumei patratelor primelor 10 numere naturale

symsum(k^2,0,10) returns
385
- Calculul produsului polinoamelor f(x) = ax + 3 i g(x) = x + b
>> syms a b x f g
>> f = a * x + 3
f =
a*x+3
>> g = x + b
g =
x+b
>> f * g
ans =
(a*x+3)*(x+b)
4. Grafica 2D i 3D









n general, pentru a realiza o reprezentare grafic, trebuie parcurse
etapele urmtoare:
Etapa

Instruciuni
1.Pregtirea
datelor
x = 0:0.2:12;
y1=f1(x)
y2=f2(x)
plot
ezplot
plot
polar(teta,r
)
y3=f3(x)
2. Apelarea
unei
funcii
elementare
de plotare
h = plot(x,y1,x,y2,x,y3);
4. Selectarea

caracteristicilo
r liniei i
markerului.
set(h,'LineWidth',2,{'LineStyle'},{'--';':';'-.'})
set(h,{'Color'},{'r';'g';'b'})
5. Setarea
limitelor
axelor, afisare
grid
axis([0 12 -0.5 1])
grid on
6. Completarea
graficului cu
etichete pe
axe, legend,
text
xlabel('x')
ylabel('y')
legend(h,'First','Second','Third')
title('titlul graficului')
text('alte_notaii')


Funciile pentru realizarea graficelor:
Funcie Utilizare
plot Genereaz grafice 2-D cu scalare liniar a axelor
loglog Genereaz grafice cu scalare logaritmic a axelor
semilog
x
Genereaz grafice cu scalare liniar a axei y i cu scalare logaritmic
a axei x
semilog
y
Genereaz grafice cu scalare liniar a axei x i cu scalare logaritmic
a axei y
plotyy Genereaz grafice cu dubl reprezentare a axei y (pe stnga i pe
dreapta)
ezplot Se utilizeaz pentru reprezentarea funciilor date sub form
parametric. De exemplu:
>> ezplot('x.^2/16+y.^2/3=6',[-15 15])
polar Pentru cazul n care variabilele sunt exprimate n coordinate polare




Reprezentarea mai multor curbe pe acelai grafic

t = 0:pi/100:2*pi;
y1= sin(t);
y2 = sin(t-0.25);
y3 = sin(t-0.5);
plot(t,y1,'-',t,y2,'--',t,y3,':') SAU plot(t,y1)
hold on
plot(t,y2)
plot(t,y3)
hold off






Funciile de plotare accept deci argumente de tip caracter care specific
stilul liniei, simbolurile utilizate pentru marker, culoarea etc. Forma general
este:

plot(x,y,'linestyle_marker_color')

unde linestyle_marker_color este un ir de caractere construit din:
- Un stil de linie (de exemplu linie punctat, plin etc.)
- Un tip de marker (de exemplu x, *, o, etc.)
- Un specificator de culoare ('r' rosu (red), 'b' albastru (blue), 'k'
negru (black; neimplementat in versiunile vechi, 2.x.xx, de GNU
Octave), 'g' verde (green; de fapt este verde fluorescent), 'm'
ciclamen (magenta), 'c' bleu ciel (cyan), 'w' alb (white) si 'y' galben
(yellow).
Se poate folosi un specificator sau mai muli, n orice ordine. De exemplu,
'ro--'
definete o linie ntrerupt, cu markere circulare, ambele colorate rosu.

Specificarea culorii i dimensiunii liniilor

Caracteristicile liniilor se pot controla prin specificarea unor valori pentru
proprietile linilor:
- LineWidth specific limea unei linii.
- MarkerEdgeColor seteaz culoarea markerului sau culoarea marginilor
markerului n cazul anumitor forme (cerc, ptrat etc.)
- MarkerFaceColor seteaz culoarea interiorului markerelor.
- MarkerSize specific dimensiunea markerului.

Exemplu:

x = -pi:pi/10:pi;
y = tan(sin(x)) - sin(tan(x));
plot(x,y,'--rs','LineWidth',2, 'MarkerEdgeColor','k', 'MarkerFaceColor','g',
'MarkerSize',10)



Plotarea cu axa Y dubl
Comanda plotyy permite crearea unor grafice pentru dou seturi de date i
cu reprezentare dubl a axei Y, pe partea stng i pe partea dreapt.
Exemplu:

t = 0:pi/20:2*pi;
y = exp(sin(t));
plotyy(t,y,t,y,'plot','stem')
Setarea parametrilor axelor
La apelarea comenzii plot, sunt setate automat limitele axelor i gradarea
acestora. Se pot ns folosi i setrile utilizatorului:
axis

axis('auto')
axis([x_left, x_right,
y_infer, y_sup])


axis equal sau
axis('equal')

axis square sau
axis('square')

axis off sau axis('off')
Permite scalarea automata a axelor si
afiseaza limitele axelor.
Permite scalarea automata a axelor.
Exemplu:
axis([0, 100, -5, 10]) scaleaza
graficul de la 0 la 100 pe axa Ox si de
la -5 la 10 pe axa Oy

Scaleaza axele cu unitatea pe axa Ox
egala cu unitatea de pe axa Oy.
Scaleaza axele astfel incat graficul sa
se incadreze intr-un patrat.
Nu mai afiseaza axele graficului


Afiarea unor grafice multiple n aceeai fereastr grafic
Funcia subplot(m,n,i) desparte fereastra de tip figur ntr-o matrice m x n
de mici subploturi (subgrafice) i selecteaz subplotul i ca grafic curent.
Exemplu:
t = 0:pi/20:2*pi;
[x,y] = meshgrid(t);
subplot(2,2,1)
plot(sin(t),cos(t))
axis equal
subplot(2,2,2)
z = sin(x)+cos(y);
plot(t,z)
axis([0 2*pi -2 2])
subplot(2,2,3)
z = sin(x).*cos(y);
plot(t,z)
axis([0 2*pi -1 1])
subplot(2,2,4)
z = (sin(x).^2)-(cos(y).^2);
plot(t,z), axis([0 2*pi -1 1])

Comenzi pentru personalizarea graficelor
MATLAB-ul furnizeaz comenzi de etichetare a fiecrei axe i de plasare a
unui text n orice loc din grafic. Comenzile sunt prezentate n tabelul urmtor.
Comand

Descriere
title Adaug un titlu
xlabel Adaug o etichet pe axa x
ylabel Adaug o etichet pe axa y
zlabel Adaug o etichet pe axa z
legend Adaug o legend
text Afieaz un text la o locaie specificat
gtext Plaseaz textul pe grafic utiliznd mouse-ul
MATLAB-ul interpreteaz caracterele care urmeaz dup backslash
"\" ca i comenzi TeX. Aceste comenzi permit inserarea unor simboluri
cum ar fi literele greceti sau sgeile.

Adugarea textelor
Prin utilizarea funciei text se poate plasa un text (ir de caractere) oriunde
pe grafic. Exemplu:
text(3*pi/4,sin(3*pi/4),...
'\leftarrowsin(t) = .707',...
'FontSize',16)
text(pi,sin(pi),'\leftarrowsin(t) = 0',...
'FontSize',16)
text(5*pi/4,sin(5*pi/4),'sin(t)=-.707
\rightarrow',...
'HorizontalAlignment','right',...
'FontSize',16)


Plasarea textului n mod interactiv
(doar in Matlab!)- cu ajutorul mouse-ului
>> gtext


GRAFICA 3D (funcii reale de dou variabile reale)




- surf, mesh, surfc, meshc
- ezsurf, ezcontour, ezmesh
- plot3
pentru indicaii privind utilizarea lor se tasteaz help comanda, de exemplu
help surf n linia de comand a MATLAB/ Octave



Vizualizarea funciilor de dou variabile

[X,Y] = meshgrid(-8:.5:8);
R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R)./R;

mesh(X,Y,Z)
- functia colormap('paleta') care are ca efect setarea paletei de culori, codul de culori presetate
pentru 'paleta' fiind: 'jet', 'hsv', 'hot', 'spring', 'summer', 'autumn', 'winter', cool', 'copper', 'gray',
'bone', 'pink'; vezi help colormap. Implicit, colormap este setat pe 'jet'.
colormap(winter) sau culormap(hot)







1
2
3
Crearea de grafice tip contur
Funciile contour i contour3 afieaz contururi 2-D i 3-D. Pentru a seta
numrul de niveluri de contur (implicit se realizeaz automat pe baza valorilor
minime i maxime) se folosete un argument suplimentar opional. De
exemplu,
[X,Y,Z] = peaks;
contour(X,Y,Z,20)
afieaz 20 de contururi ale funciei
ntr-o vedere bidimensional.






Pentru o reprezentare 3 D:
[X,Y,Z] = peaks;
contour3(X,Y,Z,20)
h = findobj(`Type','patch');
set(h,'LineWidth',2)
title('Twenty Contours')



Sa se reprezinte grafic suprafaa descris de ecuaiile:

S-ar putea să vă placă și