Sunteți pe pagina 1din 17

Laboraratorul 1.

INTRODUCERE N MATLAB
Bibliografie:
1. M. Ghinea, V. Fireeanu, Matlab: Calcul numeric- Grafic-Aplicaii, ed. Teora,
Bucureti, 1998.
2. I. Iatan , ndrumtor de laborator n Matlab 7.0, Ed. Conspress, Bucureti, 2009.
Scopuri:
1) Aplicarea Matlab-ului in calcule matematice fundamentale.
2) Calcul numeric n Matlab cu aplicaii n Algebr.
3) Rezolvarea in Matlab a ecuaiilor si sistemelor de ecuatii difereniale.
4) Notiunea fisier in Matlab: creare, scriere, adaugare de date, citire.
5) Grafica in Matlab: reprezentari grafice 2D, reprezentarea grafica a histogramelor,
reprezentari grafice 3D.
MATLAB-ul este un pachet de programe de o performan remarcabil care are o vast
aplicabilitate att n domeniul tiinei ct al ingineriei.
Pentru lansarea n execuie a programului se acioneaz dublu click pe pictograma
Matlab de pe Desktop sau se selecteaz Start All Programs Matlab.
APLICAII N CALCULE MATEMATICE FUNDAMENTALE
1) S se calculeze expresiile urmtoare:
a)
3 3
2 5 17 2 5 17 + +
>> (17+5*sqrt(2))^(1/3)+(17-5*sqrt(2))^(1/3)
ans =
5.0367
b)
3 3
1
1
1
1
|
.
|

\
|
+

|
.
|

\
|

+
i
i
i
i

>> ((1+i)/(1-i))^3-((1-i)/(1+i))^3
ans =
0 - 2.0000i
c)
5
3
log x B = , pentru 7 = x ;
Folosim formula de schimbare a bazei logaritmice

2
a
x
x
b
b
a
log
log
log = .
>> x=7;
>> log(x^(1/5))/log(3)
ans =
0.3542
d) x x x x C 7 cos 5 cos 3 cos cos
4 4 4 4
+ + + = , pentru
8
t
= x ;
>> x=pi/8;
>> C=cos(x)^4+cos(3*x)^4+cos(5*x)^4+cos(7*x)^4
C =
1.5000
2) S se sorteze n ordine descresctoare elementele vectorului
( ) 7 8 20 1 76 . 0 = x , cu precizarea indicelui fiecrui element.
>> x=[-0.76 -1 20 8 -7]
x =
-0.7600 -1.0000 20.0000 8.0000 -7.0000
>> [y,I]=sort(x,descend)
y =
20.0000 8.0000 -0.7600 -1.0000 -7.0000
I =
3 4 1 2 5
3) Se consider matricea
|
|
|
|
|
.
|

\
|

=
3 4 . 7 12 78
78 5 4 7 . 5
7 9 . 0 0 7 . 4
3 99 7 1
A .
Se cere:
a) Transformai matricea A ntr-un vector coloan b ;
>> A=[1 -7 99 3;4.7 0 0.9 -7;5.7 4 5 78;-78 12 -7.4 3];
>> b=A(:);
3
b) S se extrag submatricea D de dimensiune 2 3x , ce const din elementele situate pe
ultimele trei linii i primele dou coloane ale matricei A.
>> D=A(2:4,1:2)
D =
4.7000 0
5.7000 4.0000
-78.0000 12.0000
CALCUL NUMERIC N MATLAB CU APLICAII N ALGEBR
4) Rezolvai ecuaiile neliniare:
a) arctgx 1 = + x
>> f=@ (x) 1+x-atan(x);
>> x=fzero(f,[-3 3])
x =
-2.1323
>> f(x)
ans =
2.2204e-016
b) 0 cos
2
= x x t
>> f=@ (x) x.^2-cos(pi*x);
>> s=fsolve(f,[-0.5,0.5])
s =
-0.4384 0.4384
>> f(s)
ans =
1.0e-011 *
0.962 0.1001
5) Rezolvai sistemele neliniare:
a)

= +
= + +
0 2 6
0 3 6
3 3
3 3
y y x
x y x
(considernd ca punct iniial ( ) 5 . 0 , 5 . 0 )
Pasul 1. Definim funcia vectorial f .

4
>>f=@(x) [x(1)^3+x(2)^3-6*x(1)+3;
x(1)^3-x(2)^3-6*x(2)+2];
Pasul 2. Rezolvm sistemul neliniar.
>> s = fsolve(f,[0.5 0.5])
s =
0.53237037226762 0.35125744755245
Pasul 3. Efectum verificarea soluiei pe care am obinut-o.
>> f(s)
ans =
1.0e-009 *
0.29623858921468
0.19358559200100
b)

= +
=
= + +
0
1
9
2
2 2 2
z y x
xyz
z y x
(considernd ca punct iniial ( ) 6 . 1 , 2 . 0 , 5 . 2 ).
>> f=@(x) [x(1)^2+x(2)^2+x(3)^2-9;x(1)*x(2)*x(3)-1;x(1)+x(2)-x(3)^2]
f =
@(x) [x(1)^2+x(2)^2+x(3)^2-9;x(1)*x(2)*x(3)-1;x(1)+x(2)-x(3)^2]
>> s = fsolve(f,[2.5 0.2 1.6])
s =
2.49137569683072 0.24274587875742 1.65351793930053
>> f(s)
ans =
1.0e-011 *
0.11226575225010
0.13493650641294
-0.05244693568329
REZOLVAREA IN MATLAB A ECUAIILOR SI SISTEMELOR DE ECUATII DIFERENIALE
6) S se integreze ecuaia de tip Riccati
( ) x x y x y y x 2 1 2
2 2
+ + + = ' , 0 > x
>> y=dsolve('x*Dy=y^2-(2*x+1)*y+x^2+2*x','x')
5
y =
(-x-1+x^2*C1)/(-1+x*C1)
7) S se integereze ecuaia difereniala Euler:

x y y x + = ' ' + ' ' ' 1
>> y=dsolve('x*D3y+D2y=1+x','x')
y =
1/12*x^3+x*log(x)*C1-C1*x+1/2*x^2+C2*x+C3
8) S se rezolve urmtorul sistem de ecuaii difereniale liniare neomogen:

+ + = '
+ = '
+ = '
3 3
2 3
2 1 3
2
3 1 2
2
3 2 1
x y y y
x y y y
x x y y y

>> [y1,y2,y3]=dsolve('Dy1=y2+y3-x-x^2','Dy2=3*y1+y3-2-x^2','Dy3=3*y1+y2+x-3','x')
y1 =
1+2/3*C2*exp(3*x)-C3*exp(-2*x)
y2 =
x+exp(-x)*C1+C2*exp(3*x)+C3*exp(-2*x)
y3 =
-exp(-x)*C1+C2*exp(3*x)+C3*exp(-2*x)+x^2
NOTIUNEA FISIER IN MATLAB
9) Construiti un program in Matlab, cu ajutorul caruia:
- sa se creeze un fisier in care vor fi salvate doua matrice, una de tipul () si
cealalta () ;
- sa se citeasca continutul fisierului in alte doua matrice.
Se va construi un script in Matlab cu numele fisier.m, avand continutul:
W=[1 6; 7 8]; w=[-2 3 5; 6 7 8];
fid=fopen('pond1fb','w');
fprintf(fid,'%f\t',W);
fprintf(fid,'%f\t',w);
fclose(fid);
fid=fopen('pond1fb','r');

6
a=fscanf(fid,'%f\t',[2,3]);
b=fscanf(fid,'%f\t',[2,2]);
fclose(fid);
In linia de comanda se scrie
>>fisier
GRAFICA IN MATLAB
10) Reprezentati grafic in Matlab printr-o histograma, notele obtinuite de cei 50 de studenti
inscrisi la cursul de Statistica. Notele se vor citi dintr-un fisier text.
Se construieste un script in Matlab, cu denumirea fis.m, ce contine:
fid=fopen('pond.txt','r');
u=fscanf(fid,'%f\t',[1,50]);
fclose(fid);
In linia de comanda scriem:
>> fis
>> for j=1:max(u)
v=find(u(1:length(u))==j);
n(j)=length(v);
end
>> sum(n)
ans =
50
>> v=1:10;
>> hist(u,v)
>> grid on
7

11) Reprezentai grafic urmtoarele funcii n plan:
( )
2
1
2
arcsin )
x
x
x f a
+
= , | | 5 , 5 e x
Pasul 1. Se fixeaz intervalul pe care va fi reprezentat funcia i un anumit pas.
>>x=-5:0.1:5;
Pasul 2. Definim funcia ce urmeaz s fie reprezentat.
>> f=@(x) asin(2*x./(1+x.^2));
Pasul 3. Realizm reprezentarea grafic.
>> plot(f(x),'m','LineWidth',4)

0 20 40 60 80 100 120
-2
-1.5
-1
-0.5
0
0.5
1
1.5
2

8
( ) x x f b arcsin ) = , ( ) x x g arccos = , | | 1 , 1 e x
>>x=-1:0.01:1;
>> f=@(x) asin(x);
>> g=@(x) acos(x);
>> plot(x,f(x),'r',x,g(x),'b','LineWidth',3)


12) Reprezentati arcul de parabola
2
: x y AB = , care uneste punctele ( ) 1 , 1 A si ( ) 4 , 2 B .
Secventa Matlab urmatoare permite reprezentarea arcului AB .
>> x=-4:.1:4;
>> y=x.^2;
>> plot(x,y,1,1,'or',2,4,'or')

13) Scriei un fiier function n Matlab pentru a reprezenta grafic funcia
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1
-2
-1
0
1
2
3
4
-4 -3 -2 -1 0 1 2 3 4
0
2
4
6
8
10
12
14
16
A(1,1) A(1,1) A(1,1) A(1,1)
B(2,4)
9
( )

=
=
=
0 , 0
0 ,
1
cos
x
x
x
x
x f , | | 5 . 0 , 5 . 0 e x , 01 . 0 = h
Se selecteaz succesiv File->New->M-file i se scriu urmtoarele instructiuni
function r=f(x)
if x~=0
r=x*cos(1/x);
elseif x==0
r=0;
end
end
Se salveaz fiierul cu f.m apoi n linia de comanda se scrie:
>> x=-0.5:0.01:0.5;
>> for k=1:length(x)
y(k)=f(x(k));
end
>> plot(x,y)

14) Reprezentati grafic in Matlab corpul solid, de forma tetraedrului din primul octant,
marginit de planele 1 = + + z y x , 0 = x , 0 = y , 0 = z .
>> x=[1 0 0 0 1 0]; y=[0 0 1 0 0 1]; z=[0 0 0 1 0 0];
>> plot3(x,y,z,1,0,0,'ob',0,1,0,'ob',0,0,1,'ob',0,0,0,'ob')
-0.5 -0.4 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4 0.5
-0.4
-0.3
-0.2
-0.1
0
0.1
0.2
0.3
0.4

10

15) Realizati in Matlab graficul corpului, limitat de suprafetele: x z y 4 2
2 2
= + si 2 = x .
Secventa Matlab urmatoare permite reprezentarea corpului omogen.
>> [y,z]=meshgrid(-3:.03:3,-2.5:.03:2.5);
>> x=y.^2/4+z.^2/2;
>> [m,n]=size(x);
>> x1=2*ones(m,n);
>> plot3(x,y,z,x1,y,z)

0
0.2
0.4
0.6
0.8
1
0
0.2
0.4
0.6
0.8
1
0
0.2
0.4
0.6
0.8
1
x
y
z
A(1,0,0)
O(0,0,0)
C(0,0,1)
B(0,1,0)
0
1
2
3
4
5
6
-5
0
5
-3
-2
-1
0
1
2
3
x
y
z
Laboraratorul 2. Aplicatii ale testelor Chauvenet si Young
Bibliografie:
1. Vduva, I. Modele de simulare, Editura Universitatii din Bucureti, 2004.
2. Trandafir, R. Note de curs, Facultatea de Hidrotehnica, an III, an AIA, 2011-2012.
3. M. Marusteri, Notiuni fundamentale de biostatistic. Note de curs. University Press,
Trgu Mure, 2006, http://www.umftgm.ro/info/Curs_Notiuni_fundamentale.pdf.
4. M. Ghinea, V. Fireeanu, Matlab: Calcul numeric- Grafic-Aplicaii, ed. Teora,
Bucureti, 1998.
5. I. Tutunea, Algoritmi, logica si programare Reprografia Universitatii Craiova, 1993.
6. I. Iatan , ndrumtor de laborator n Matlab 7.0, Ed. Conspress, Bucureti, 2009.
Scopuri:
1) Aplicarea testului Chauvenet privind eliminarea datelor afectate de erori aberante;
2) Aplicarea testului Young pentru identificarea erorilor sistematice.
TESTUL CHAUVENET
Fiind date valorile, ( )
n
x x ,......,
1
rezultate din msurtori, se consider c valoarea
i
x este
afectat de erori aberante dac verific relaia:
o z x x
i
> | | ,
(1)
unde:
- x =
n
x
n
j
j

=1
este media aritmetic a valorilor observate,
- ( ) =
=
n
i
i
x x
n
1
2
1
o semnifica abaterea standard a valorilor observate,
- z se ia din tabele (n functie de numarul n de valori din sir, ce reprezinta
dimensiunea sirului sau volumul esantionului) sau se aproximeaz conform relatiei
urmtoare:
2
213 , 3 604 , 3 1
862 , 0 435 , 0
a a
a
z
+

= , cu
n
n
a
4
1 2
= .
Observatie. Este suficient ca verificarea relatiei (1) sa fie efectuata doar pentru
valorile extreme (minima si maxima) din cadrul esantionului.
Daca, n urma aplicarii testului, rezulta ca una dintre valorile testate este afectata de
erori aberante, valoarea respectiva este eliminata din cadrul esantionului, se recalculeaza
valorile mediei si abaterii standard pentru valorile ramase si se reia verificarea conditiei (1),

2
algoritmul aplicndu-se pna cnd conditia respectiva nu mai este verificata pentru nici una
dintre cele doua valori extreme ale esantionului.
Exemplul 1. n simularea utilizrii unei imprimante conectate la o reea se urmrete
repartiia numrului maxim de fiiere care sunt in lista de ateptare pentru listare pe o
perioada de 30 de zile, nregistrndu-se valorile:
spt L Ma Mi J V spt L Ma Mi J V
I 15 19 13 18 20 IV 19 21 13 23 17
II 12 21 22 19 21 V 18 20 21 13 15
III 13 13 13 14 17 VI 20 19 12 18 12
S se verifice dac acest eantion are valori aberante i dac exist, s se elimine! Scriei un
program Matlab pentru testul Chauvenet. Datele de intrare se iau dintr-un fiier text.
Componentele
esantionului


(ordonate
crescator)
Valori
extreme
| | x x
i

o z
1 15 12 12 5.0333 8.3158
2 19 12 12 5.0333
3 13 12 12 5.0333
4 18 13 23 5.9667
5 20 13
6 12 13
7 21 13
8 22 13
9 19 13
10 21 14
11 13 15
12 13 15
13 13 17
14 14 17
15 17 18
16 19 18
17 21 18
18 13 19
19 23 19
20 17 19
21 18 19
22 20 20
23 21 20
24 13 20
25 15 21
26 20 21

3

3
27 19 21
28 12 21
29 18 22
30 12 23
0333 . 17 = x
,
5183 . 3 = o

In concluzie, nici una dintre valorile extreme nu este afectata de erori aberante.
Exemplul 2. A fost msurat greutatea a 15 indivizi aduli. Rezultatele msurtorilor
sunt cele din tabelul urmtor. S se verifice dac acest eantion are valori aberante i dac
exist, s se elimine! Scriei un program Matlab pentru testul Chauvenet. Datele de intrare se
iau dintr-un fiier text.
Prima aplicare a criteriului Chauvenet
Componentele
esantionului


(ordonate
crescator)
Valori
extreme
| | x x
i

o z
1 58 35 35 38.9333 56.53065
2 60 50 160 86.06667
3 80 55
4 77 58
5 83 60
6 75 65
7 82 70
8 79 75
9 50 77
10 35 79
11 70 80
12 160 80
13 80 82
14 65 83
15 55 160
9333 . 73 = x
,
652 . 26 = o

Dup cum rezult din tabel, valoarea 160 va trebui s fie eliminat din datele supuse
prelucrrii.
A doua aplicare a criteriului Chauvenet
Componentele
esantionului


(ordonate
crescator)
Valori
extreme
| | x x
i

o z
1 35 35 32.7857 29.19275
2 50 83 15.2143
3 55
4 58

4
5 60
6 65
7 70
8 75
9 77
10 79
11 80
12 80
13 82
14 83
7857 . 67 = x
,
93443 . 13 = o

De data aceasta trebuie eliminata din tabel valoarea 35.
A treia aplicare a criteriului Chauvenet
Componentele
esantionului


(ordonate
crescator)
Valori
extreme
| | x x
i

o z
1 50 50 20.30769 22.64275
2 55 83 12.69231
3 58
4 60
5 65
6 70
7 75
8 77
9 79
10 80
11 80
12 82
13 83
30769 . 70 = x
,
95715 . 10 = o
Utilizand Matlab 7.9, vom construi programul corespunzator testului Chauvenet:
Etapa 1. Din fisierul dateb.txt se vor citi datele initiale.

Etapa 2. Se scrie functia sterge.m, ce permite stergerea unei componente a unui vector.
function v=sterge(u,k,n)
for i=1:k-1
v(i)=u(i);
end
if n~=0
for j=k:n-1

5

5
v(j)=u(j+1);
end
end
end
Etapa 3. Se scrie programul propriu- zis.
fid=fopen('dateb.txt','r');
u=fscanf(fid,'%f\t',[1,15]);
fclose(fid);
m=mean(u);
sigma=std(u);
n=length(u);
a=(2*n-1)/(4*n)
z=(0.435-0.862*a)/(1-3.604*a+3.213*a^2);
it=1;
u=sort(u);
mi=min(u);
ma=max(u);
p1=length(find(u==mi));
p2=length(find(u==ma));
for i=1:p1
w(i)=mi;
end
for i=p1+1:p1+p2
w(i)=ma;
end
q=find(abs(w-m)>z*sigma);
while (length(q)~=0)
it=it+1;
for k=1:length(q)
h=find(u==w(q(k)));
for l=1:length(h)
v=sterge(u,h(l),n);
n=n-1;
u=v;
end
end
m=mean(u);
sigma=std(u);
n=length(u);
a=(2*n-1)/(4*n);
z=(0.435-0.862*a)/(1-3.604*a+3.213*a^2);
u=sort(u);
mi=min(u);
ma=max(u);
p1=length(find(u==mi));
p2=length(find(u==ma));
for i=1:p1
w(i)=mi;
end
for i=p1+1:p1+p2
w(i)=ma;
end
q=find(abs(w-m)>z*sigma);
end

6
TESTUL LUI YOUNG
Problema depistarii si eliminarii erorilor sistematice este mai dificila datorita
multitudinii de factori care se interconditioneaza. Vom prezenta testul lui Young, test care nu
ofera posibilitatea eliminarii erorilor sistematice, ci doar pe aceea a aprecierii influentei
cauzelor sistematice asupra datelor de sondaj.
Pasul 1. Intrare: ( )
n
x x ,......,
1
- ir de date experimentale i o probabilitatea de acceptare
(coeficient de ncredere); se calculeaz mrimile:
( )

=
+
.
1
1
2
2
2
1
1
1
2
o
o
o
M
x x
n
n
i
i i

Pasul 2. Se compar M cu valoarea critic (VCI) inferioar i valoarea critic superioar
(VCS), VCI<M<VCS, valori luate din tabele n funcie de n i o sau determinate cu relaiile:
a) Dac 95 , 0 = o atunci

=
+ =

341 , 0
919 , 8
2
057 , 1 317 , 3
003 , 0 081 , 0 491 , 0
n
e VCS
n n VCI

b) Dac 99 , 0 = o atunci

=
+
+
=

388 , 1
574 , 33
33 , 2
33 , 2
882 , 0 484 , 3
427 , 411
269 , 1 883 , 192
n
e VCS
n
n
VCI

Dac inegalitatea este satisfcut, atunci se consider c irul de date experimentale are un
caracter aleator (nu este afectat de erori sistematice) cu probabilitatea o .
Pasul 3. Stop!
Observatie. n tabele se dau valori pentru o corespunztoare diferitelor valori ale lui n
) 25 ( s n
Exemplul 3. Testati daca esantionul de date experimentale, ce consta din valorile
i
x
ale timpului de laten a instalrii efectului hipnotic n cazul amobarbitalului (vezi tabelul
urmator) are sau nu un caracter aleator cu probabilitatea 95 . 0 = o :


7

7
Componentele esantionului

(secunde)
1 16.1
2 15.5
3 13.4
4 22.8
5 12.1
6 11.3
7 11.6
8 6.3
9 8.8
10 7.1
function [VCI, VCS]=valcrit(n,al)
if al==0.95
VCI=0.491+0.081*n-0.003*n^2;
VCS=3.317-1.057*exp(-8.919*n^(-0.341));
elseif al==0.99
VCI=(192.883+1.269*n^2.33)/(411.427+n^2.33);
VCS=3.484-0.882*exp(-33.574*n^(-1.388));
end
end

fid=fopen('data.txt','r');
x=fscanf(fid,'%f\t',[1,10]);
fclose(fid)
n=10;al=0.95
sigma=var(x)
delta=0;
for i=1:n-1
delta=delta+(x(i+1)-x(i))^2;
end
delta=delta/(n-1);
M=delta/sigma
[VCI,VCS]=valcrit(10,al);
if VCI<M<VCS
disp(['esantionul datelor experimentale are un caracter aleator cu
probabilitatea:', num2str(al)]);
else
disp('esantionul datelor experimentale este afectat de erori
sistematice')
end

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