Sunteți pe pagina 1din 15

Partea 1

1. Uniforma in (0,1)
N = 1000; % marimea vectorului de date experimentale
N1 = 1000; % marimea vectorului folosit pentru densitatea de probabilitate
si functia de repartitie teoretice a = 0;
b = 1; % a si b definesc transformarea liniara g(x)=a*x+b pornind de la
legea de baza
C = 20; % numarul de clase ale histogramei

x = rand(1,N); % tipul de lege de probabilitate de studiat x = (b-a)*x + a;


% relatia folosita ca sa obtinem o distributie uniforma in [a,b] pornind de
la o uniform in [0,1] - vezi explicatiile din Bibliografia cursului
(Metropol/Paideia) n = length(x); % va fi egal cu N

%Histograma nenormalizata cu C clase figure subplot(1,2,1), hist(x,C),


title('Histograma nenormalizata'), xlabel('DATE
EXPERIMENTALE'), ylabel('NUMAR APARITII')
[frecv,u] = hist(x,C); % returneaza frecventele nenormate si centrele
claselor histogramei

%Histograma experimentala normalizata cu C clase delta = u(2)-u(1); % gasim


latimea unei clase din histograma x1 = [u-0.5*delta, u(end)+0.5*delta]; %
adaugam artificial un termen suportului histogramei normalizate ca sa
inceapa fix din a si sa se termine in b
frecv1 = [frecv./(n*delta), frecv(end)/(n*delta)]; %vectorul de frecvente
normalizate *py*dy = px*dx subplot(1,2,2), stairs(x1,frecv1), ylim([0
1.3]), xlabel('DATE
EXPERIMENTALE'), ylabel('NUMAR APARITII (NORMATE)') hold
on

%Histograma normalizata teoretica


x2 = linspace(u(1)-0.5*delta,u(end)+0.5*delta,N1);
frecv2 = 1/(b-a)*ones(1,length(x2)); % distributia uniforma in [a,b]
plot(x2,frecv2),title('Histograma normalizata a datelor - densitatea de
probabilitate - experimental') legend('Histograma normalizata a
datelor - experimental','Densitatea de probabilitate -
teoretic','Location','SouthEast'); hold off
Numarul de clase si date este relative mic, deci variatiile ar trebui sa fie mari intre rezultatele experimentale
si cele teoretice.

Am rerulat folosind un numar de date si de clase mai mare, astfel incat sa fie un numar mare de aparitii in
fiecare clasa.

Functia densitate de probabilitate este aproximativ 1 sau 1/(b-a) ce este si valoarea teoretica.

%Functia teoretica de repartitie x4


= x2;
frecv4 = linspace(0,1,length(x4));
figure, plot(x4,frecv4,'+'), xlabel('VALORI EXPERIMENTALE'),
ylabel('F_X(x)'), grid on hold on

%Functia experimentala de repartitie in trepte


stairs([sort(x,'ascend')],[linspace(1/N,1,N)]), %added some additional
padding terms at the ends of F(x)
legend('Functia de repartitie - teoretic','Functia de repartitie -
experimental','Location','SouthEast'); hold off

Marind numarul de date vom avea trepte mai dese, deci vom fi mai aproape de o dreapta ideala

%Media si Varianta teoretice si experimentale


medie_teoretica = (a+b)/2;
medie_experimentala = mean(x); var_teoretica
= (b-a)^2/12; var_experimentala = var(x);
figure
dim1 = [0.2 0.5 0.3 0.4];
annotation('textbox',dim1,'String',['Media teoretica este ',
num2str(medie_teoretica)],'FitBoxToText','on'); dim2 = [0.2
0.5 0.2 0.3];
annotation('textbox',dim2,'String',['Media experimentala este ',
num2str(medie_experimentala)],'FitBoxToText','on'); dim3 = [0.2
0.5 0.1 0.2];
annotation('textbox',dim3,'String',['Varianta teoretica este ',
num2str(var_teoretica)],'FitBoxToText','on'); dim4 = [0.2 0.5
0.0 0.1];
annotation('textbox',dim4,'String',['Varianta experimentala este ',
num2str(var_experimentala)],'FitBoxToText','on');
2. Normala standard (media = 0 si varianta = 1)
N = 10000; % marimea vectorului folosit pentru histograma
N1 = N; % marimea vectorului folosit pentru densitatea de probabilitate si
functia de repartitie teoretice mu = 0;
sigma = 1; % mu si sigma definesc transformarea liniara g(x)=a*x+b pornind
de la legea normala standard
C = 50; % numarul de clase ale histogramei

x = randn(1,N); % tipul de lege de probabilitate de studiat x


= sigma*x + mu;
% x = mu + sigma.*sqrt(-2.*log(rand(1,N))).*cos(2*pi.*rand(1,N)); %
% x = mu + sigma.*sqrt(-2.*log(rand(1,N))).*sin(2*pi.*rand(1,N)); n
= length(x); % va fi egal cu N

%Histograma nenormalizata cu C clase figure subplot(1,2,1), hist(x,C),


title('Histograma nenormalizata'), xlabel('DATE
EXPERIMENTALE'), ylabel('NUMAR APARITII')
[frecv,u] = hist(x,C); % returneaza frecventele nenormate si centrele
claselor histogramei

%Histograma experimentala normalizata cu C clase delta = u(2)-u(1); % gasim


latimea unei clase din histograma x1 = [u-0.5*delta, u(end)+0.5*delta]; %
adaugam artificial un termen suportului histogramei normalizate ca sa
inceapa fix din a si sa se termine in b
frecv1 = [frecv./(n*delta), frecv(end)/(n*delta)]; %vectorul de frecvente
normalizate *py*dy = px*dx subplot(1,2,2), stairs(x1,frecv1), ylim([0
0.4]), xlabel('DATE
EXPERIMENTALE'), ylabel('NUMAR APARITII (NORMATE)') hold
on

%Histograma normalizata teoretica


x2 = linspace(u(1)-0.5*delta,u(end)+0.5*delta,N1); frecv2 =
1/(sigma*sqrt(2*pi)).*exp(-(x2-mu).^2/2/sigma^2); % am putea zice si
normpdf(x2) / distributia normala de medie mu si abatere standard sigma
plot(x2,frecv2),title('Histograma normalizata a datelor - densitatea de
probabilitate - experimental') legend('Histograma normalizata a datelor -
experimental','Densitatea de probabilitate -
teoretic','Location','SouthEast'); hold on
x_arrow = [0.85 0.8]; %Aceste valori depind de distributia/legea folosita
si au rol doar estetic/vizualizarea pe grafic a unor valori; trebuie avut
grija cand modificati legea sa schimbati/adaptati si valorile
y_arrow = [0.9 0.9]; %Aceste valori depind de distributia/legea folosita si
au rol doar estetic/vizualizarea pe grafic a unor valori; trebuie avut
grija cand modificati legea sa schimbati/adaptati si valorile
annotation('textarrow',x_arrow,y_arrow,'String',['Max pdf in mu =
',num2str(1/sigma/sqrt(2*pi))]) %aceasta valoare e valabila pentru
gaussiana standard; pentru alte gaussiene poate fi omisa hold off

Din aceste grafice reiese ca media este 0 iar varianta este 1,deoarece valorile posibile sunt in
intervalul [-3,3].

%Functia teoretica de repartitie x4


= x2;
frecv4 = normcdf(x4,mu,sigma);
figure, plot(x4,frecv4,'+'), xlabel('VALORI EXPERIMENTALE'),
ylabel('F_X(x)'), grid on hold on

%Functia experimentala de repartitie in trepte


stairs([sort(x,'ascend')],[linspace(1/N,1,N)]), %added some additional
padding terms at the ends of F(x)
legend('Functia de repartitie - teoretic','Functia de repartitie -
experimental','Location','SouthEast'); hold off
Functia de repartitie va lua valori in intervalul [0,1].

%Media si Varianta teoretice si experimentale


medie_teoretica = mu; medie_experimentala =
mean(x); var_teoretica = sigma^2;
var_experimentala = var(x); figure
dim1 = [0.2 0.5 0.3 0.4];
annotation('textbox',dim1,'String',['Media teoretica este ',
num2str(medie_teoretica)],'FitBoxToText','on'); dim2 = [0.2
0.5 0.2 0.3];
annotation('textbox',dim2,'String',['Media experimentala este ',
num2str(medie_experimentala)],'FitBoxToText','on'); dim3 = [0.2
0.5 0.1 0.2];
annotation('textbox',dim3,'String',['Varianta teoretica este ',
num2str(var_teoretica)],'FitBoxToText','on'); dim4 = [0.2 0.5
0.0 0.1];
annotation('textbox',dim4,'String',['Varianta experimentala este ',
num2str(var_experimentala)],'FitBoxToText','on');

3. Exponenţială (lambda = 2)
N = 10000; % marimea vectorului de date experimentale
N1 = 10000; % marimea vectorului folosit pentru densitatea de probabilitate
si functia de repartitie teoretice
C = 20; % numarul de clase ale histogramei

x = rand(1,N); % tipul de lege de probabilitate de studiat lambda =


2; x = (-lambda).*log(1-x); % tipul de lege de probabilitate de
studiat
n = length(x); % va fi egal
cu N

%Histograma nenormalizata cu C clase figure subplot(1,2,1), hist(x,C),


title('Histograma nenormalizata'), xlabel('DATE
EXPERIMENTALE'), ylabel('NUMAR APARITII')
[frecv,u] = hist(x,C); % returneaza frecventele nenormate si centrele
claselor histogramei

%Histograma experimentala normalizata cu C clase delta = u(2)-u(1); % gasim


latimea unei clase din histograma x1 = [u-0.5*delta, u(end)+0.5*delta]; %
adaugam artificial un termen suportului histogramei normalizate ca sa
inceapa fix din a si sa se termine in b
%0.5delta = deplasare
frecv1 = [frecv./(n*delta), frecv(end)/(n*delta)]; %vectorul de frecvente
normalizate *py*dy = px*dx subplot(1,2,2), stairs(x1,frecv1), ylim([0
1.3]), xlabel('DATE
EXPERIMENTALE'), ylabel('NUMAR APARITII (NORMATE)') hold
on

%Histograma normalizata teoretica / functie densitate de probabilitate x2


= linspace(u(1)-0.5*delta,u(end)+0.5*delta,N1);
%frecv2 = lambda.*exp(-x2*lambda)*ones(1,length(x2)); % distributia
uniforma in [a,b]
frecv2 = (1/lambda).*exp(-x2/lambda) plot(x2,frecv2),title('Histograma
normalizata a datelor - densitatea de probabilitate - experimental')
legend('Histograma normalizata a datelor - experimental','Densitatea de
probabilitate - teoretic','Location','SouthEast'); hold off
Daca il marim pe C observam cum histograma normalizata aproximeaza mai bine densitatea de
probabilitate. De asemenea si marirea lui N ajuta la obtinerea unor rezultate mai bune.

%Functia teoretica de repartitie x4


= x2;
%frecv4 = linspace(0,1,length(x4)); frecv4 = 1 -
exp(-x4/lambda) figure, plot(x4,frecv4,'+'), xlabel('VALORI
EXPERIMENTALE'), ylabel('F_X(x)'), grid on hold on

%Functia experimentala de repartitie in trepte


stairs([sort(x,'ascend')],[linspace(1/N,1,N)]), %added some additional
padding terms at the ends of F(x)
legend('Functia de repartitie - teoretic','Functia de repartitie -
experimental','Location','SouthEast'); hold off
Functia de repartitie experimentala se apropie de functia de repartitie ideala.

%Media si Varianta teoretice si experimentale


medie_teoretica = lambda;
medie_experimentala = mean(x); var_teoretica
= lambda^2; var_experimentala = var(x);
figure
dim1 = [0.2 0.5 0.3 0.4];
annotation('textbox',dim1,'String',['Media teoretica este ',
num2str(medie_teoretica)],'FitBoxToText','on'); dim2 = [0.2
0.5 0.2 0.3];
annotation('textbox',dim2,'String',['Media experimentala este ',
num2str(medie_experimentala)],'FitBoxToText','on'); dim3 = [0.2
0.5 0.1 0.2];
annotation('textbox',dim3,'String',['Varianta teoretica este ',
num2str(var_teoretica)],'FitBoxToText','on'); dim4 = [0.2 0.5
0.0 0.1];
annotation('textbox',dim4,'String',['Varianta experimentala este ',
num2str(var_experimentala)],'FitBoxToText','on');

Eroarea dintre valorile ideale si cele exprerimentale este mica, daca folosim un numar mare de date
experimentale.
Partea 2

clear all
clc close
all
% Primul caz media este 5 si varianta 1/3
N = 1000; % marimea vectorului de date experimentale
N1 = 1000; % marimea vectorului folosit pentru densitatea de probabilitate
si functia de repartitie teoretice a = 4;
b = 6; % a si b definesc transformarea liniara g(x)=a*x+b pornind de la
legea de baza
C = 20; % numarul de clase ale histogramei

x = rand(1,N); % tipul de lege de probabilitate de studiat x = (b-a)*x + a;


% relatia folosita ca sa obtinem o distributie uniforma in [a,b] pornind de
la o uniform in [0,1] - vezi explicatiile din Bibliografia cursului
(Metropol/Paideia) n = length(x); % va fi egal cu N
%Histograma nenormalizata cu C clase figure subplot(1,2,1), hist(x,C),
title('Histograma nenormalizata'), xlabel('DATE
EXPERIMENTALE'), ylabel('NUMAR APARITII')
[frecv,u] = hist(x,C); % returneaza frecventele nenormate si centrele
claselor histogramei

%Histograma experimentala normalizata cu C clase delta = u(2)-u(1); % gasim


latimea unei clase din histograma x1 = [u-0.5*delta, u(end)+0.5*delta]; %
adaugam artificial un termen suportului histogramei normalizate ca sa
inceapa fix din a si sa se termine in b
frecv1 = [frecv./(n*delta), frecv(end)/(n*delta)]; %vectorul de frecvente
normalizate *py*dy = px*dx subplot(1,2,2), stairs(x1,frecv1), ylim([0
1.3]), xlabel('DATE
EXPERIMENTALE'), ylabel('NUMAR APARITII (NORMATE)') hold
on
%Histograma normalizata teoretica
x2 = linspace(u(1)-0.5*delta,u(end)+0.5*delta,N1);
frecv2 = 1/(b-a)*ones(1,length(x2)); % distributia uniforma in [a,b]
plot(x2,frecv2),title('Histograma normalizata a datelor - densitatea de
probabilitate - experimental') legend('Histograma normalizata a
datelor - experimental','Densitatea de probabilitate -
teoretic','Location','SouthEast'); hold off

Densitatea de probabilitate obtinuta are valori in jurul valorii ideale, ½=0.5.

%Functia teoretica de repartitie x4


= x2;
frecv4 = linspace(0,1,length(x4));
figure, plot(x4,frecv4,'+'), xlabel('VALORI EXPERIMENTALE'),
ylabel('F_X(x)'), grid on hold on

%Functia experimentala de repartitie in trepte


stairs([sort(x,'ascend')],[linspace(1/N,1,N)]), %added some additional
padding terms at the ends of F(x)
legend('Functia de repartitie - teoretic','Functia de repartitie -
experimental','Location','SouthEast'); hold off
%Media si Varianta teoretice si experimentale
medie_teoretica = (a+b)/2;
medie_experimentala = mean(x); var_teoretica
= (b-a)^2/12; var_experimentala = var(x);
figure
dim1 = [0.2 0.5 0.3 0.4];
annotation('textbox',dim1,'String',['Media teoretica este ',
num2str(medie_teoretica)],'FitBoxToText','on'); dim2 = [0.2
0.5 0.2 0.3];
annotation('textbox',dim2,'String',['Media experimentala este ',
num2str(medie_experimentala)],'FitBoxToText','on'); dim3 = [0.2
0.5 0.1 0.2];
annotation('textbox',dim3,'String',['Varianta teoretica este ',
num2str(var_teoretica)],'FitBoxToText','on'); dim4 = [0.2 0.5
0.0 0.1];
annotation('textbox',dim4,'String',['Varianta experimentala este ',
num2str(var_experimentala)],'FitBoxToText','on');

% Al doilea caz media este 2 si varianta 3


N = 1000; % marimea vectorului de date experimentale
N1 = 1000; % marimea vectorului folosit pentru densitatea de probabilitate
si functia de repartitie teoretice a = -1;
b = 5; % a si b definesc transformarea liniara g(x)=a*x+b pornind de la
legea de baza
C = 20; % numarul de clase ale histogramei

x = rand(1,N); % tipul de lege de probabilitate de studiat x = (b-a)*x + a;


% relatia folosita ca sa obtinem o distributie uniforma in [a,b] pornind de
la o uniform in [0,1] - vezi explicatiile din Bibliografia cursului
(Metropol/Paideia) n = length(x); % va fi egal cu N

%Histograma nenormalizata cu C clase figure subplot(1,2,1), hist(x,C),


title('Histograma nenormalizata'), xlabel('DATE
EXPERIMENTALE'), ylabel('NUMAR APARITII')
[frecv,u] = hist(x,C); % returneaza frecventele nenormate si centrele
claselor histogramei

%Histograma experimentala normalizata cu C clase delta = u(2)-u(1); % gasim


latimea unei clase din histograma x1 = [u-0.5*delta, u(end)+0.5*delta]; %
adaugam artificial un termen suportului histogramei normalizate ca sa
inceapa fix din a si sa se termine in b
frecv1 = [frecv./(n*delta), frecv(end)/(n*delta)]; %vectorul de frecvente
normalizate *py*dy = px*dx subplot(1,2,2), stairs(x1,frecv1), ylim([0
1.3]), xlabel('DATE
EXPERIMENTALE'), ylabel('NUMAR APARITII (NORMATE)') hold
on

%Histograma normalizata teoretica


x2 = linspace(u(1)-0.5*delta,u(end)+0.5*delta,N1);
frecv2 = 1/(b-a)*ones(1,length(x2)); % distributia uniforma in [a,b]
plot(x2,frecv2),title('Histograma normalizata a datelor - densitatea de
probabilitate - experimental') legend('Histograma normalizata a
datelor - experimental','Densitatea de probabilitate -
teoretic','Location','SouthEast'); hold off
%Functia teoretica de repartitie x4
= x2;
frecv4 = linspace(0,1,length(x4));
figure, plot(x4,frecv4,'+'), xlabel('VALORI EXPERIMENTALE'),
ylabel('F_X(x)'), grid on hold on

%Functia experimentala de repartitie in trepte


stairs([sort(x,'ascend')],[linspace(1/N,1,N)]), %added some additional
padding terms at the ends of F(x)
legend('Functia de repartitie - teoretic','Functia de repartitie -
experimental','Location','SouthEast'); hold off

%Media si Varianta teoretice si experimentale


medie_teoretica = (a+b)/2;
medie_experimentala = mean(x); var_teoretica
= (b-a)^2/12; var_experimentala = var(x);
figure
dim1 = [0.2 0.5 0.3 0.4];
annotation('textbox',dim1,'String',['Media teoretica este ',
num2str(medie_teoretica)],'FitBoxToText','on'); dim2 = [0.2
0.5 0.2 0.3];
annotation('textbox',dim2,'String',['Media experimentala este ',
num2str(medie_experimentala)],'FitBoxToText','on'); dim3 = [0.2
0.5 0.1 0.2];
annotation('textbox',dim3,'String',['Varianta teoretica este ',
num2str(var_teoretica)],'FitBoxToText','on'); dim4 = [0.2 0.5 0.0
0.1]; annotation('textbox',dim4,'String',['Varianta experimentala
este ', num2str(var_experimentala)],'FitBoxToText','on');

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