Documente Academic
Documente Profesional
Documente Cultură
Probleme de matematica
rezolvate cu Octave/Matlab
se obţine vectorul ce are prima componentă egală cu vstart şi fiecare compo-
nentă se construieşte din precedenta adăugând valoarea pas. Ultima compo-
2
Probleme de matematica rezolvate cu Octave/Matlab
Operaţii cu matrici
3
Probleme de matematica rezolvate cu Octave/Matlab
În exemplul de mai jos sunt folosite operat, iile cu matrici. Este de remarcat
faptul că ı̂n cazul utilizării operat, iei de ı̂nmult, ire, dacă numărul de coloane
al primei matrici nu coincide cu numărul de linii al celei de-a doua, atunci ı̂n
fereastra de comandă va apărea un mesaj de eroare.
Exemplu:
Se consideră matricele A, B ∈ M3 (R), C ∈ M3,2 (R).
Să se derermine A + B, AC, transpusa matricei A. Să se calculeze det(A)
şi inversa matricei A, A−1 .
clc
clear all
close all
A=[2 -1 3;
0 2 -3;
2 4 0];
B=[1 3 2;
-1 -5 2;
0 -2 4];
C=[2 -1;
-2 3;
0 1];
% Suma A+B
S=A+B
%Produsul A*C
P=A*C
% det(A)
determinant=det(A)
% Inversa matricei A
Inversa=inv(A)
%A*A^{-1}=I_{3}?
test=A*Inversa
%Observatie
%Produsul C*A nu se poate efectua
C*A
4
Probleme de matematica rezolvate cu Octave/Matlab
-4 10
determinant = 18
Inversa =
0.6667 0.6667 -0.1667
-0.3333 -0.3333 0.3333
-0.2222 -0.5556 0.2222
test =
1.0000e+00 -2.2204e-16 -2.7756e-17
-2.7756e-17 1.0000e+00 2.7756e-17
-2.2204e-16 -2.2204e-16 1.0000e+00
error: operator *: nonconformant arguments (op1 is 3x2, op2 is 3x3)
error: called from
Operatii_matrici at line 21 column 3
Observaţia 1.1. În programul de mai sus a fost calculat produsul test =
A ∗ A−1 . Se observă că test ≈ I3 .
5
Probleme de matematica rezolvate cu Octave/Matlab
Exemplul 1:
Se consideră matricea A cu m linii si n coloane cu componente reale. Să
se construiască funcţia cu numele ”transformare” care are ca parametru de
intrare matricea iar ca parametrii de ieşire:
-vectorul vcomponente ı̂n care se vor copia toate componentele matricei A
parcurgându-le pe linii,
-vectorul aparitii construit astfel: aparitii(i) = numărul de aparit, ii al
elementului vcomponente(i) ı̂n vectorul vcomponente.
clc
clear all
A=[1 3 3 4;
-1 2 5 3;
0 2 5 1;
2 4 6 -1;
3 0 0 5];
function [vcomponente,aparitii]=transformare(A,m,n)
m=length(A(:,1))
n=length(A(1,:))
k=1;
for i=1:m
for j=1:n
vcomponente(k)=A(i,j);
aparitii(k)=0; k=k+1;
endfor
endfor
k=1;
while k<m*n+1
for i=1:m*n
if vcomponente(k)==vcomponente(i)
6
Probleme de matematica rezolvate cu Octave/Matlab
aparitii(k)=aparitii(k)+1;
endif
endfor
k=k+1;
end
endfunction
[vcomponente,aparitii]=transformare(A);
vcomponente
aparitii
Exemplul 2:
Se consideră o matrice pătratică A. Să se construiască o funct, ie cu nu-
mele ”determinant, i” care are drept parametru de intrare matricea A iar ca
parametru de ieşire vectorul vdeterminanti cu componentele vdeterminanti(i) =
determinantul matricei formate cu primele i linii şi i coloane ale matricei A.
Funcţia ”determinanti”:
function [vdeterminanti]=determinanti(A);
n=length(A(:,1))
vdeterminanti(1)=A(1,1);
B(1,1)=A(1,1);
B
7
Probleme de matematica rezolvate cu Octave/Matlab
for i=2:n
for j=1:i
B(i,j)=A(i,j);
B(j,i)=A(i,j);
endfor
B
vdeterminanti(i)=det(B);
endfor
endfunction
Rezultatele sunt:
A =
1 3 2 6 2
-1 2 5 -4 0
-3 4 8 3 3
0 2 -3 4 -1
3 2 4 -5 1
n = 5
B = 1
B =
1 -1
-1 2
B =
1 -1 -3
-1 2 4
-3 4 8
B =
1 -1 -3 0
-1 2 4 2
-3 4 8 -3
0 2 -3 4
B =
1 -1 -3 0 3
-1 2 4 2 2
-3 4 8 -3 4
0 2 -3 4 -5
3 2 4 -5 1
vdeterminanti =
Columns 1 through 3:
1.000000000000000e+00 1.000000000000000e+00 -2.000000000000000e+00
Columns 4 and 5:
-2.500000000000000e+01 2.475000000000000e+03
8
Probleme de matematica rezolvate cu Octave/Matlab
Observaţia 1.2. Pentru afis, area vectorului vdeterminanti a fost folosită instruct, iunea
f ormat long care conduce la scrierea ı̂n formatul cu 16 zecimale. Formatul cu
4 zecimale se obt, ine utilizând instruct, iunea f ormat short.
9
Probleme de matematica rezolvate cu Octave/Matlab
1) Reprezentarea unei curbe ı̂n sistemul cartezian de axe Oxy (curbă plană)
se realizează folosind instructiunea plot,
Sintaxa:
plot(x,y);
Descriere:
• x si y sunt vectori care au aceeaşi lungime n,
• se reprezintă grafic punctele de coordonate (x(i), y(i)), i = 1, n, şi acestea
sunt unite prin linii,
• pentru reprezentarea graficului unei funcţii de o variabilă definită pe un
interval, f : [a, b] → R:
-se construieşte vectorul x ca fiind o diviziune a intervalului [a, b] folosind
instrucţiunea x = a : pas : b
-se calculează y ca fiind vectorul valorilor funcţiei ı̂n punctele diviziunii,
y = f (x) şi
-se foloseşte instrucţiunea plot.
Instrucţiunea plot permite schimbarea unor caracteristici precum culoarea
şi grosimea liniei, tipul liniei, tipul şi culoarea marker-ului folosit la reprezentarea
punctului.
10
Probleme de matematica rezolvate cu Octave/Matlab
figurează punctele cu steluţe de culoare verde fără a le mai uni prin linii.
plot(x,y,’linewidth’,2)
2) Reprezentarea unei curbe ı̂n sistemul cartezian de axe Oxyz (curbă ı̂n
spaţiu) se realizează folosind instrucţiunea plot3,
Sintaxa:
plot3(x,y,z);
Descriere:
• x, y si z sunt vectori care au aceeaşi lungime n,
• se reprezintă grafic punctele de coordonate (x(i), y(i), z(i)), i = 1, n, şi
acestea sunt unite prin linii,
• pentru reprezentarea graficului unei curbe ı̂n spaţiu se pot folosi ecuaţiile
parametrice ale curbei. Dacă se cunosc expresiile coordonatelor x, y, z ca
funcţii de o variabilă t numită parametru, x, y, z : [a, b] → R, atunci reprezentarea
curbei se obţine astfel:
-se construieşte o diviziune a intervalului [a, b] folosind instrucţiunea
tv = a : pas : b,
-se calculează vectorii xv, yv, zv, xv = x(tv), yv = y(tv), zv = z(tv),
-se foloseşte instrucţiunea plot3.
11
Probleme de matematica rezolvate cu Octave/Matlab
Descriere:
• x, y si z sunt matrici care au m linii şi n coloane,
• suprafaţa este obţinută prin unirea punctelor Pij (x(i, j), y(i, j), z(i, j)),
• mulţimea perechilor (i, j) reprezintă nodurile unei diviziuni a dreptun-
ghiului [1, m] × [1, n].
• pentru reprezentarea graficului unei funcţii de două variabile f : [a, b] ×
[c, d] → R:
-se construiesc mai ı̂ntâi doi vectori coloană tx, ty ce reprezintă o diviziune
a intervalului [a, b], respectiv [c, d],
-se construiesc matricele x şi y astfel: x(i, j) = tx(j) y(i, j) = ty(i) cu
i = 1, m, j = 1, n,
-matricea z se obţine folosind expresia funcţiei f ,
-se foloseşte instrucţiunea mesh.
4) Reprezentarea unui set de date sub forma unor bare verticale se real-
izează folosind instrucţiunea bar,
Sintaxa:
bar(x,y)
12
Probleme de matematica rezolvate cu Octave/Matlab
Descriere:
• x şi y sunt vectori linie ce au aceeaşi lungime n,
• elementele vectorului x trebuie să fie egal depărtate şi crescătoare.
• datele se reprezintă sub forma unor bare verticale.
Descriere:
• x si y sunt vectori linie ce au aceeaşi lungime n,
• elementele vectorului x trebuie să fie egal depărtate şi crescătoare,
• datele se reprezintă sub forma unor segmente verticale care au ı̂n capătul
ce reprezintă poziţia punctului P (x(i), y(i)) un cerculeţ.
Exemplul 1:
Să se reprezinte grafic funcţiile:
-f : [0, π] → R, f (x) = 2 sin(3x) folosind culoarea verde
-g : [0, π] → R, g(x) = 2 cos(3x) folosind culoarea roşie.
13
Probleme de matematica rezolvate cu Octave/Matlab
Figura 1.1: Graficele funcţiilor f (x) = 2 sin(3x) (verde) si g(x) = 2 cos(3x) (rosu)
Exemplul 2:
Să se reprezinte grafic curba descrisă prin ecuaţiile parametrice:
x(t) = sin(t)
y(t) = cos(t)
(1.2)
z(t) = 2t, t ∈ [0, 6π].
t=0:pi/10:6*pi;
x=sin(t);
y=cos(t);
z=2*t;
figure(1)
plot3(x,y,z,’linewidth’,2)
hold on
xlabel(’x’,’fontsize’,8); hold on
ylabel(’y’,’fontsize’,8); hold on
zlabel(’z’,’fontsize’,8); hold on
end
În fig. 1.2 este reprezentată curba de mai sus numită elice cilindrică.
14
Probleme de matematica rezolvate cu Octave/Matlab
Exemplul 3:
Să se reprezinte grafic funct, ia f : [−5, 5] × [−5, 5] → R, f (x, y) = x2 + y 2 .
%construirea diviziunilor
tx =(-5:1:5)’
ty=(-5:1:5)’
%construirea matricelor nodurilor
[x, y] = meshgrid (tx, ty)
dimx=length(x(:,1))
dimy=length(y(1,:))
z=zeros(dimx,dimy);
%calculul matricei valorilor functiei
z=x.*x+y.*y;
z
figure(1)
mesh (x, y, z);
xlabel (’x’,’fontsize’,8);
ylabel (’y’,’fontsize’,8);
zlabel (’f(x,y)’,’fontsize’,8);
În fig. 1.3(a) este reprezentat graficul funct, iei f pentru o diviziune a inter-
valului [−5, 5] cu pasul p = 1 iar ı̂n fig. 1.3(b) este reprezentat graficul funct, iei
f pentru o diviziune a intervalului [−5, 5] cu pasul p = 0, 1.
15
Probleme de matematica rezolvate cu Octave/Matlab
(a) (b)
Figura 1.3: Graficul functiei f pentru o diviziune cu pas p=1 (a) si respectiv pentru
o diviziune cu pas p=0.1 (b)
Mai jos sunt redate matricele pentru pasul p = 5, mai mare decât cel folosit
la reprezentările grafice din fig. 1.3.
• Vectorul tx cont, ine nodurile diviziunii intervalului variabilei x.
• Vectorul ty cont, ine nodurile diviziunii intervalului variabilei y.
• Matricele x si y se construiesc cu instrucţiunea meshgrid şi reprezintă
coordonatele x respectiv y ale nodurilor domeniului [−5, 5] × [−5, 5].
• Matricea z reprezintă matricea valorilor funcţiei f ı̂n nodurile domeniului.
tx = -5
0
5
ty = -5
0
5
x = -5 0 5
-5 0 5
-5 0 5
y = -5 -5 -5
0 0 0
5 5 5
z = 50 25 50
25 0 25
50 25 50
16
Calcul simbolic in Matlab
Exemplul 5:
Într-o clasă sunt 29 de elevi care au obt, inut la un test notele din tabelul
următor:
Notă 4 5 6 7 8 9 10
Număr de elevi 2 3 3 4 8 6 3
Să se reprezinte sub formă de bare verticale rezultatele elevilor.
function reprezentarenote;
x=[4 5 6 7 8 9 10];
y=[2 3 3 4 8 6 3]
figure(1)
bar(x,y)
xlabel ("Nota",’fontsize’,8);
ylabel ("Numar de elevi",’fontsize’,8);
figure(2)
stem(x,y)
xlabel ("Nota",’fontsize’,8);
ylabel ("Numar de elevi",’fontsize’,8);
endfunction
(a) (b)
17
Calcul simbolic in Matlab
Calcul de derivate:
function derivare;
syms f(x)
f(x)=x^3;
der1(x)=diff(f,x)
der2(x)=diff(der1,x)
x=[1:0.1:2]
valder1=der1(x)
valder2=der2(x)
valf=f(x)
figure (1)
plot(x,valf,"b")
hold on
plot(x,valder1,"r");
hold on
plot(x,valder2,"g")
end
der2(x) =6*x
x = Columns 1 through 11
18
Calcul simbolic in Matlab
Columns 12 through 21
valf =
[1, 1331/1000, 216/125, 2197/1000, 343/125, 27/8, 512/125,
4913/1000, 729/125, 6859/1000, 8, 9261/1000, 1331/125,
12167/1000, 1728/125, 125/8, 2197/125, 19683/1000, 2744/125,
24389/1000, 27]
valder1 =
[3, 363/100, 108/25, 507/100, 147/25, 27/4, 192/25, 867/100, 243/25,
1083/100, 12, 1323/100, 363/25, 1587/100, 432/25, 75/4, 507/25,
2187/100, 588/25, 2523/100, 27]
valder2 =
[6, 33/5, 36/5, 39/5, 42/5, 9, 48/5, 51/5, 54/5, 57/5, 12, 63/5,
66/5, 69/5, 72/5, 15, 78/5, 81/5, 84/5, 87/5, 18]
19
Calcul simbolic in Matlab
f(x,y)=sin(x)*cos(y);
dfx(x,y)=diff(f,x)
dfy(x,y)=diff(f,y)
d2fxx=diff(dfx,x)
d2fyy=diff(dfy,y)
d2fxy=diff(dfy,x)
tx=[0:pi/100:3*pi]
ty=[0:pi/100:3*pi]
z=f(x,y)
figure(1)
mesh (x, y, z);
z=dfx(x,y)
figure (2)
mesh (x, y, z);
z=dfy(x,y)
figure (3)
mesh (x, y, z);
end
dfx(x, y) =cos(x)*cos(y)
dfy(x, y) =-sin(x)*sin(y)
d2fxx(x, y) =-cos(y)*sin(x)
d2fyy(x, y) =-cos(y)*sin(x)
20
Calcul simbolic in Matlab
d2fxy(x, y) =-cos(x)*sin(y)
21
Calcul simbolic in Matlab
function primitive
syms f(x)
f(x)=3*x^4
% o primitiva:
intf(x)=int(f,x)
f(x) =3*x^4
intf(x) =(3*x^5)/5
intdef =1875
function intfunctiide2var
clc
syms f(x,y)
22
Calcul simbolic in Matlab
f(x)=3*x^4+x*y
% o primitiva in raport cu x
intfx(x,y)=int(f,x)
intdreptunghi =3800
function intfunctiide3var
clc
syms f(x,y,z)
f(x,y,z)=3*x^4+x*y*z
% o primitiva in raport cu x
intfx(x,y,z)=int(f,x)
23
Calcul simbolic in Matlab
intparalelipiped =3825
>>
>>
24