curs3_b
DESCRIPTION
Curs.TRANSCRIPT
-
7/14/2019 Curs3_b
1/33
CURS 3
1. Limbajul de programare MATLAB/Octave
2. Algebra liniar. Matrici speciale. Rezolvarea sistemelor
de ecuaii liniare3. Calcul simbolic in MATLAB
4. Grafica 2D si 3D
-
7/14/2019 Curs3_b
2/33
Limbajul de programare MATLAB/Octave
D
KERNELFuncii de sistem
(funcii built - in)
Funcii M-file
Funcii utilizator
-
7/14/2019 Curs3_b
3/33
Octave(funcia poate fi scris n spaiul de lucru sau ntr-un fiier
de tip Notepad, salvat n Octave/bin)
MATLABfuncia poate fi scris doar n editorul
propriu, salvat n MATLAB/bin
function name
body
end
-
7/14/2019 Curs3_b
4/33
Exemplu:s se scrie o funciepentru 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 ecuatieclear 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
-
7/14/2019 Curs3_b
5/33
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 -deviceUnele dintre optiunile de format grafic sunt (vezi help print):
eps (formatEncapsulated PostScript)
epsc2 (formatEncapsulated Postscript, color, nivel 2) este recomandat,
deoarece are cea mai mare rezolutie
png (formatPortable Network Graphic, 24-bit, color)
tiff saujpeg (format format TIFF sau formatJPEG) ( rezolutie slaba)Pentru marirea rezolutiei, in MATLAB se poate apela - djpeg, unde
este nivelul de calitate (rezolutie); exemplu de utilizare: -djpeg90 (pentru nivel
de calitate = 90)
-
7/14/2019 Curs3_b
6/33
meta (utilizat in MATLAB si in GNU Octave = formatMetafile cu extensia
emfpentru Windows, recomandat pentru inserarea graficului intr-un document
editat in MS Word)
emf (utilizat doar in GNU Octave = formatMetafilepentru 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.epsFisierele PostScript ps si Encapsulated PostScript epspot 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.
-
7/14/2019 Curs3_b
7/33
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]
-
7/14/2019 Curs3_b
8/33
Exemplu: S se scrie un script care s construiasc o matrice ptratic dedimensiune n =100+kn care elementele de pe diagonala principal sunt egale
cu 4, cele de pe diagonala de deasupra i de dedesubtul diagonalei principalesunt egale cu2, iar restul cu 0.
mnmmm
n
n
n
aaaa
aaaaaaaa
aaaa
A
321
3333231
2232221
1131211
4200
2420
0242
0024
Se observ c diagonala principal are indicii i=j, iar indicii pentru supra
i subdiagonala respecta condiia (i-j)= 1
-
7/14/2019 Curs3_b
9/33
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]
-
7/14/2019 Curs3_b
10/33
Algebra liniar. Matrici speciale. Rezolvarea sistemelor
de ecuaii liniare
bxaxxxa
bxaxaxa
bxaxaxa
mnmnmm
nn
nn
.....
........................................
.....
.....
2211
22222121
11212111
Se scrie matricial : BXA , unde
aaa
aaa
aaa
mnmm
n
n
A
...
............
...
...
21
22221
11211
,
mb
b
b
B ...
2
1
,iar
mx
x
x
X ...
2
1
este vectorul care conine
soluia sistemului.
-
7/14/2019 Curs3_b
11/33
Sistemul poate fi compatibil determinat (det(A)0)
nedeterminat
incompatibil (nu are soluii)
Conform teoremei KroneckerCapelli sistemul este compatibil
dac rangul matricii sistemului este egal cu rangul matricii extinse.
>> rank(A) == rank([A B])
>> if det(A)~=0
BXA solutia sistemului se obtine BAX 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 ecuaiisau care din punct de vedere
strict matematic nu are soluii, caz n care se caut o soluie
-
7/14/2019 Curs3_b
12/33
aproximativ care verific cel mai bine sistemul (prin metoda
celor mai mici ptrate).
Operatorul \ sau pinvrezolv astfel de situaii.
Intruct A este dreptunghiular (deci nu i se poate calcula
inversa), ecuaia matricial se nmulete la stnga cu
transpusa acesteia:
BAXAA TT BAAAXAAAA TTTT 11
Matrice ptratic
I (matricea identic)
pinv(A) = pseudoinversa
>> X=pinv(A)*B
>> X=A\B
-
7/14/2019 Curs3_b
13/33
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 deAlbrecht Drer,1514
http://ro.wikipedia.org/wiki/Albrecht_D%C3%BCrerhttp://ro.wikipedia.org/wiki/Albrecht_D%C3%BCrerhttp://ro.wikipedia.org/wiki/Albrecht_D%C3%BCrer -
7/14/2019 Curs3_b
14/33
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 sauserii Taylor; in cadrul algebrei liniare
determinarea inversei, valorilor proprii, determinantuluisau 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 respectivecu
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).
>>symsa 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))
-
7/14/2019 Curs3_b
15/33
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+.
>>symsx k
>>s1 = symsum(1/k^2,1,inf)
-Fie seria geometrica 1+x+x^2+.
>>symsx 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)
-
7/14/2019 Curs3_b
16/33
- Calculul sumei patratelor primelor n numere naturale
syms k n xsymsum(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 ig(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)
-
7/14/2019 Curs3_b
17/33
4. Grafica 2D i 3D
n general, pentru a realiza o reprezentare grafic, trebuie parcurse
etapele urmtoare:
Etapa Instruciuni
1.Pregtirea
atelor
x = 0:0.2:12;
y1=f1(x)
y2=f2(x)
plot
ezplot
plot
polar(teta,r
-
7/14/2019 Curs3_b
18/33
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
-
7/14/2019 Curs3_b
19/33
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
-
7/14/2019 Curs3_b
20/33
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 pedreapta)
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
-
7/14/2019 Curs3_b
21/33
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
-
7/14/2019 Curs3_b
22/33
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_coloreste 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 oriceordine. De exemplu,
'ro--'
definete o linie ntrerupt, cu markere circulare, ambele colorate rosu.
-
7/14/2019 Curs3_b
23/33
Specificarea culorii i dimensiunii liniilor
Caracteristicile liniilor se pot controla prin specificarea unor valori pentruproprietile linilor:
LineWidthspecific limea unei linii. MarkerEdgeColor seteaz culoarea markerului sau culoarea marginilor
markerului n cazul anumitor forme (cerc, ptrat etc.)
MarkerFaceColorseteaz culoarea interiorului markerelor. MarkerSizespecific 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)
-
7/14/2019 Curs3_b
24/33
Plotarea cu axa Y dubl
Comandaplotyypermite 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')
-
7/14/2019 Curs3_b
25/33
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 sauaxis('equal')
axis square sauaxis('square')
axis off sau axis('off')
Permite scalarea automata a axelor siafiseaza limitele axelor.Permite scalarea automata a axelor.Exemplu: axis([0, 100, -5, 10]) scaleazagraficul de la 0 la 100 pe axa Ox si dela -5 la 10 pe axa Oy
Scaleaza axele cu unitatea pe axa Oxegala cu unitatea de pe axa Oy.Scaleaza axele astfel incat graficul sase incadreze intr-un patrat.Nu mai afiseaza axele graficului
-
7/14/2019 Curs3_b
26/33
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 equalsubplot(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])
-
7/14/2019 Curs3_b
27/33
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 axax
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
-
7/14/2019 Curs3_b
28/33
MATLAB-ul interpreteaz caracterele care urmeaz dup backslash"\" ca i comenzi TeX. Aceste comenzi permit inserarea unor simboluricum ar fi literele greceti sau sgeile.
Adugarea textelorPrin utilizarea funciei textse 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
-
7/14/2019 Curs3_b
29/33
GRAFICA 3D (funcii reale de douvariabile reale)
-surf, mesh, surfc, meshc
-ezsurf, ezcontour, ezmesh
-plot3
pentru indicaii privind utilizarea lor se tasteaz help comanda, de exempluhelp surfn linia de comand a MATLAB/ Octave
-
7/14/2019 Curs3_b
30/33
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
-
7/14/2019 Curs3_b
31/33
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. Deexemplu,
[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')
-
7/14/2019 Curs3_b
32/33
Sa se reprezinte grafic suprafaa descris de ecuaiile:
-
7/14/2019 Curs3_b
33/33